[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