This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: i386 stack missalignment on main
- To: Joern Rennecke <amylaar at redhat dot com>
- Subject: Re: i386 stack missalignment on main
- From: Alexandre Oliva <aoliva at redhat dot com>
- Date: 30 Jul 2001 23:31:10 -0300
- Cc: jh at suse dot cz (Jan Hubicka), rth at redhat dot com (Richard Henderson), gcc at gcc dot gnu dot org, aj at suse dot de, gcc-patches at gcc dot gnu dot org
- Organization: GCC Team, Red Hat
- References: <200107310221.f6V2LsR08857@phal.cambridge.redhat.com>
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