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