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:
Mark Shinwell 2006-06-12 12:56:52 +00:00 committed by Mark Shinwell
parent 0901c5a3d9
commit dda69cbfb7
2 changed files with 15 additions and 5 deletions

View File

@ -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

View File

@ -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
{