reload1.c (reload_reg_free_for_value_p): Don't use a register that is in reload_reg_used.
authorAndrew Haley <aph@cygnus.com>
Tue, 9 Nov 1999 16:52:19 +0000 (16:52 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Tue, 9 Nov 1999 16:52:19 +0000 (16:52 +0000)
Thu Nov  4 15:52:35 1999  Andrew Haley  <aph@cygnus.com>

* reload1.c (reload_reg_free_for_value_p): Don't use a register
that is in reload_reg_used.

From-SVN: r30461

gcc/ChangeLog
gcc/reload1.c

index 5870287d399f8a0177036cd69876bbaae37603f5..9bd5f08a21be9f7e6076f18a99eef58902c11100 100644 (file)
@@ -1,3 +1,8 @@
+Thu Nov  4 15:52:35 1999  Andrew Haley  <aph@cygnus.com>
+
+       * reload1.c (reload_reg_free_for_value_p): Don't use a register
+       that is in reload_reg_used.
+
 Tue Nov  9 16:43:00 1999  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/arm-protos.h: New file: Prototypes for functions
index 3526ae9f134a4a6e0b915311e42364bbecff033b..09044c9c55ae1d53acbd40724078e8d8ca4f11b9 100644 (file)
@@ -5307,6 +5307,13 @@ reload_reg_free_for_value_p (regno, opnum, type, value, out, reloadnum,
   int i;
   int copy = 0;
 
+  /* ??? reload_reg_used is abused to hold the registers that are not
+     available as spill registers, including hard registers that are
+     earlyclobbered in asms.  As a temporary measure, reject anything
+     in reload_reg_used.  */
+  if (TEST_HARD_REG_BIT (reload_reg_used, regno))
+    return 0;
+
   if (out == const0_rtx)
     {
       copy = 1;