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