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 }