https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112871
--- Comment #1 from Patrick O'Neill <patrick at rivosinc dot com> --- Created attachment 56821 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56821&action=edit testcase-2-freport-bug-output Here's a different testcase that manifests the same error: int a, b, d, e, c; char *f; static int g; void h(long long i) { int *j = &g; ++*j; k: if (c >> d) { e = a % b; (*j = i) && ++*j; *f |= 1; if (i) goto k; } } > /scratch/tc-testing/tc-dec-6-trunk/build-rv64gcv/bin/riscv64-unknown-linux-gnu-gcc > -march=rv32gcv_zicond -mabi=ilp32d -O1 red.c -freport-bug red.c: In function 'h': red.c:15:1: error: unrecognizable insn: 15 | } | ^ (insn 54 53 55 8 (set (reg:SI 192 [ g_lsm.9 ]) (if_then_else:SI (ne:SI (reg:SI 136 [ _9 ]) (const_int 0 [0])) (reg:SI 136 [ _9 ]) (reg:SI 193))) -1 (nil)) during RTL pass: vregs red.c:15:1: internal compiler error: in extract_insn, at recog.cc:2812 0xa2a25d _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) ../../../gcc/gcc/rtl-error.cc:108 0xa2a27f _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) ../../../gcc/gcc/rtl-error.cc:116 0xa28b53 extract_insn(rtx_insn*) ../../../gcc/gcc/recog.cc:2812 0xedeaee instantiate_virtual_regs_in_insn ../../../gcc/gcc/function.cc:1611 0xedeaee instantiate_virtual_regs ../../../gcc/gcc/function.cc:1994 0xedeaee execute ../../../gcc/gcc/function.cc:2041 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/ccFI5hsr.out file, please attach this to your bugreport. This testcase is a bit simpler since all the logic is in one function. It also throws an ice with -O1 instead of -O3 that the previous testcase needed.