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;
}
```
  • [Bug middle-end/122825] ... 522024330006 at smail dot nju.edu.cn via Gcc-bugs

Reply via email to