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)); }
Related to PR 22072.
Adding CC.
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 ../../gcc-svn/trunk/gcc/lra-assigns.c:1212 0x7f41a1 lra_assign() ../../gcc-svn/trunk/gcc/lra-assigns.c:1364 0x7f1626 lra(_IO_FILE*) ../../gcc-svn/trunk/gcc/lra.c:2306 0x7b9038 do_reload ../../gcc-svn/trunk/gcc/ira.c:4624 0x7b9038 rest_of_handle_reload ../../gcc-svn/trunk/gcc/ira.c:4737 The failure is similar to PR55277.
Fixed back in GCC 4.8.0 (most likely by the patch which fixed PR 55277).