From a15900b51c9fe3a9727a8e3575cfad0fe39c303f Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Wed, 11 May 2005 14:59:09 +0000 Subject: [PATCH] linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Define. * 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. From-SVN: r99581 --- gcc/ChangeLog | 7 +++++++ gcc/config/arm/arm.h | 6 ++++++ gcc/config/arm/linux-elf.h | 5 ++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 46ac68c7929..c026bf36ce7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-05-11 Daniel Jacobowitz + + * 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 PR bootstrap/21481 diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 1e5a972b40f..b75d89a64fe 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -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 diff --git a/gcc/config/arm/linux-elf.h b/gcc/config/arm/linux-elf.h index 48b0f016401..b609a813a7c 100644 --- a/gcc/config/arm/linux-elf.h +++ b/gcc/config/arm/linux-elf.h @@ -128,11 +128,14 @@ (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}"