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: unassig...@gcc.gnu.org ReportedBy: kr...@kde.org 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.