* config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2005 14:59:09 +0000 (14:59 +0000)
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 May 2005 14:59:09 +0000 (14:59 +0000)
* config/arm/arm.h (SUBTARGET_FRAME_POINTER_REQUIRED): Provide
default definition.
(FRAME_POINTER_REQUIRED): Use SUBTARGET_FRAME_POINTER_REQUIRED.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99581 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/arm.h
gcc/config/arm/linux-elf.h

index 46ac68c..c026bf3 100644 (file)
@@ -1,3 +1,10 @@
+2005-05-11  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Define.
+       * config/arm/arm.h (SUBTARGET_FRAME_POINTER_REQUIRED): Provide
+       default definition.
+       (FRAME_POINTER_REQUIRED): Use SUBTARGET_FRAME_POINTER_REQUIRED.
+
 2005-05-11  Nathan Sidwell  <nathan@codesourcery.com>
 
        PR bootstrap/21481
index 1e5a972..b75d89a 100644 (file)
@@ -861,8 +861,14 @@ extern int arm_structure_size_boundary;
    If we have to have a frame pointer we might as well make use of it.
    APCS says that the frame pointer does not need to be pushed in leaf
    functions, or simple tail call functions.  */
+
+#ifndef SUBTARGET_FRAME_POINTER_REQUIRED
+#define SUBTARGET_FRAME_POINTER_REQUIRED 0
+#endif
+
 #define FRAME_POINTER_REQUIRED                                 \
   (current_function_has_nonlocal_label                         \
+   || SUBTARGET_FRAME_POINTER_REQUIRED                         \
    || (TARGET_ARM && TARGET_APCS_FRAME && ! leaf_function_p ()))
 
 /* Return number of consecutive hard regs needed starting at reg REGNO
index 48b0f01..b609a81 100644 (file)
           (TARGET_ARM && NEED_PLT_RELOC) ? "(PLT)" : "");              \
 }
 
-/* The linux profiler clobbers the link register.  Make sure the
+/* The GNU/Linux profiler clobbers the link register.  Make sure the
    prologue knows to save it.  */
 #define PROFILE_HOOK(X)                                                \
   emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, LR_REGNUM)))
 
+/* The GNU/Linux profiler needs a frame pointer.  */
+#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
+
 #undef  CC1_SPEC
 #define CC1_SPEC "%{profile:-p}"