https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118948
Bug ID: 118948 Summary: ICE: tree check: expected class 'type', have 'exceptional' (error_mark) in tree_single_nonnegative_warnv_p, at fold-const.cc:14878 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: bic60176 at gmail dot com Target Milestone: --- Created attachment 60537 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60537&action=edit testcase Compiler Explorer: https://godbolt.org/z/nEWzxav7W console: <source>:144:3: error: expected identifier or '(' before '}' token 144 | } | ^ <source>: In function 'checkVd': <source>:133:3: error: invalid storage class for function 'checkVf' 133 | checkV##ARRAY(const TYPE *v, const TYPE *e, int n) { \ | ^~~~~~ <source>:147:1: note: in expansion of macro 'CHECK_FP_ARRAY' 147 | CHECK_FP_ARRAY(f, float, ESP_FLOAT, "%f") | ^~~~~~~~~~~~~~ <source>: In function 'checkVf': <source>:174:3: error: invalid storage class for function 'check_fp_union128' 174 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:186:1: note: in expansion of macro 'CHECK_FP_EXP' 186 | CHECK_FP_EXP(union128, float, ESP_FLOAT, "%f") | ^~~~~~~~~~~~ <source>:174:3: error: invalid storage class for function 'check_fp_union128d' 174 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:188:1: note: in expansion of macro 'CHECK_FP_EXP' 188 | CHECK_FP_EXP(union128d, double, ESP_DOUBLE, "%f") | ^~~~~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_b' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:248:1: note: in expansion of macro 'CHECK_EXP' 248 | CHECK_EXP(union256i_b, char, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_w' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:249:1: note: in expansion of macro 'CHECK_EXP' 249 | CHECK_EXP(union256i_w, short, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_d' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:250:1: note: in expansion of macro 'CHECK_EXP' 250 | CHECK_EXP(union256i_d, int, "0x%x") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_q' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:251:1: note: in expansion of macro 'CHECK_EXP' 251 | CHECK_EXP(union256i_q, long long, "0x%llx") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:252:1: note: in expansion of macro 'CHECK_EXP' 252 | CHECK_EXP(union256, float, "%f") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256d' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:253:1: note: in expansion of macro 'CHECK_EXP' 253 | CHECK_EXP(union256d, double, "%f") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_ub' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:254:1: note: in expansion of macro 'CHECK_EXP' 254 | CHECK_EXP(union256i_ub, unsigned char, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_uw' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:255:1: note: in expansion of macro 'CHECK_EXP' 255 | CHECK_EXP(union256i_uw, unsigned short, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_ud' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:256:1: note: in expansion of macro 'CHECK_EXP' 256 | CHECK_EXP(union256i_ud, unsigned int, "0x%x") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union256i_uq' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:257:1: note: in expansion of macro 'CHECK_EXP' 257 | CHECK_EXP(union256i_uq, unsigned long long, "0x%llx") | ^~~~~~~~~ <source>:261:3: error: invalid storage class for function 'check_fp_union256' 261 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:273:1: note: in expansion of macro 'CHECK_FP_EXP' 273 | CHECK_FP_EXP(union256, float, ESP_FLOAT, "%f") | ^~~~~~~~~~~~ <source>:261:3: error: invalid storage class for function 'check_fp_union256d' 261 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:274:1: note: in expansion of macro 'CHECK_FP_EXP' 274 | CHECK_FP_EXP(union256d, double, ESP_DOUBLE, "%f") | ^~~~~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_b' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:341:1: note: in expansion of macro 'CHECK_EXP' 341 | CHECK_EXP(union512i_b, char, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_w' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:342:1: note: in expansion of macro 'CHECK_EXP' 342 | CHECK_EXP(union512i_w, short, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_d' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:343:1: note: in expansion of macro 'CHECK_EXP' 343 | CHECK_EXP(union512i_d, int, "0x%x") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_q' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:344:1: note: in expansion of macro 'CHECK_EXP' 344 | CHECK_EXP(union512i_q, long long, "0x%llx") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:345:1: note: in expansion of macro 'CHECK_EXP' 345 | CHECK_EXP(union512, float, "%f") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512d' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:346:1: note: in expansion of macro 'CHECK_EXP' 346 | CHECK_EXP(union512d, double, "%f") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_ub' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:347:1: note: in expansion of macro 'CHECK_EXP' 347 | CHECK_EXP(union512i_ub, unsigned char, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_uw' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:348:1: note: in expansion of macro 'CHECK_EXP' 348 | CHECK_EXP(union512i_uw, unsigned short, "%d") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_ud' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:349:1: note: in expansion of macro 'CHECK_EXP' 349 | CHECK_EXP(union512i_ud, unsigned int, "0x%x") | ^~~~~~~~~ <source>:76:3: error: invalid storage class for function 'check_union512i_uq' 76 | check_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~ <source>:350:1: note: in expansion of macro 'CHECK_EXP' 350 | CHECK_EXP(union512i_uq, unsigned long long, "0x%llx") | ^~~~~~~~~ <source>:261:3: error: invalid storage class for function 'check_fp_union512' 261 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:352:1: note: in expansion of macro 'CHECK_FP_EXP' 352 | CHECK_FP_EXP(union512, float, ESP_FLOAT, "%f") | ^~~~~~~~~~~~ <source>:261:3: error: invalid storage class for function 'check_fp_union512d' 261 | check_fp_##UNION_TYPE(UNION_TYPE u, const VALUE_TYPE *v) { \ | ^~~~~~~~~ <source>:353:1: note: in expansion of macro 'CHECK_FP_EXP' 353 | CHECK_FP_EXP(union512d, double, ESP_DOUBLE, "%f") | ^~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union512' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:379:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 379 | CHECK_ROUGH_EXP(union512, float, "%f") | ^~~~~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union512d' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:380:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 380 | CHECK_ROUGH_EXP(union512d, double, "%f") | ^~~~~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union256' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:381:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 381 | CHECK_ROUGH_EXP(union256, float, "%f") | ^~~~~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union256d' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:382:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 382 | CHECK_ROUGH_EXP(union256d, double, "%f") | ^~~~~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union128' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:383:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 383 | CHECK_ROUGH_EXP(union128, float, "%f") | ^~~~~~~~~~~~~~~ <source>:356:48: error: invalid storage class for function 'check_rough_union128d' 356 | static int __attribute__((noinline, unused)) check_rough_##UNION_TYPE( \ | ^~~~~~~~~~~~ <source>:384:1: note: in expansion of macro 'CHECK_ROUGH_EXP' 384 | CHECK_ROUGH_EXP(union128d, double, "%f") | ^~~~~~~~~~~~~~~ <source>:415:12: error: invalid storage class for function 'avx512f_os_support' 415 | static int avx512f_os_support(void) { | ^~~~~~~~~~~~~~~~~~ <source>:432:13: error: invalid storage class for function 'test_512' 432 | static void test_512(void); | ^~~~~~~~ <source>:435:39: error: invalid storage class for function 'do_test' 435 | __attribute__((noinline)) static void do_test(void) { | ^~~~~~~ <source>: In function 'do_test': <source>:440:3: error: implicit declaration of function 'test_512' [-Wimplicit-function-declaration] 440 | test_512(); | ^~~~~~~~ <source>: In function 'checkVf': <source>:445:12: error: invalid storage class for function 'check_osxsave' 445 | static int check_osxsave(void) { | ^~~~~~~~~~~~~ <source>:530:6: error: conflicting types for 'i'; have 'V' {aka '__vector(4) __int128'} 530 | V g, i; | ^ <source>:134:9: note: previous declaration of 'i' with type 'int' 134 | int i; \ | ^ <source>:147:1: note: in expansion of macro 'CHECK_FP_ARRAY' 147 | CHECK_FP_ARRAY(f, float, ESP_FLOAT, "%f") | ^~~~~~~~~~~~~~ <source>:532:20: error: invalid storage class for function 'foo' 532 | static inline void foo(unsigned h, V j, U k, V n) { | ^~~ <source>:545:1: error: expected declaration or statement at end of input 545 | } | ^ <source>: In function 'checkVd': <source>:545:1: error: expected declaration or statement at end of input <source>: In function 'checkVf': <source>:545:1: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in tree_single_nonnegative_warnv_p, at fold-const.cc:14878 0x25f3b75 diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag (*) [1], diagnostic_t) ???:0 0x260ab46 internal_error(char const*, ...) ???:0 0x8f3ced tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ???:0 0xd20db8 tree_expr_nonnegative_p(tree_node*) ???:0 0x1a4eb37 generic_simplify_COND_EXPR(unsigned long, tree_code, tree_node*, tree_node*, tree_node*, tree_node*) ???:0 0xd4bdaf fold_ternary_loc(unsigned long, tree_code, tree_node*, tree_node*, tree_node*, tree_node*) ???:0 0xd4e14b fold_build3_loc(unsigned long, tree_code, tree_node*, tree_node*, tree_node*, tree_node*) ???:0 0xb16adc c_genericize_control_stmt(tree_node**, int*, void*, tree_node* (*)(tree_node**, int*, void*), tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0x14d9eac walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0xb17191 c_genericize_control_stmt(tree_node**, int*, void*, tree_node* (*)(tree_node**, int*, void*), tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0x14d9eac walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ???:0 0xb152c2 c_genericize(tree_node*) ???:0 0xb154a8 c_genericize(tree_node*) ???:0 0xa15f60 finish_function(unsigned long) ???:0 0xab138e c_parse_file() ???:0 0xb2fe49 c_common_parse_file() ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Compiler returned: 1