(expand_builtin, BUILT_IN_FRAME_ADDRESS case): Use new
macros SETUP_FRAME_ADDRESSES and RETURN_ADDR_IN_PREVIOUS_FRAME. From-SVN: r3609
This commit is contained in:
parent
953fe17998
commit
46b68a3769
17
gcc/expr.c
17
gcc/expr.c
@ -6301,6 +6301,23 @@ expand_builtin (exp, target, subtarget, mode, ignore)
|
||||
rtx tem = frame_pointer_rtx;
|
||||
int i;
|
||||
|
||||
/* Some machines need special handling before we can access arbitrary
|
||||
frames. For example, on the sparc, we must first flush all
|
||||
register windows to the stack. */
|
||||
#ifdef SETUP_FRAME_ADDRESSES
|
||||
SETUP_FRAME_ADDRESSES ();
|
||||
#endif
|
||||
|
||||
/* On the sparc, the return address is not in the frame, it is
|
||||
in a register. There is no way to access it off of the current
|
||||
frame pointer, but it can be accessed off the previous frame
|
||||
pointer by reading the value from the register window save
|
||||
area. */
|
||||
#ifdef RETURN_ADDR_IN_PREVIOUS_FRAME
|
||||
if (DECL_FUNCTION_CODE (fndecl) == BUILT_IN_RETURN_ADDRESS)
|
||||
count--;
|
||||
#endif
|
||||
|
||||
/* Scan back COUNT frames to the specified frame. */
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user