------- Comment #3 from hutchinsonandy at aim dot com  2008-03-29 12:55 -------
Created an attachment (id=15396)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15396&action=view)
Patch to correct return_address

The attached patch fixes this problem and PR21078
The AVR target support for builtin_return_address only returned value of
frame_pointer+1 - so it would only be correct if stack and frame were empty.

The attached patch calculates the stack usage in the function prolog. This is
placed in symbol stack_usage using UNSPEC instruction pattern. Builtin Return
address uses RETURN_ADDR_RTX(count, tem) to add this to frame pointer to get to
correct address. This only supports level 0 (same function). Other levels (ie
upper functions) return 0  - which is correct response if not supported.
The address is that read from the stack - ie word address.

Testsuite torture/execute/20010122-1.c and PR17377.c both pass with this patch
applied.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21080

Reply via email to