modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/execute/20000914-1.c (about)

     1  extern void *malloc(__SIZE_TYPE__);
     2  
     3  enum tree_code {
     4  ERROR_MARK,
     5  IDENTIFIER_NODE,
     6  OP_IDENTIFIER,
     7  TREE_LIST,
     8  TREE_VEC,
     9  BLOCK,
    10  VOID_TYPE,
    11  INTEGER_TYPE,
    12  REAL_TYPE,
    13  COMPLEX_TYPE,
    14  VECTOR_TYPE,
    15  ENUMERAL_TYPE,
    16  BOOLEAN_TYPE,
    17  CHAR_TYPE,
    18  POINTER_TYPE,
    19  OFFSET_TYPE,
    20  REFERENCE_TYPE,
    21  METHOD_TYPE,
    22  FILE_TYPE,
    23  ARRAY_TYPE,
    24  SET_TYPE,
    25  RECORD_TYPE,
    26  UNION_TYPE,
    27  QUAL_UNION_TYPE,
    28  FUNCTION_TYPE,
    29  LANG_TYPE,
    30  INTEGER_CST,
    31  REAL_CST,
    32  COMPLEX_CST,
    33  STRING_CST,
    34  FUNCTION_DECL,
    35  LABEL_DECL,
    36  CONST_DECL,
    37  TYPE_DECL,
    38  VAR_DECL,
    39  PARM_DECL,
    40  RESULT_DECL,
    41  FIELD_DECL,
    42  NAMESPACE_DECL,
    43  COMPONENT_REF,
    44  BIT_FIELD_REF,
    45  INDIRECT_REF,
    46  BUFFER_REF,
    47  ARRAY_REF,
    48  CONSTRUCTOR,
    49  COMPOUND_EXPR,
    50  MODIFY_EXPR,
    51  INIT_EXPR,
    52  TARGET_EXPR,
    53  COND_EXPR,
    54  BIND_EXPR,
    55  CALL_EXPR,
    56  METHOD_CALL_EXPR,
    57  WITH_CLEANUP_EXPR,
    58  CLEANUP_POINT_EXPR,
    59  PLACEHOLDER_EXPR,
    60  WITH_RECORD_EXPR,
    61  PLUS_EXPR,
    62  MINUS_EXPR,
    63  MULT_EXPR,
    64  TRUNC_DIV_EXPR,
    65  CEIL_DIV_EXPR,
    66  FLOOR_DIV_EXPR,
    67  ROUND_DIV_EXPR,
    68  TRUNC_MOD_EXPR,
    69  CEIL_MOD_EXPR,
    70  FLOOR_MOD_EXPR,
    71  ROUND_MOD_EXPR,
    72  RDIV_EXPR,
    73  EXACT_DIV_EXPR,
    74  FIX_TRUNC_EXPR,
    75  FIX_CEIL_EXPR,
    76  FIX_FLOOR_EXPR,
    77  FIX_ROUND_EXPR,
    78  FLOAT_EXPR,
    79  EXPON_EXPR,
    80  NEGATE_EXPR,
    81  MIN_EXPR,
    82  MAX_EXPR,
    83  ABS_EXPR,
    84  FFS_EXPR,
    85  LSHIFT_EXPR,
    86  RSHIFT_EXPR,
    87  LROTATE_EXPR,
    88  RROTATE_EXPR,
    89  BIT_IOR_EXPR,
    90  BIT_XOR_EXPR,
    91  BIT_AND_EXPR,
    92  BIT_ANDTC_EXPR,
    93  BIT_NOT_EXPR,
    94  TRUTH_ANDIF_EXPR,
    95  TRUTH_ORIF_EXPR,
    96  TRUTH_AND_EXPR,
    97  TRUTH_OR_EXPR,
    98  TRUTH_XOR_EXPR,
    99  TRUTH_NOT_EXPR,
   100  LT_EXPR,
   101  LE_EXPR,
   102  GT_EXPR,
   103  GE_EXPR,
   104  EQ_EXPR,
   105  NE_EXPR,
   106  UNORDERED_EXPR,
   107  ORDERED_EXPR,
   108  UNLT_EXPR,
   109  UNLE_EXPR,
   110  UNGT_EXPR,
   111  UNGE_EXPR,
   112  UNEQ_EXPR,
   113  IN_EXPR,
   114  SET_LE_EXPR,
   115  CARD_EXPR,
   116  RANGE_EXPR,
   117  CONVERT_EXPR,
   118  NOP_EXPR,
   119  NON_LVALUE_EXPR,
   120  SAVE_EXPR,
   121  UNSAVE_EXPR,
   122  RTL_EXPR,
   123  ADDR_EXPR,
   124  REFERENCE_EXPR,
   125  ENTRY_VALUE_EXPR,
   126  COMPLEX_EXPR,
   127  CONJ_EXPR,
   128  REALPART_EXPR,
   129  IMAGPART_EXPR,
   130  PREDECREMENT_EXPR,
   131  PREINCREMENT_EXPR,
   132  POSTDECREMENT_EXPR,
   133  POSTINCREMENT_EXPR,
   134  VA_ARG_EXPR,
   135  TRY_CATCH_EXPR,
   136  TRY_FINALLY_EXPR,
   137  GOTO_SUBROUTINE_EXPR,
   138  POPDHC_EXPR,
   139  POPDCC_EXPR,
   140  LABEL_EXPR,
   141  GOTO_EXPR,
   142  RETURN_EXPR,
   143  EXIT_EXPR,
   144  LOOP_EXPR,
   145  LABELED_BLOCK_EXPR,
   146  EXIT_BLOCK_EXPR,
   147  EXPR_WITH_FILE_LOCATION,
   148  SWITCH_EXPR,
   149    LAST_AND_UNUSED_TREE_CODE
   150  };
   151  typedef union tree_node *tree;
   152  struct tree_common
   153  {
   154    union tree_node *chain;
   155    union tree_node *type;
   156    enum tree_code code : 8;
   157    unsigned side_effects_flag : 1;
   158    unsigned constant_flag : 1;
   159    unsigned permanent_flag : 1;
   160    unsigned addressable_flag : 1;
   161    unsigned volatile_flag : 1;
   162    unsigned readonly_flag : 1;
   163    unsigned unsigned_flag : 1;
   164    unsigned asm_written_flag: 1;
   165    unsigned used_flag : 1;
   166    unsigned nothrow_flag : 1;
   167    unsigned static_flag : 1;
   168    unsigned public_flag : 1;
   169    unsigned private_flag : 1;
   170    unsigned protected_flag : 1;
   171    unsigned bounded_flag : 1;
   172    unsigned lang_flag_0 : 1;
   173    unsigned lang_flag_1 : 1;
   174    unsigned lang_flag_2 : 1;
   175    unsigned lang_flag_3 : 1;
   176    unsigned lang_flag_4 : 1;
   177    unsigned lang_flag_5 : 1;
   178    unsigned lang_flag_6 : 1;
   179  };
   180  union tree_node
   181  {
   182    struct tree_common common;
   183   };
   184  enum c_tree_code {
   185    C_DUMMY_TREE_CODE = LAST_AND_UNUSED_TREE_CODE,
   186  SRCLOC,
   187  SIZEOF_EXPR,
   188  ARROW_EXPR,
   189  ALIGNOF_EXPR,
   190  EXPR_STMT,
   191  COMPOUND_STMT,
   192  DECL_STMT,
   193  IF_STMT,
   194  FOR_STMT,
   195  WHILE_STMT,
   196  DO_STMT,
   197  RETURN_STMT,
   198  BREAK_STMT,
   199  CONTINUE_STMT,
   200  SWITCH_STMT,
   201  GOTO_STMT,
   202  LABEL_STMT,
   203  ASM_STMT,
   204  SCOPE_STMT,
   205  CASE_LABEL,
   206  STMT_EXPR,
   207    LAST_C_TREE_CODE
   208  };
   209  enum cplus_tree_code {
   210    CP_DUMMY_TREE_CODE = LAST_C_TREE_CODE,
   211  OFFSET_REF,
   212  PTRMEM_CST,
   213  NEW_EXPR,
   214  VEC_NEW_EXPR,
   215  DELETE_EXPR,
   216  VEC_DELETE_EXPR,
   217  SCOPE_REF,
   218  MEMBER_REF,
   219  TYPE_EXPR,
   220  AGGR_INIT_EXPR,
   221  THROW_EXPR,
   222  EMPTY_CLASS_EXPR,
   223  TEMPLATE_DECL,
   224  TEMPLATE_PARM_INDEX,
   225  TEMPLATE_TYPE_PARM,
   226  TEMPLATE_TEMPLATE_PARM,
   227  BOUND_TEMPLATE_TEMPLATE_PARM,
   228  TYPENAME_TYPE,
   229  TYPEOF_TYPE,
   230  USING_DECL,
   231  DEFAULT_ARG,
   232  TEMPLATE_ID_EXPR,
   233  CPLUS_BINDING,
   234  OVERLOAD,
   235  WRAPPER,
   236  LOOKUP_EXPR,
   237  FUNCTION_NAME,
   238  MODOP_EXPR,
   239  CAST_EXPR,
   240  REINTERPRET_CAST_EXPR,
   241  CONST_CAST_EXPR,
   242  STATIC_CAST_EXPR,
   243  DYNAMIC_CAST_EXPR,
   244  DOTSTAR_EXPR,
   245  TYPEID_EXPR,
   246  PSEUDO_DTOR_EXPR,
   247  SUBOBJECT,
   248  CTOR_STMT,
   249  CLEANUP_STMT,
   250  START_CATCH_STMT,
   251  CTOR_INITIALIZER,
   252  RETURN_INIT,
   253  TRY_BLOCK,
   254  HANDLER,
   255  TAG_DEFN,
   256  IDENTITY_CONV,
   257  LVALUE_CONV,
   258  QUAL_CONV,
   259  STD_CONV,
   260  PTR_CONV,
   261  PMEM_CONV,
   262  BASE_CONV,
   263  REF_BIND,
   264  USER_CONV,
   265  AMBIG_CONV,
   266  RVALUE_CONV,
   267    LAST_CPLUS_TREE_CODE
   268  };
   269  
   270  blah(){}
   271  
   272  convert_like_real (convs)
   273       tree convs;
   274  {
   275    switch (((enum tree_code) (convs)->common.code))
   276      {
   277      case AMBIG_CONV:
   278        return blah();
   279      default:
   280        break;
   281      };
   282     abort ();
   283  }
   284  
   285  main()
   286  {
   287    tree convs = (void *)malloc (sizeof (struct tree_common));;
   288  
   289    convs->common.code = AMBIG_CONV;
   290    convert_like_real (convs);
   291    exit (0);
   292  }