regrename.c (copy_value): Don't replace fixed or global regs with older regs.
authorJakub Jelinek <jakub@redhat.com>
Sun, 26 Jun 2005 05:20:30 +0000 (07:20 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sun, 26 Jun 2005 05:20:30 +0000 (07:20 +0200)
* regrename.c (copy_value): Don't replace fixed or global
regs with older regs.

From-SVN: r101330

gcc/ChangeLog
gcc/regrename.c

index db5ef095b03928ce5412812ece6cc9983a0fc02d..aaccb6efe1ebb166574bf36fc7175baae624fd10 100644 (file)
@@ -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.
index 0cfe552230fb3ce2d8a6e44fc5a7155d3fb5e410..91e9d71a9a1391f8bb8644843d3c7072fecc1bf6 100644 (file)
@@ -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)];