This is the mail archive of the gcc-patches@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]

Re: i386 stack missalignment on main


On Jul 30, 2001, Joern Rennecke <amylaar@redhat.com> wrote:

>> > When you align the frame pointer, you can no longer access the arguments
>> > on the stack via the frame pointer.
>> 
>> Precisely.  That's why I suggest we should no longer eliminate the
>> argument pointer in favor of the frame pointer, and that the frame
>> pointer could no longer be eliminated.

> But on pretty much any modern processor, the argument pointer is
> only a figment of the compilers imagination.  It has to be
> eliminated.

Indeed.  Anyway, we have to get the frame pointer aligned, because
otherwise we won't guarantee the alignment of automatic variables that
require additional alignment.  But getting the frame pointer aligned
means we no longer know the offset between the frame pointer and the
argument pointer (or between the stack pointer and the argument
pointer, for that matter).  Unless we keep the stack pointer
mis-aligned, and only guarantee alignment of the frame pointer.  Then,
we can still eliminate the argument pointer in favor of the stack
pointer.  The alternative is to find out at run-time the stack-pointer
alignment offset, record it in a pseudo and add it to the stack
pointer in any references to the argument pointer, leaving it up to
the register allocator to figure out how to make such accesses
efficient.

-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                  aoliva@{cygnus.com, redhat.com}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist    *Please* write to mailing lists, not to me


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