This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: Pad short functions for Atom
On Thu, Sep 16, 2010 at 2:05 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Sep 16, 2010 at 01:55:24PM -0700, H.J. Lu wrote:
>> @@ -8024,6 +8027,11 @@ ix86_code_end (void)
>>
>> ? ? ? ?xops[0] = gen_rtx_REG (Pmode, regno);
>> ? ? ? ?xops[1] = gen_rtx_MEM (Pmode, stack_pointer_rtx);
>> + ? ? ?/* Pad stack IP move with 4 instructions. ?2 NOPs count as 1
>> + ? ? ? ? instruction. ?*/
>> + ? ? ?if (TARGET_PAD_SHORT_FUNCTION)
>> + ? ? output_asm_insn ("nop; nop; nop; nop; nop; nop; nop; nop",
>> + ? ? ? ? ? ? ? ? ? ? ?xops);
>> ? ? ? ?output_asm_insn ("mov%z0\t{%1, %0|%0, %1}", xops);
>> ? ? ? ?output_asm_insn ("ret", xops);
>> ? ? ? ?final_end_function ();
>
> Doesn't the movl %esp, %ebx before ret count as one (or half) insn,
> thus wouldn't it be enough to have just 6 or 7 nops instead of 8?
>
It is
__i686.get_pc_thunk.bx:
movl (%esp), %ebx <<=== Take return address
ret
Return address won't be ready in 4 cycles.
--
H.J.