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;
}