This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/65693] ICE in assign_by_spills, at lra-assigns.c:1419
- From: "trippels at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 08 Apr 2015 10:07:54 +0000
- Subject: [Bug rtl-optimization/65693] ICE in assign_by_spills, at lra-assigns.c:1419
- Auto-submitted: auto-generated
- References: <bug-65693-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65693
--- Comment #5 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Well, this testcase only ICEs with gcc-5:
markus@x4 tmp % < foo.ii
int a, b;
unsigned c;
static void
invoke_copy_to_stack (unsigned long *p1, int, int)
{
for (; b;)
if (a)
*p1 = 0;
}
void
VBoxNsxpXPTC_InvokeByIndex ()
{
unsigned long *d = (unsigned long *) __builtin_alloca (c);
invoke_copy_to_stack (d, 0, 0);
register int e asm("rdx")
= ((int (*) (int, int, int, int, int, int)) 0)(0, 0, e, 0, 0, 0);
}
markus@x4 tmp % g++ -O -c foo.ii
foo.ii: In function âvoid VBoxNsxpXPTC_InvokeByIndex()â:
foo.ii:18:1: error: unable to find a register to spill
}
^
foo.ii:18:1: error: this is the insn:
(insn 9 8 10 2 (parallel [
(set (reg:DI 98)
(udiv:DI (reg:DI 96)
(reg:DI 106)))
(set (reg:DI 109 [99])
(umod:DI (reg:DI 96)
(reg:DI 106)))
(clobber (reg:CC 17 flags))
]) foo.ii:14 352 {*udivmoddi4}
(expr_list:REG_UNUSED (reg:DI 109 [99])
(expr_list:REG_DEAD (reg:DI 106)
(expr_list:REG_DEAD (reg:DI 96)
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))))
foo.ii:18: confused by earlier errors, bailing out