diff options
| -rw-r--r-- | gcc/ChangeLog | 3 | ||||
| -rw-r--r-- | gcc/regrename.c | 4 |
2 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index db5ef09..aaccb6e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2005-06-26 Jakub Jelinek <jakub@redhat.com> + * regrename.c (copy_value): Don't replace fixed or global + regs with older regs. + * defaults.h (FRAME_GROWS_DOWNWARD): Define to 0 if not defined. * function.c (get_func_frame_size): Use if (FRAME_GROWS_DOWNWARD) instead of preprocessor conditionals. diff --git a/gcc/regrename.c b/gcc/regrename.c index 0cfe552..91e9d71 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -1225,6 +1225,10 @@ copy_value (rtx dest, rtx src, struct value_data *vd) if (frame_pointer_needed && dr == HARD_FRAME_POINTER_REGNUM) return; + /* Likewise for fixed or global registers. */ + if (fixed_regs[dr] || global_regs[dr]) + return; + /* If SRC and DEST overlap, don't record anything. */ dn = hard_regno_nregs[dr][GET_MODE (dest)]; sn = hard_regno_nregs[sr][GET_MODE (dest)]; |
