On 02/05/18 18:28, Jeff Law wrote:
On 03/14/2018 11:40 AM, Sudakshina Das wrote:
Hi
This patch is another partial fix for PR 84521. This is adding a
definition to one of the target hooks used in the SJLJ implemetation so
that AArch64 defines the hard_frame_pointer_rtx as the
TARGET_BUILTIN_SETJMP_FRAME_VALUE. As pointed out by Wilco there is
still a lot more work to be done for these builtins in the future.
Testing: Bootstrapped and regtested on aarch64-none-linux-gnu and added
new test.
Is this ok for trunk?
Sudi
*** gcc/ChangeLog ***
2018-03-14 Sudakshina Das <sudi....@arm.com>
* builtins.c (expand_builtin_setjmp_receiver): Update condition
to restore frame pointer.
* config/aarch64/aarch64.h (DONT_USE_BUILTIN_SETJMP): Update
comment.
* config/aarch64/aarch64.c (aarch64_builtin_setjmp_frame_value):
New.
(TARGET_BUILTIN_SETJMP_FRAME_VALUE): Define.
*** gcc/testsuite/ChangeLog ***
2018-03-14 Sudakshina Das <sudi....@arm.com>
* gcc.c-torture/execute/pr84521.c: New test.
So just to be clear, you do _not_ want the frame pointer restored here?
Right?
aarch64_builtin_setjmp_frame_value always returns hard_frame_pointer_rtx
which will cause the generic code in builtins.c to not restore the frame
pointer.
Have you looked at other targets which define builtin_setjmp_frame_value
to determine if they'll do the right thing. x86 and sparc are the most
important. I see that arc, vax and avr also define that hook, but are
obviously harder to test.
Sorry this fell off my radar. I have reg-tested it on x86 and tried it
on the sparc machine from the gcc farm but I think I couldn't finished
the run and now its showing to he unreachable.
Sudi
jeff