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: gs...@t-online.de
  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

Reply via email to