https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89945
Bug ID: 89945
Summary: [7/8/9 Regression] ICE in gen_lowpart_general, at
rtlhooks.c:63
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: [email protected]
Target Milestone: ---
Affects gcc-7 upwards at -O[s123], gcc-6 compiles it :
$ cat z1.c
void foo ()
{
void *g[] = {&&a, &&b};
for (unsigned c = 0x1F;; c >>= 1)
{
unsigned d = (long)"a";
long e = 8;
while (e)
{
a: goto *g[c&d];
b: e--;
}
}
}
$ gcc-6 -c z1.c -O2
$ gcc-9-20190331 -c z1.c -O0
$
$ gcc-9-20190331 -c z1.c -O2
during RTL pass: split1
z1.c: In function 'foo':
z1.c:14:1: internal compiler error: in gen_lowpart_general, at rtlhooks.c:63
14 | }
| ^
0xa280f8 gen_lowpart_general(machine_mode, rtx_def*)
../../gcc/rtlhooks.c:63
0xf81f7e gen_split_144(rtx_insn*, rtx_def**)
../../gcc/config/i386/i386.md:8612
0x111247f split_17
../../gcc/config/i386/i386.md:1047
0x1117d94 split_insns(rtx_def*, rtx_insn*)
../../gcc/config/i386/i386.md:13199
0x796b11 try_split(rtx_def*, rtx_insn*, int)
../../gcc/emit-rtl.c:3851
0x9ea901 split_insn
../../gcc/recog.c:2901
0x9eea22 split_all_insns()
../../gcc/recog.c:3005
0x9eeb28 execute
../../gcc/recog.c:3905