This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Can shrink-wrapping ever move prologue past an ASM statement?


On Fri, Jul 10, 2015 at 10:02:06AM +0100, Richard Earnshaw wrote:
> This isn't going to reliably work for ARM or AArch64.  If the only call
> within a leaf function is via the ASM the compiler doesn't guarantee to
> ensure the stack is aligned to the ABI requirements.

Those archs have a link register, which is clobbered by the call, so
asm doing a call should have the link register in its clobber list,
which is enough to prevent shrink-wrapping the asm.  Does that also
help aligning the stack (as a side effect?)

The problem you mention is not target-specific, and would also happen
without shrink-wrapping.  Maybe forcing a frame pointer (which they
do in the reported case) helps?  But there certainly could exist ABIs
where it does not.  This is arch-dependent code by nature, but still.

Nastiness :-)


Segher


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]