On Fri, Aug 04, 2017 at 01:26:15PM +0100, Wilco Dijkstra wrote: > 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.
OK. Reviewed by: James Greenhalgh <james.greenha...@arm.com> Thanks, James > > ChangeLog: > 2017-08-03 Wilco Dijkstra <wdijk...@arm.com> > > 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. >