On 10/07/15 13:18, Segher Boessenkool wrote: > 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?) >
No. Currently there's no safe way to guarantee that the stack will be correctly aligned for a call from within an ASM block since the compiler has no way of detecting that this is necessary. > 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 >