http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48678
Summary: [regression] unable to find a register to spill in
class ‘GENERAL_REGS’
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: [email protected]
ReportedBy: [email protected]
Created attachment 24040
--> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24040
testcase
compile the attached testcase with
g++ -msse4 -O1 no_register_error.cpp -c
to get the problem:
no_register_error.cpp: In function ‘int main()’:
no_register_error.cpp:77:1: error: unable to find a register to spill in class
‘GENERAL_REGS’
no_register_error.cpp:77:1: error: this is the insn:
(insn 63 62 64 4 (set (strict_low_part (subreg:HI (reg/v:V2DI 128 [ b ]) 0))
(mem/s/j:HI (plus:DI (plus:DI (mult:DI (reg:DI 38 r9 [orig:159 indexes
] [159])
(const_int 2 [0x2]))
(reg/f:DI 20 frame))
(const_int -64 [0xffffffffffffffc0])) [0 array S2 A16]))
no_register_error.cpp:45 82 {*movstricthi_1}
(expr_list:REG_DEAD (reg:DI 38 r9 [orig:159 indexes ] [159])
(nil)))
no_register_error.cpp:77: confused by earlier errors, bailing out
The same code worked fine with previous version. I also tested the latest GCC
4.6.1 snapshot and the problem remains.