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.

jeff


Reply via email to