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
This commit is contained in:
Daniel Jacobowitz 2005-05-11 14:59:09 +00:00 committed by Daniel Jacobowitz
parent 09e7f68631
commit a15900b51c
3 changed files with 17 additions and 1 deletions

View 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> 2005-05-11 Nathan Sidwell <nathan@codesourcery.com>
PR bootstrap/21481 PR bootstrap/21481

View 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. 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 APCS says that the frame pointer does not need to be pushed in leaf
functions, or simple tail call functions. */ functions, or simple tail call functions. */
#ifndef SUBTARGET_FRAME_POINTER_REQUIRED
#define SUBTARGET_FRAME_POINTER_REQUIRED 0
#endif
#define FRAME_POINTER_REQUIRED \ #define FRAME_POINTER_REQUIRED \
(current_function_has_nonlocal_label \ (current_function_has_nonlocal_label \
|| SUBTARGET_FRAME_POINTER_REQUIRED \
|| (TARGET_ARM && TARGET_APCS_FRAME && ! leaf_function_p ())) || (TARGET_ARM && TARGET_APCS_FRAME && ! leaf_function_p ()))
/* Return number of consecutive hard regs needed starting at reg REGNO /* Return number of consecutive hard regs needed starting at reg REGNO

View file

@ -128,11 +128,14 @@
(TARGET_ARM && NEED_PLT_RELOC) ? "(PLT)" : ""); \ (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. */ prologue knows to save it. */
#define PROFILE_HOOK(X) \ #define PROFILE_HOOK(X) \
emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, LR_REGNUM))) 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 #undef CC1_SPEC
#define CC1_SPEC "%{profile:-p}" #define CC1_SPEC "%{profile:-p}"