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