https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64342
--- Comment #9 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Dominique d'Humieres from comment #8) > The failures are gone after r220296. However I think the "fix" (skipping the > test on pic targets) does not answer > > > So, it seems the r216154 patch introduces a performance degradation > > for -m32 -fpic for the fuse-caller-save example. > > Any comment before closing the PR as FIXED? The test fails due to different and orthogonal issue: RA chooses %ebx for a temporary when -fpic is used: movl %eax, %ebx call bar addl %ebx, %eax The push and pop insns are from prologue/epilogue since call-saved reg is used (%ebx), not due to save/restore the reg around the call: (note 3 4 19 2 NOTE_INSN_FUNCTION_BEG) (insn/f:TI 19 3 20 2 (set (mem:SI (pre_dec:SI (reg/f:SI 7 sp)) [0 S4 A8]) (reg:SI 3 bx)) fuse-caller-save.c:16 66 {*pushsi2} (expr_list:REG_DEAD (reg:SI 3 bx) (nil))) (note 20 19 2 2 NOTE_INSN_PROLOGUE_END) ... (note 27 15 24 2 NOTE_INSN_EPILOGUE_BEG) (insn/f:TI 24 27 25 2 (set (reg:SI 3 bx) (mem:SI (post_inc:SI (reg/f:SI 7 sp)) [0 S4 A8])) fuse-caller-save.c:18 74 {*popsi1} (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:SI 7 sp) (plus:SI (reg/f:SI 7 sp) (const_int 4 [0x4]))) (expr_list:REG_CFA_RESTORE (reg:SI 3 bx) (nil)))) So, please open a new PR due to RA issue: since %edx was allocated for PIC register (but later removed), another call-used (%ecx) should be used here.