reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0 after reload.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Sat, 12 Dec 1998 23:26:22 +0000 (23:26 +0000)
committerJeff Law <law@gcc.gnu.org>
Sat, 12 Dec 1998 23:26:22 +0000 (16:26 -0700)
        * reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0
        after reload.

From-SVN: r24287

gcc/ChangeLog
gcc/reload1.c

index 230ba3e88545af4fa930782a753e3f059655dbd3..41b4cc9d49028c99655f4f22609c1fb308823d41 100644 (file)
@@ -1,3 +1,8 @@
+Sun Dec 13 00:24:14 1998  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0
+       after reload.
+
 Sat Dec 12 23:39:10 1998  Jeffrey A Law  (law@cygnus.com)
 
        * i386/next.h (ASM_OUTPUT_ALIGN): Use 0x90 for fill character.
index dca868526d7e18f71574e1c52721e45dd967b110..5f1e7b9ba4fd3689f54891533e9562917ad65a1a 100644 (file)
@@ -536,10 +536,20 @@ compute_use_by_pseudos (to, from)
        int r = reg_renumber[regno];
        int nregs;
        if (r < 0)
-        abort ();
-       nregs = HARD_REGNO_NREGS (r, PSEUDO_REGNO_MODE (regno));
-       while (nregs-- > 0)
-        SET_HARD_REG_BIT (*to, r + nregs);
+        {
+          /* reload_combine uses the information from
+             basic_block_live_at_start, which might still contain registers
+             that have not actually been allocated since they have an
+             equivalence.  */
+          if (! reload_completed)
+            abort ();
+        }
+       else
+        {
+          nregs = HARD_REGNO_NREGS (r, PSEUDO_REGNO_MODE (regno));
+          while (nregs-- > 0)
+            SET_HARD_REG_BIT (*to, r + nregs);
+        }
      });
 }
 \f