https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87759
Bug ID: 87759 Summary: [8/9 Regression] ICE in lra_assign, at lra-assigns.c:1624, or ICE: Maximum number of LRA assignment passes is achieved (30), or compile-time hog Product: gcc Version: unknown Status: UNCONFIRMED Keywords: compile-time-hog, ice-on-invalid-code, ra Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: x86_64-pc-linux-gnu 1. gcc-9.0.0-alpha20181021 snapshot (r265361) ICEs when compiling the following snippet w/ -O2 (-O3, -Ofast) -fschedule-insns -fselective-scheduling -ftrapv -fno-dce -fno-expensive-optimizations -fno-ipa-ra -fno-tree-dce -fno-tree-ter: int cc; void rc (__int128 *oi) { __int128 qz = (__int128)2 << cc; if (qz != 0) { if (cc != 0) { __int128 zp = 1; for (;;) { unsigned __int128 *ar = &cc; int y5; if (oi != 0) { y3: zp = *oi + *ar; } y5 = (cc + 1) == ((*ar /= *oi) << ((zp >>= 128) / cc)); qz += !!y5 ? 1 : qz == (*ar ^ zp + 1); ++*oi; } } else ++qz; } goto y3; } % x86_64-pc-linux-gnu-gcc-9.0.0-alpha20181021 -O2 -fschedule-insns -fselective-scheduling -ftrapv -fno-dce -fno-expensive-optimizations -fno-ipa-ra -fno-tree-dce -fno-tree-ter -w -c alqzfpag.c during RTL pass: reload alqzfpag.c: In function 'rc': alqzfpag.c:35:1: internal compiler error: in lra_assign, at lra-assigns.c:1624 35 | } | ^ 0xb582d9 lra_assign(bool&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/lra-assigns.c:1624 0xb5319d lra(_IO_FILE*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/lra.c:2508 0xb0b131 do_reload /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/ira.c:5469 0xb0b131 execute /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/ira.c:5653 2. Removing -fno-ipa-ra from the command line above yields the following: % x86_64-pc-linux-gnu-gcc-9.0.0-alpha20181021 -O2 -fschedule-insns -fselective-scheduling -ftrapv -fno-dce -fno-expensive-optimizations -fno-tree-dce -fno-tree-ter -w -c alqzfpag.c during RTL pass: reload alqzfpag.c: In function 'rc': alqzfpag.c:35:1: internal compiler error: Maximum number of LRA assignment passes is achieved (30) 35 | } | ^ 0xb582c0 lra_assign(bool&) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/lra-assigns.c:1669 0xb5319d lra(_IO_FILE*) /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/lra.c:2508 0xb0b131 do_reload /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/ira.c:5469 0xb0b131 execute /var/tmp/portage/sys-devel/gcc-9.0.0_alpha20181021/work/gcc-9-20181021/gcc/ira.c:5653 3. gcc 8.2 takes indefinite time to compile the testcase w/ either set of command line options.