diff options
author | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-04 14:17:40 +0000 |
---|---|---|
committer | bernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-01-04 14:17:40 +0000 |
commit | 940fa57f2acf3513569a75a9bf50e3dd1df3f551 (patch) | |
tree | 730a0d4118a0999cf159752ac960ad1c37f3249e /gcc/regrename.c | |
parent | 3d7dca394304cc5e71689271b2586b20735dc42f (diff) | |
download | gcc-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.c | 11 |
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; } } |