https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112871
Bug ID: 112871 Summary: [14 Regression] RISCV ICE: in extract_insn, at recog.cc:2804 (unrecognizable insn) with -03 rv32gc_zicond Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: patrick at rivosinc dot com Target Milestone: --- Created attachment 56808 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56808&action=edit -freport-bug output Output: > /scratch/tc-testing/tc-dec-4-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > -mabi=ilp32d -march=rv32gc_zicond -O3 red.c -freport-bug red.c: In function 'k': red.c:17:1: error: unrecognizable insn: 17 | } | ^ (insn 104 103 105 14 (set (reg:SI 214) (if_then_else:SI (ne:SI (reg:SI 134 [ i.5_1 ]) (const_int 0 [0])) (reg:SI 134 [ i.5_1 ]) (reg:SI 215))) "red.c":13:7 discrim 6 -1 (nil)) during RTL pass: vregs red.c:17:1: internal compiler error: in extract_insn, at recog.cc:2804 0xa27c0b _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) ../../../gcc/gcc/rtl-error.cc:108 0xa27c2d _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) ../../../gcc/gcc/rtl-error.cc:116 0xa26501 extract_insn(rtx_insn*) ../../../gcc/gcc/recog.cc:2804 0xedc05e instantiate_virtual_regs_in_insn ../../../gcc/gcc/function.cc:1610 0xedc05e instantiate_virtual_regs ../../../gcc/gcc/function.cc:1993 0xedc05e execute ../../../gcc/gcc/function.cc:2040 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 /scratch/tmp/ccEMDYFG.out file, please attach this to your bugreport. Testcase: short a, c; int b, d, i; volatile char e; static int f[] = {1, 1}; long g; int volatile h; short(j)() { return b ? a : 0; } void k() { l: h; g = 0; for (; g <= 2; g++) { d | ((i || j() & (0 == f[g])) ^ i) && e; if (c) goto l; } } Godbolt: https://godbolt.org/z/31TYfjevE