diff options
author | Wilco Dijkstra <wdijkstr@arm.com> | 2017-10-26 16:51:37 +0000 |
---|---|---|
committer | Wilco Dijkstra <wilco@gcc.gnu.org> | 2017-10-26 16:51:37 +0000 |
commit | 204d2c03acff4bf3b73cb5d2c9578b50c2aac703 (patch) | |
tree | 1d3459af6eb9916a16799faec9f19d759da71e41 /gcc/rtl.h | |
parent | 957f5feacf2f4c7916e0137ad95d2d9559e06fa4 (diff) | |
download | gcc-204d2c03acff4bf3b73cb5d2c9578b50c2aac703.zip gcc-204d2c03acff4bf3b73cb5d2c9578b50c2aac703.tar.gz gcc-204d2c03acff4bf3b73cb5d2c9578b50c2aac703.tar.bz2 |
Introduce emit_frame_chain
The current frame code combines the separate concepts of a frame chain
(saving old FP,LR in a record and pointing new FP to it) and a frame
pointer used to access locals. Add emit_frame_chain to the aarch64_frame
descriptor and use it in the prolog and epilog code. For now just
initialize it as before, so generated code is identical.
Also correctly set EXIT_IGNORE_STACK. The current AArch64 epilog code
restores SP from FP if alloca is used. If a frame pointer is used but
there is no alloca, SP must remain valid for the epilog to work correctly.
gcc/
* config/aarch64/aarch64.h (EXIT_IGNORE_STACK): Set if alloca is used.
(aarch64_frame): Add emit_frame_chain boolean.
* config/aarch64/aarch64.c (aarch64_frame_pointer_required)
Move eh_return case to aarch64_layout_frame.
(aarch64_layout_frame): Initialize emit_frame_chain.
(aarch64_expand_prologue): Use emit_frame_chain.
From-SVN: r254114
Diffstat (limited to 'gcc/rtl.h')
0 files changed, 0 insertions, 0 deletions