diff options
author | Doug Evans <dje@gnu.org> | 1993-09-24 19:53:15 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1993-09-24 19:53:15 +0000 |
commit | b07ff75d63e1bfb4560d2843554629c2eaf6ae19 (patch) | |
tree | fab378085690690c7f0958788888f42480be5c26 /gcc | |
parent | 3ec2ea3e1d3d4a816f5ebcde55519611f87ac91f (diff) | |
download | gcc-b07ff75d63e1bfb4560d2843554629c2eaf6ae19.zip gcc-b07ff75d63e1bfb4560d2843554629c2eaf6ae19.tar.gz gcc-b07ff75d63e1bfb4560d2843554629c2eaf6ae19.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reorg.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index ba3ef38..284c5fc 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 |