[PATCH] Fix __builtin_frame_address on SPARC 64-bit
Eric Botcazou
ebotcazou@libertysurf.fr
Sun Oct 1 07:00:00 GMT 2006
As demonstrated by the failures
FAIL: gcc.c-torture/execute/frame-address.c execution, -O0
FAIL: gcc.c-torture/execute/frame-address.c execution, -O1
FAIL: gcc.c-torture/execute/frame-address.c execution, -O2
FAIL: gcc.c-torture/execute/frame-address.c execution, -O3
-fomit-frame-pointer
FAIL: gcc.c-torture/execute/frame-address.c execution, -O3 -g
FAIL: gcc.c-torture/execute/frame-address.c execution, -Os
__builtin_frame_address is not functional on SPARC 64-bit because it overlooks
the famous stack bias (so the returned address is not even aligned). Although
expand_builtin_return_addr already uses 4 macros, this is not fixable using
only this set unless DYNAMIC_CHAIN_ADDRESS is changed.
Hence the need for a 5th macro, namely FRAME_ADDR_RTX. Tested on SPARC 32-bit
and 64-bit. OK for mainline?
2006-10-01 Eric Botcazou <ebotcazou@libertysurf.fr>
* builtins.c (expand_builtin_return_addr): Deal with FRAME_ADDR_RTX.
* config/sparc/sparc.h (FRAME_ADDR_RTX): Define.
* doc/tm.texi (Basic Stack Layout): Document FRAME_ADDR_RTX.
--
Eric Botcazou
-------------- next part --------------
A non-text attachment was scrubbed...
Name: builtin_fa.diff
Type: text/x-diff
Size: 3024 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20061001/3c4d039a/attachment.bin>
More information about the Gcc-patches
mailing list