https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108148
Bug ID: 108148 Summary: ICE on valid code with "-O3 -fno-inline-functions-called-once -fno-inline-small-functions -fno-tree-ccp -fno-tree-dce -fno-tree-vrp" on x86_64-linux-gnu: maximum number of generated reload insns per insn achieved (90) Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: zhendong.su at inf dot ethz.ch Target Milestone: --- It appears to be a recent regression. Compiler Explorer: https://godbolt.org/z/MdYbTr93j [592] % gcctk -v Using built-in specs. COLLECT_GCC=gcctk COLLECT_LTO_WRAPPER=/local/suz-local/software/local/gcc-trunk/libexec/gcc/x86_64-pc-linux-gnu/13.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc-trunk/configure --disable-bootstrap --enable-checking=yes --prefix=/local/suz-local/software/local/gcc-trunk --enable-sanitizers --enable-languages=c,c++ --disable-werror --enable-multilib --with-system-zlib Thread model: posix Supported LTO compression algorithms: zlib gcc version 13.0.0 20221216 (experimental) [master r13-4745-g92eb0adc14a] (GCC) [593] % [593] % gcctk -O3 -fno-inline-functions-called-once -fno-inline-small-functions -fno-tree-ccp -fno-tree-dce -fno-tree-vrp small.c during RTL pass: reload small.c: In function ‘p.constprop’: small.c:31:1: internal compiler error: maximum number of generated reload insns per insn achieved (90) 31 | } | ^ 0xd1bf66 lra_constraints(bool) ../../gcc-trunk/gcc/lra-constraints.cc:5137 0xd0794a lra(_IO_FILE*) ../../gcc-trunk/gcc/lra.cc:2375 0xcbfa99 do_reload ../../gcc-trunk/gcc/ira.cc:5949 0xcbfa99 execute ../../gcc-trunk/gcc/ira.cc:6135 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. [594] % [594] % cat small.c struct a { unsigned b; int c; int d; unsigned : 5; } l, n; struct e { unsigned b; int f; int a; } j; int g, i, k, m; unsigned h; const struct a o; static struct a p(const struct a q) { if (m) { goto L; L: for (; g; g++) { struct e a[8] = {j}; for (; h < 2; h++) l = q; if (i) { k = 0; for (; k < 2; k++) ; } } } return q; } int main() { n = p(o); return 0; }