Matthew Dillon wrote:
> 
> :> > Anyhow, I'll repeat it here - stack alignment does *not* break
> :> > link-compatibility.  It does not change calling conventions, it just
> :> > adds padding after the args to ensure that local variables can be
> :> > predictably aligned.
> :
> :> So, how does aligning stackframes affect the inherently static property
> :> of code size then?
> :
> :Instructions are inserted to perform that alignment (add padding).
> :When the alignment is 2 (i.e. on 4-byte boundaries), no padding is
> :required in typical cases.
> 
>     I can't think of a single case where the stack isn't inherently
>     4-byte aligned already, whether you use the option or not.

It's more a case of overriding the new behaviour of gcc to align the
stack on 16-byte boundaries by default (for performance reasons for the
PIII SIMD instructions, IIRC)

>     To whomever added the option:  Did you actually test to see that
>     this option resulted in an improvement?  If not, I recommend removing
>     it.  It sounds like unnecessary extra junk to me.

For the bootcode the option is necessary. It does remove a lot of "subl
$..,%esp" instructions that bloated the code, which in turn prevented
boot2 to build. It's not necessary for kernel/module builds. But the
option does prevent a lot of unnecessary alignment instructions in the
code...

Maybe -mpreferred-stack-boundary=2 should be the default so that we
don't need the option in the general case. Overriding this in certain
cases, can be considered an optimisation...

-- 
Marcel Moolenaar                        mailto:[EMAIL PROTECTED]
SCC Internetworking & Databases           http://www.scc.nl/
The FreeBSD project                mailto:[EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to