This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] __builtin_frame_address(0) doesn't work without the frame pointer
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Denis Zaitsev <zzz at cd-club dot ru>
- Cc: gcc at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, Richard Earnshaw <rearnsha at arm dot com>, Richard Henderson <rth at redhat dot com>, David Edelsohn <dje at watson dot ibm dot com>
- Date: Wed, 17 Jul 2002 09:41:58 +0100
- Subject: Re: [PATCH] __builtin_frame_address(0) doesn't work without the frame pointer
- Organization: ARM Ltd.
- Reply-to: Richard dot Earnshaw at arm dot com
> On Mon, Jul 15, 2002 at 10:11:06AM +0100, Richard Earnshaw wrote:
> > > On Wed, Jul 10, 2002 at 03:56:21PM +0100, Richard Earnshaw wrote:
> > > > > On Tue, Jul 09, 2002 at 06:11:17PM +0100, Richard Earnshaw wrote:
> > > > > > ARM certainly does. But that has special code to copy the return address
> > > > > > for frame 0 into a pseudo if the return address is needed.
> > > > >
> > > > > We're talking about __builtin_frame_address, not
> > > > > __builtin_return_address.
> > > > >
> > > >
> > > > Ooops. Then the ARM is definitely a candidate, since it has a variable
> > > > offset between frame_pointer_rtx and hard_frame_pointer_rtx which depends
> > > > on the number of registers that require saving.
> > > >
> > >
> > > Yes, ARM seems to be a subject... BTW, why it was choosed for ARM
> > > such a stack layout, that the soft frame pointer points into the
> > > middle of what usually the stack frame is?
> >
> > GCC's model of the frame pointer points to the bottom of the stack after
> > the registers have been pushed, but before the stack is adjusted for local
> > variables. The ARM APCS model of the frame pointer points to the top of
> > the saved register area (this is normally four less than the stack-pointer
> > address at the point when control reaches the called function).
>
> The comment at the line 7957 of 3.1/gcc/config/arm.c shows something
> not exactly that... Why?
Because that's a more accurate description. The normal case, which I
described, is what that collapses to when there are no variadic arguments.
R.