aboutsummaryrefslogtreecommitdiff
path: root/compile
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2017-10-26 16:51:37 +0000
committerWilco Dijkstra <wilco@gcc.gnu.org>2017-10-26 16:51:37 +0000
commit204d2c03acff4bf3b73cb5d2c9578b50c2aac703 (patch)
tree1d3459af6eb9916a16799faec9f19d759da71e41 /compile
parent957f5feacf2f4c7916e0137ad95d2d9559e06fa4 (diff)
downloadgcc-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 'compile')
0 files changed, 0 insertions, 0 deletions