https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128139
Bug ID: 128139
Summary: [17 Regression] RISC-V: ICE in gen_reg_rtx with
__builtin_eh_return and a frame larger than 4 KiB
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: yuki.tanaka at defaultcase dot de
Target Milestone: ---
void b(char *);
void a(long off, void *h)
{
char buf[8192];
b(buf);
__builtin_eh_return (off, h);
}
-O2 -march=rv64gc -mabi=lp64d
Compiler Explorer (GCC 16.1 vs. 17):
https://godbolt.org/z/hb8c46MG4
GCC 17:
during RTL pass: split2
<source>: In function 'a':
<source>:9:1: internal compiler error: in gen_reg_rtx, at emit-rtl.cc:1207
9 | }
| ^
0x7c81efa2a28a __libc_start_main
???:0
/cefs/e7/e701d48600bfec2a60f6a8ab_riscv64_gcc-trunk-20261024/riscv64-unknown-linux-gnu/bin/../libexec/gcc/riscv64-unknown-linux-gnu/17.0.0/cc1
-quiet -imultilib . -iprefix
/cefs/e7/e701d48600bfec2a60f6a8ab_riscv64_gcc-trunk-20261024/riscv64-unknown-linux-gnu/bin/../lib/gcc/riscv64-unknown-linux-gnu/17.0.0/
-isysroot
/cefs/e7/e701d48600bfec2a60f6a8ab_riscv64_gcc-trunk-20261024/riscv64-unknown-linux-gnu/bin/../riscv64-unknown-linux-gnu/sysroot
<source> -quiet -dumpdir /app/output.s- -dumpbase example.c -dumpbase-ext .c
-march=rv64gc -mabi=lp64d -misa-spec=20191213 -mtls-dialect=trad
-march=rv64imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd -g -O2
-fdiagnostics-color=always -fno-verbose-asm -o /tmp/ccrnQBKr.s
With a 4000 byte buffer there is no ICE.