http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55093
H.J. Lu <hjl.tools at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #28541|0 |1 is obsolete| | --- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> 2012-10-29 00:10:37 UTC --- Created attachment 28552 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28552 A smaller testcase LRA failed to handle (insn 34 32 35 4 (parallel [ (set (reg:SI 79) (plus:SI (subreg:SI (reg/f:DI 16 argp) 0) (const_int 4 [0x4]))) (clobber (reg:CC 17 flags)) ]) x.ii:63 247 {*addsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_EQUIV (plus:SI (subreg:SI (reg/f:DI 16 argp) 0) (const_int 4 [0x4])) (nil)))) The old reload eliminates argp: (insn 34 49 35 4 (parallel [ (set (reg:SI 4 si [79]) (plus:SI (reg:SI 4 si [79]) (const_int 20 [0x14]))) (clobber (reg:CC 17 flags)) ]) x.ii:63 247 {*addsi_1} (expr_list:REG_EQUIV (plus:SI (subreg:SI (plus:DI (reg/f:DI 7 sp) (const_int 16 [0x10])) 0) (const_int 4 [0x4])) (nil))) while LRA keeps: (insn 34 32 35 4 (parallel [ (set (reg:SI 4 si [79]) (plus:SI (reg:SI 16 argp) (const_int 20 [0x14]))) (clobber (reg:CC 17 flags)) ]) x.ii:63 247 {*addsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_EQUIV (plus:SI (subreg:SI (reg/f:DI 16 argp) 0) (const_int 4 [0x4])) (nil))))