summaryrefslogtreecommitdiff
path: root/gcc/regrename.c
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-04 14:17:40 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-01-04 14:17:40 +0000
commit940fa57f2acf3513569a75a9bf50e3dd1df3f551 (patch)
tree730a0d4118a0999cf159752ac960ad1c37f3249e /gcc/regrename.c
parent3d7dca394304cc5e71689271b2586b20735dc42f (diff)
downloadgcc-940fa57f2acf3513569a75a9bf50e3dd1df3f551.tar.gz
Some tidyups for ia64 problems
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@38682 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regrename.c')
-rw-r--r--gcc/regrename.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/regrename.c b/gcc/regrename.c
index bb45f3a2953..ae25e2171fb 100644
--- a/gcc/regrename.c
+++ b/gcc/regrename.c
@@ -248,7 +248,13 @@ regrename_optimize ()
}
#endif
- if (fixed_regs[reg] || global_regs[reg])
+ if (fixed_regs[reg] || global_regs[reg]
+#if FRAME_POINTER_REGNUM != HARD_FRAME_POINTER_REGNUM
+ || (frame_pointer_needed && reg == HARD_FRAME_POINTER_REGNUM)
+#else
+ || (frame_pointer_needed && reg == FRAME_POINTER_REGNUM)
+#endif
+ )
continue;
COPY_HARD_REG_SET (this_unavailable, unavailable);
@@ -351,7 +357,8 @@ do_replace (chain, reg)
{
unsigned int regno = ORIGINAL_REGNO (*chain->loc);
*chain->loc = gen_raw_REG (GET_MODE (*chain->loc), reg);
- ORIGINAL_REGNO (*chain->loc) = regno;
+ if (regno >= FIRST_PSEUDO_REGISTER)
+ ORIGINAL_REGNO (*chain->loc) = regno;
chain = chain->next_use;
}
}