From b07ff75d63e1bfb4560d2843554629c2eaf6ae19 Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 24 Sep 1993 19:53:15 +0000 Subject: [PATCH] reorg.c: (mark_referenced_resource): if frame_pointer_needed... * reorg.c: (mark_referenced_resource): if frame_pointer_needed, HARD_FRAME_POINTER_REGNUM is also a referenced resource. (mark_target_live_regs): value in HARD_FRAME_POINTER_REGNUM is not call-clobbered. (dbr_schedule): HARD_FRAME_POINTER_REGNUM should be valid at the end of a function. From-SVN: r5464 --- gcc/reorg.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/gcc/reorg.c b/gcc/reorg.c index ba3ef381e50..284c5fcd9cb 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -390,7 +390,12 @@ mark_referenced_resources (x, res, include_delayed_effects) res->memory = 1; SET_HARD_REG_BIT (res->regs, STACK_POINTER_REGNUM); if (frame_pointer_needed) - SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM); + { + SET_HARD_REG_BIT (res->regs, FRAME_POINTER_REGNUM); +#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM + SET_HARD_REG_BIT (res->regs, HARD_FRAME_POINTER_REGNUM); +#endif + } for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) if (global_regs[i]) @@ -2445,6 +2450,9 @@ mark_target_live_regs (target, res) if (call_used_regs[i] && i != STACK_POINTER_REGNUM && i != FRAME_POINTER_REGNUM && i != ARG_POINTER_REGNUM +#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM + && i != HARD_FRAME_POINTER_REGNUM +#endif #if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM && ! (i == ARG_POINTER_REGNUM && fixed_regs[i]) #endif @@ -4067,6 +4075,9 @@ dbr_schedule (first, file) if (frame_pointer_needed) { SET_HARD_REG_BIT (end_of_function_needs.regs, FRAME_POINTER_REGNUM); +#if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM + SET_HARD_REG_BIT (end_of_function_needs.regs, HARD_FRAME_POINTER_REGNUM); +#endif #ifdef EXIT_IGNORE_STACK if (! EXIT_IGNORE_STACK) #endif -- 2.30.2