https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79571

            Bug ID: 79571
           Summary: [5/6/7 Regression] ICE in Max. number of generated
                    reload insns per insn is achieved (90)
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Keywords: ra
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
  Target Milestone: ---

Starting from 4.8.x we ICE:

$ gcc
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/sh/torture/pr65505.c -O 
-mno-sse
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/sh/torture/pr65505.c: In
function ‘fdget_raw’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/sh/torture/pr65505.c:62:22:
warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
   return (struct fd){(struct file *)(fd & ~3),fd & 3};
                      ^
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/sh/torture/pr65505.c: In
function ‘path_init’:
/home/marxin/Programming/gcc/gcc/testsuite/gcc.target/sh/torture/pr65505.c:121:1:
internal compiler error: Max. number of generated reload insns per insn is
achieved (90)

 }
 ^
0x92fe86 lra_constraints(bool)
        ../../gcc/lra-constraints.c:4656
0x91f1f4 lra(_IO_FILE*)
        ../../gcc/lra.c:2397
0x8ddcdf do_reload
        ../../gcc/ira.c:5400
0x8ddcdf execute
        ../../gcc/ira.c:5584

A reduced test-case:

$ cat ice.c
struct a
{
  int b;
  int *c
} h;
struct d
{
  struct a e
};
struct fd
{
  struct d *d
} i;
g;
j ()
{
  unsigned a = g;
  i = (struct fd){a & 3};
  struct fd f = i;
  h = f.d->e;
}

Reply via email to