Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug
Bug#: 21080
Product:  
Component:  
Status: NEW
Resolution:
Assigned To: Not yet assigned to anyone <unassigned@gcc.gnu.org>
Host:
Reported against  
Priority:  
Severity:  
Target Milestone:  
 
 
Target:
Reporter: Björn Haase <bjoern.m.haase@web.de>
Add CC:
CC:
Remove selected CCs
Build:
URL:
Summary:
Keywords:
Known to work:
Known to fail:

Attachment Description Type Created Size Actions
returnaddress.patch Patch to correct return_address patch 2008-03-29 12:55 1.35 KB Edit | Diff
Create a New Attachment (proposed patch, testcase, etc.) View All

Bug 21080 depends on: 21078 Show dependency tree
Show dependency graph
Bug 21080 blocks:

Additional Comments:





Mark bug as waiting for feedback
Mark bug as suspended




View Bug Activity   |   Format For Printing   |   Clone This Bug


Description:   Last confirmed: 2008-04-04 21:43 Opened: 2005-04-17 22:43
Excecution of  gcc.c-torture/excecute/pr17377.c fails for optimization level 
-O0 and passes for other optimizer switches: Somewhat suspicious.

------- Comment #1 From Andrew Pinski 2005-04-17 22:47 -------
This looks like the same cause as PR 21078 since both use
__builtin_return_address.

------- Comment #2 From Eric Weddington 2007-07-25 17:57 -------
The AVR test results for a 4.2.1 prerelease still shows failure on -O0 only:
http://gcc.gnu.org/ml/gcc-testresults/2007-07/msg00335.html

However the results for a 4.3 snapshot shows failure on all -O settings:
http://gcc.gnu.org/ml/gcc-testresults/2007-07/msg00603.html

------- Comment #3 From Andy Hutchinson 2008-03-29 12:55 -------
Created an attachment (id=15396) [edit]
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.

------- Comment #4 From Andy Hutchinson 2009-10-31 15:27 -------
*** Bug 21078 has been marked as a duplicate of this bug. ***

------- Comment #5 From Andy Hutchinson 2009-10-31 17:02 -------
Anatoly,

can we implement this patch to correct __builtin_return_address and thus remove
these old bug reports and associated testsuite failures? It also provides a
means to document stack usage which would seem useful.

Bug List: (This bug is not in your last search results)   Show last search results      Search page      Enter new bug