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

Reply via email to