https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122825
Bug ID: 122825
Summary: tree check: expected class 'type', have 'exceptional'
(error_mark) in tree_single_nonnegative_warnv_p
Product: gcc
Version: 15.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: 522024330006 at smail dot nju.edu.cn
Target Milestone: ---
It appears to be a recent regression as it doesn't reproduce with 14.3 and
earlier.
Compiler Explorer: https://godbolt.org/z/nqnM3YE9h
The gcc version I used is:
Using built-in specs.
COLLECT_GCC=/workspace/install/gcc/install_15.2.0/bin/gcc
COLLECT_LTO_WRAPPER=/workspace/install/gcc/install_15.2.0/libexec/gcc/x86_64-pc-linux-gnu/15.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /workspace/install/gcc/src/gcc/configure --enable-coverage
--enable-checking --disable-multilib --disable-shared --disable-bootstrap
--enable-languages=c,c++ --prefix=/workspace/install/gcc/install_15.2.0
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version 15.2.0 (GCC)
The full backtrace is:
/bugs/45410.fuzz:15:1: internal compiler error: tree check: expected class
'type', have 'exceptional' (error_mark) in tree_single_nonnegative_warnv_p, at
fold-const.cc:14899
15 | }
| ^
0x569ce3c internal_error(char const*, ...)
/workspace/install/gcc/src/gcc/gcc/diagnostic-global-context.cc:517
0x285661c tree_class_check_failed(tree_node const*, tree_code_class, char
const*, int, char const*)
/workspace/install/gcc/src/gcc/gcc/tree.cc:9164
0xdff9ba tree_class_check(tree_node*, tree_code_class, char const*, int, char
const*)
/workspace/install/gcc/src/gcc/gcc/tree.h:3847
0x1676a42 tree_single_nonnegative_warnv_p(tree_node*, bool*, int)
/workspace/install/gcc/src/gcc/gcc/fold-const.cc:14899
0x167852c tree_expr_nonnegative_warnv_p(tree_node*, bool*, int)
/workspace/install/gcc/src/gcc/gcc/fold-const.cc:15218
0x167882b tree_expr_nonnegative_p(tree_node*)
/workspace/install/gcc/src/gcc/gcc/fold-const.cc:15262
0x3b02aa1 generic_simplify_COND_EXPR(unsigned long, tree_code, tree_node*,
tree_node*, tree_node*, tree_node*)
/workspace/install/gcc/build_15.2.0/gcc/generic-match-8.cc:13727
0x3a31b7e generic_simplify(unsigned long, tree_code, tree_node*, tree_node*,
tree_node*, tree_node*)
/workspace/install/gcc/build_15.2.0/gcc/generic-match-6.cc:11670
0x166a025 fold_ternary_loc(unsigned long, tree_code, tree_node*, tree_node*,
tree_node*, tree_node*)
/workspace/install/gcc/src/gcc/gcc/fold-const.cc:12903
0x167058e fold_build3_loc(unsigned long, tree_code, tree_node*, tree_node*,
tree_node*, tree_node*)
/workspace/install/gcc/src/gcc/gcc/fold-const.cc:13995
0x10c3f98 genericize_c_loop
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:382
0x10c4e9d genericize_while_stmt
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:485
0x10c6682 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*> >*))
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:648
0x10c6e80 c_genericize_control_r
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:742
0x2868474 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*> >*))
/workspace/install/gcc/src/gcc/gcc/tree.cc:11602
0x10c35b7 genericize_c_loop
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:289
0x10c4b29 genericize_for_stmt
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:468
0x10c6639 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*> >*))
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:644
0x10c6e80 c_genericize_control_r
/workspace/install/gcc/src/gcc/gcc/c-family/c-gimplify.cc:742
0x2868474 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*> >*))
/workspace/install/gcc/src/gcc/gcc/tree.cc:11602
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.
Program:
```c
struct test_t;
int main() {
struct test_t *t = new test_t();
for (volatile int i = 0; i < 5; ++i) {
while (!t)
t = new test_t();
}
delete t;
return 0;
}
```