mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-16 00:20:53 +08:00
builtins.c (expand_builtin_return_addr): Only use frame_pointer_rtx when count == 0 and we are expanding...
gcc/ * builtins.c (expand_builtin_return_addr): Only use frame_pointer_rtx when count == 0 and we are expanding __builtin_return_address. From-SVN: r114567
This commit is contained in:
parent
0901c5a3d9
commit
dda69cbfb7
@ -1,3 +1,9 @@
|
||||
2006-06-12 Mark Shinwell <shinwell@codesourcery.com>
|
||||
|
||||
* builtins.c (expand_builtin_return_addr): Only use
|
||||
frame_pointer_rtx when count == 0 and we are expanding
|
||||
__builtin_return_address.
|
||||
|
||||
2006-06-12 Fred Fish <fnf@specifix.com>
|
||||
|
||||
* config/mips/mips.c (mips_file_start): Create special section
|
||||
|
@ -509,12 +509,16 @@ expand_builtin_return_addr (enum built_in_function fndecl_code, int count)
|
||||
#else
|
||||
rtx tem;
|
||||
|
||||
/* For a zero count, we don't care what frame address we return, so frame
|
||||
pointer elimination is OK, and using the soft frame pointer is OK.
|
||||
For a nonzero count, we require a stable offset from the current frame
|
||||
pointer to the previous one, so we must use the hard frame pointer, and
|
||||
/* For a zero count with __builtin_return_address, we don't care what
|
||||
frame address we return, because target-specific definitions will
|
||||
override us. Therefore frame pointer elimination is OK, and using
|
||||
the soft frame pointer is OK.
|
||||
|
||||
For a non-zero count, or a zero count with __builtin_frame_address,
|
||||
we require a stable offset from the current frame pointer to the
|
||||
previous one, so we must use the hard frame pointer, and
|
||||
we must disable frame pointer elimination. */
|
||||
if (count == 0)
|
||||
if (count == 0 && fndecl_code == BUILT_IN_RETURN_ADDRESS)
|
||||
tem = frame_pointer_rtx;
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user