Summary: | Excecution test failure for avr for pr17377 test case. | ||
---|---|---|---|
Product: | gcc | Reporter: | Björn Haase <bjoern.m.haase> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | aesok, eric.weddington, gcc-bugs, hutchinsonandy |
Priority: | P2 | Keywords: | wrong-code |
Version: | 4.1.0 | ||
Target Milestone: | 4.5.0 | ||
Host: | Target: | avr-*-* | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | 2008-04-04 21:43:08 | |
Bug Depends on: | 21078 | ||
Bug Blocks: | |||
Attachments: | Patch to correct return_address |
Description
Björn Haase
2005-04-17 22:43:26 UTC
This looks like the same cause as PR 21078 since both use __builtin_return_address. 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 Created attachment 15396 [details] 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. *** Bug 21078 has been marked as a duplicate of this bug. *** 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. Fixed on 4.5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21078 Setting Target Milestone. |