[Bug target/64342] [5 Regression] Tests failing when compiled with '-m32 -fpic' after r216154.
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Jan 31 14:01:00 GMT 2015
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.
More information about the Gcc-bugs
mailing list