]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ssa.c (rename_insn_1): Rename uses of undefined registers to prevent confusion if...
authorChris Lattner <sabre@nondot.org>
Wed, 29 May 2002 16:23:28 +0000 (16:23 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 29 May 2002 16:23:28 +0000 (10:23 -0600)
        * ssa.c (rename_insn_1): Rename uses of undefined registers to
        prevent confusion if/when the register is defined.

From-SVN: r54002

gcc/ChangeLog
gcc/ssa.c

index 5c6455038e7187d442160032770e301ff14f320b..9ff0f270de46d5c6810f410ef1f51b53e2e5d9a7 100644 (file)
@@ -1,3 +1,8 @@
+2002-05-29  Chris Lattner  <sabre@nondot.org>
+
+        * ssa.c (rename_insn_1): Rename uses of undefined registers to
+        prevent confusion if/when the register is defined.
+
 2002-05-29  Hans-Peter Nilsson  <hp@axis.com>
 
        PR target/6838
index 835bf55ce0c132a0588979895dd315130e385eb2..b81a8ac78312200051f177d4dac0ec3baabc40f9 100644 (file)
--- a/gcc/ssa.c
+++ b/gcc/ssa.c
@@ -916,18 +916,26 @@ rename_insn_1 (ptr, data)
       }
 
     case REG:
-      if (CONVERT_REGISTER_TO_SSA_P (REGNO (x)) &&
-         REGNO (x) < ssa_max_reg_num)
+      if (CONVERT_REGISTER_TO_SSA_P (REGNO (x))
+         && REGNO (x) < ssa_max_reg_num)
        {
          rtx new_reg = ssa_rename_to_lookup (x);
 
-         if (new_reg != NULL_RTX && new_reg != RENAME_NO_RTX)
+         if (new_reg != RENAME_NO_RTX)
            {
-             if (GET_MODE (x) != GET_MODE (new_reg))
-               abort ();
-             *ptr = new_reg;
+             if (new_reg != NULL_RTX)
+               {
+                 if (GET_MODE (x) != GET_MODE (new_reg))
+                   abort ();
+                 *ptr = new_reg;
+               }
+             else
+               {
+                 /* Undefined value used, rename it to a new pseudo register so
+                    that it cannot conflict with an existing register */
+                 *ptr = gen_reg_rtx (GET_MODE(x));
+               }
            }
-         /* Else this is a use before a set.  Warn?  */
        }
       return -1;