Hi all,

This patch wraps aarch64_frame_pointer_required into a 
TARGET_OMIT_LEAF_FRAME_POINTER macro
and initializes aarch64_frame_pointer_required to 2 instead of 1, allowing us 
to detect from
aarch64_frame_pointer_required whether the user explicitly specified 
-momit-leaf-frame-pointer
or -mno-omit-leaf-frame-pointer. No functional changes in this patch.

Bootstrapped and tested as part of series on aarch64.

Ok for trunk?

Thanks,
Kyrill

2015-07-16  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>

    * config/aarch64/aarch64.opt (momit-leaf-frame-pointer): Initialize
    flag_omit_leaf_frame_pointer to 2.
    * config/aarch64/aarch64.h (TARGET_OMIT_LEAF_FRAME_POINTER): New macro.
    * config/aarch64.aarch64.c (aarch64_frame_pointer_required): Use above.
    (aarch64_can_eliminate): Likewise.
commit fa05c48a4ede4f29583b129fa213c42aa2da3a73
Author: Kyrylo Tkachov <kyrylo.tkac...@arm.com>
Date:   Thu May 21 09:57:23 2015 +0100

    [AArch64][5/N] Make flag_omit_leaf_frame_pointer intialize to 2. Define and use TARGET_OMIT_LEAF_FRAME_POINTER

diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index aff23d6..bb404ac 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -2205,7 +2205,7 @@ aarch64_frame_pointer_required (void)
      flag_omit_leaf_frame_pointer turns off the frame pointer by
      default.  Turn it back on now if we've not got a leaf
      function.  */
-  if (flag_omit_leaf_frame_pointer
+  if (TARGET_OMIT_LEAF_FRAME_POINTER
       && (!crtl->is_leaf || df_regs_ever_live_p (LR_REGNUM)))
     return true;
 
@@ -4981,7 +4981,7 @@ aarch64_can_eliminate (const int from, const int to)
 	 LR in the function, then we'll want a frame pointer after all, so
 	 prevent this elimination to ensure a frame pointer is used.  */
       if (to == STACK_POINTER_REGNUM
-	  && flag_omit_leaf_frame_pointer
+	  && TARGET_OMIT_LEAF_FRAME_POINTER
 	  && df_regs_ever_live_p (LR_REGNUM))
 	return false;
     }
diff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h
index d2d1ebf..e91541a 100644
--- a/gcc/config/aarch64/aarch64.h
+++ b/gcc/config/aarch64/aarch64.h
@@ -247,6 +247,9 @@ extern unsigned long aarch64_isa_flags;
   ((aarch64_fix_a53_err835769 == 2)	\
   ? TARGET_FIX_ERR_A53_835769_DEFAULT : aarch64_fix_a53_err835769)
 
+/* Omit frame pointer in leaf functions.  */
+#define TARGET_OMIT_LEAF_FRAME_POINTER (flag_omit_leaf_frame_pointer != 0)
+
 /* Standard register usage.  */
 
 /* 31 64-bit general purpose registers R0-R30:
diff --git a/gcc/config/aarch64/aarch64.opt b/gcc/config/aarch64/aarch64.opt
index c9c0aff..e29d606 100644
--- a/gcc/config/aarch64/aarch64.opt
+++ b/gcc/config/aarch64/aarch64.opt
@@ -77,7 +77,7 @@ Target Report RejectNegative Mask(STRICT_ALIGN)
 Don't assume that unaligned accesses are handled by the system
 
 momit-leaf-frame-pointer
-Target Report Save Var(flag_omit_leaf_frame_pointer) Init(1)
+Target Report Save Var(flag_omit_leaf_frame_pointer) Init(2)
 Omit the frame pointer in leaf functions
 
 mtls-dialect=

Reply via email to