https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121695
Bug ID: 121695 Summary: [16 Regression] RISC-V: ICE in ifcvt tree check: expected class 'type', have 'exceptional' Product: gcc Version: 16.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: ewlu at rivosinc dot com Target Milestone: --- Created attachment 62218 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=62218&action=edit freport-bug output Testcase: int ac; char p; int *r; static unsigned t = 7; int q() { int v; af: { int ag[3]; int *ah = &ag[1]; for (; ac;) { int ai = 3971866093; if (0 >= *ah && (*r = 1)) *ah &= ai; else { if (p) goto af; *ah &= t; } } } return v; } Commands/backtrace: /scratch/ewlu/daily-upstream-build/build-gcv/bin/riscv64-unknown-linux-gnu-gcc -I/scratch/ewlu/ci/compiler-fuzz-ci/csmith-build/include -fsigned-char -fno-strict-aliasing -fwrapv -march=rv64gcv -O3 red.c -o rv64gcv.out -w -freport-bug during GIMPLE pass: ifcvt red.c: In function 'q': red.c:5:5: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in tree_single_nonnegative_warnv_p, at fold-const.cc:14925 5 | int q() { | ^ 0x2f02896 internal_error(char const*, ...) ../../../gcc/gcc/diagnostic-global-context.cc:534 0xc529f0 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../../gcc/gcc/tree.cc:9234 0xb59ff4 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../../gcc/gcc/tree.h:3888 0xb59ff4 tree_single_nonnegative_warnv_p(tree_node*, bool*, int) ../../../gcc/gcc/fold-const.cc:14925 0x1138609 gimple_phi_nonnegative_warnv_p ../../../gcc/gcc/gimple-fold.cc:11207 0x1138609 gimple_stmt_nonnegative_warnv_p(gimple*, bool*, int) ../../../gcc/gcc/gimple-fold.cc:11240 0x1138609 gimple_phi_nonnegative_warnv_p ../../../gcc/gcc/gimple-fold.cc:11207 0x1138609 gimple_stmt_nonnegative_warnv_p(gimple*, bool*, int) ../../../gcc/gcc/gimple-fold.cc:11240 0x10a20e6 tree_expr_nonnegative_warnv_p(tree_node*, bool*, int) ../../../gcc/gcc/tree.h:4758 0x10a20e6 tree_expr_nonnegative_p(tree_node*) ../../../gcc/gcc/fold-const.cc:15294 0x1d74f61 gimple_simplify_COND_EXPR(gimple_match_op*, gimple**, tree_node* (*)(tree_node*), code_helper, tree_node*, tree_node*, tree_node*, tree_node*) /scratch/ewlu/daily-upstream-build/build-gcv/build-gcc-linux-stage2/gcc/gimple-match-10.cc:53174 0x1e0c3fd gimple_resimplify3 ../../../gcc/gcc/gimple-match-exports.cc:1096 0x15893e6 fold_build_cond_expr ../../../gcc/gcc/tree-if-conv.cc:515 0x15904c9 fold_build_cond_expr ../../../gcc/gcc/tree-if-conv.cc:498 0x15904c9 predicate_scalar_phi ../../../gcc/gcc/tree-if-conv.cc:2502 0x1590b69 predicate_all_scalar_phis ../../../gcc/gcc/tree-if-conv.cc:2652 0x1590b69 combine_blocks ../../../gcc/gcc/tree-if-conv.cc:3225 0x1594e21 tree_if_conversion(loop*, vec<gimple*, va_heap, vl_ptr>*) ../../../gcc/gcc/tree-if-conv.cc:4198 0x1595634 execute ../../../gcc/gcc/tree-if-conv.cc:4307 0x1595634 execute ../../../gcc/gcc/tree-if-conv.cc:4295 Please submit a full bug report, with preprocessed source. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Preprocessed source stored into /tmp/cczT0tvl.out file, please attach this to your bugreport. godbolt: https://godbolt.org/z/c4W4oc3Go Bug doesn't appear with -O2 as seen in the godbolt. Removing static from `static unsigned t = 7;` also causes bug to not trigger. Changing `int ai = 3971866093;` to the int value (323101203) also causes the bug to not trigger. Found via fuzzer