ARM/iwmmxt sibling call fix

Paul Brook paul@codesourcery.com
Thu Apr 22 17:51:00 GMT 2004


On Thursday 22 April 2004 18:42, Daniel Jacobowitz wrote:
> On Thu, Apr 22, 2004 at 06:37:25PM +0100, Paul Brook wrote:
> > > By the way, I believe that most of the TARGET_REALLY_IWMMXT code
> > > related to preserving the stack pointer alignment ought to be
> > > conditionalized on ARM_DOUBLEWORD_ALIGN instead.
> >
> > Yes, but only if we would otherwise have adjusted the stack by exactly 4
> > bytes.
>
> You mean, if the difference between the TARGET_REALLY_IWMMXT case and
> ARM_DOUBLEWORD_ALIGN case would be exactly 4 bytes?  It always is 4 or
> 0; all iWMMXt mandates is doubleword alignment.

No, I mean when frame_size+current_function_outgoing_args == 0. If this is not 
the case we already have sub sp, sp, #<size> so we get the alignment for 
free.

Also, floating point registers may require an odd number of stack words. In 
this case pushing an extra register (giving an odd number of core registers) 
is no longer free, and would be slower than an add.

Paul



More information about the Gcc-patches mailing list