summaryrefslogtreecommitdiff
path: root/gcc/regrename.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-26 05:20:30 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-06-26 05:20:30 +0000
commitb94771d1c06454f439ee624f808225b4217cab00 (patch)
treed6a8888b030865f9765f3c891a74c2ae292e474b /gcc/regrename.c
parentd28d5017cf901bd905aad92d8bff736bbce969f9 (diff)
downloadgcc-b94771d1c06454f439ee624f808225b4217cab00.tar.gz
* regrename.c (copy_value): Don't replace fixed or global
regs with older regs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101330 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/regrename.c')
-rw-r--r--gcc/regrename.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/regrename.c b/gcc/regrename.c
index 0cfe552230f..91e9d71a9a1 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)];