Bug 32647 - spill failures with hard-register variable
Summary: spill failures with hard-register variable
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.3.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
Keywords: ra
Depends on: 9085 24319 32004
Blocks: 55277
  Show dependency treegraph
Reported: 2007-07-06 12:20 UTC by Paolo Bonzini
Modified: 2012-12-15 07:16 UTC (History)
4 users (show)

See Also:
Target: i686-pc-linux-gnu
Known to work:
Known to fail: 3.3.6, 4.1.2, 4.2.1, 4.3.0
Last reconfirmed: 2008-09-14 04:32:39


Note You need to log in before you can comment on or make changes to this bug.
Description Paolo Bonzini 2007-07-06 12:20:56 UTC
This testcase fails with a spill failure for class AREG:

void f(int a)
  register int reg asm ("eax") = 0;
  a /= 1000;
  asm volatile ("nop" : "+r"(reg), "+r"(a));
Comment 1 Andrew Pinski 2008-09-14 04:34:56 UTC
Related to PR 22072.
Comment 2 Uroš Bizjak 2012-11-19 18:50:46 UTC
Adding CC.
Comment 3 Uroš Bizjak 2012-11-26 19:32:14 UTC
LRA ICEs with following backtrace (-O2) on x86_64:

pr32647.c: In function ‘f’:
pr32647.c:6:1: internal compiler error: in assign_by_spills, at lra-assigns.c:1212
0x7f41a1 assign_by_spills
0x7f41a1 lra_assign()
0x7f1626 lra(_IO_FILE*)
0x7b9038 do_reload
0x7b9038 rest_of_handle_reload

The failure is similar to PR55277.