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]
Other format: [Raw text]

Re: [PATCH] __builtin_frame_address(0) doesn't work without the frame pointer


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?


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