https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60580

--- Comment #10 from Wilco <wilco at gcc dot gnu.org> ---
Author: wilco
Date: Fri Nov  3 15:01:10 2017
New Revision: 254377

URL: https://gcc.gnu.org/viewcvs?rev=254377&root=gcc&view=rev
Log:
PR60580: Fix frame pointer option magic

To fix PR60580 simplify the logic in aarch64_override_options_after_change_1
(). 
If the frame pointer is enabled, set it to a special value that behaves similar
to frame pointer omission.  If we don't do this all leaf functions will get a
frame pointer even if flag_omit_leaf_frame_pointer is set.

If flag_omit_frame_pointer has this special value, we must force the frame
pointer if not in a leaf function.  We also need to force it in a leaf function
if flag_omit_frame_pointer is not set or if LR is used.

Doing this allows both -fomit-frame-pointer and -fomit-leaf-frame-pointer to be
independently set and changed in each function with the expected behaviour.

    gcc/
        PR middle-end/60580
        * config/aarch64/aarch64.c (aarch64_frame_pointer_required)
        Check special value of flag_omit_frame_pointer.
        (aarch64_can_eliminate): Likewise.
        (aarch64_override_options_after_change_1): Simplify handling of
        -fomit-frame-pointer and -fomit-leaf-frame-pointer.

Modified:
    branches/gcc-7-branch/gcc/ChangeLog
    branches/gcc-7-branch/gcc/config/aarch64/aarch64.c

Reply via email to