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.

Reply via email to