reload.c (push_reload): When seeing if can reuse a register...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Thu, 6 Jul 2000 22:26:17 +0000 (22:26 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Thu, 6 Jul 2000 22:26:17 +0000 (18:26 -0400)
* reload.c (push_reload): When seeing if can reuse a register,
check extra registers against widest of INMODE and OUTMODE.

From-SVN: r34891

gcc/ChangeLog
gcc/reload.c

index e19fd04fcf42de3ea6445d4ba7f746d165375796..8c4b344fdc444eeda9190a94c05e698dd93ab888 100644 (file)
@@ -1,3 +1,8 @@
+Thu Jul  6 18:30:36 2000  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * reload.c (push_reload): When seeing if can reuse a register,
+       check extra registers against widest of INMODE and OUTMODE.
+
 2000-07-06  Neil Booth  <NeilB@earthling.net>
 
        * cpplib.c: (_cpp_parse_assertion):  Perform hash lookups
index ce4811a7b40b9ac51eded7e9d35c24dbb50fd864..7f5f35577a7800c3f9c044b22cd6d5cc71e57a81 100644 (file)
@@ -1470,8 +1470,10 @@ push_reload (in, out, inloc, outloc, class,
            && GET_MODE_SIZE (outmode) <= GET_MODE_SIZE (GET_MODE (XEXP (note, 0)))
            && HARD_REGNO_MODE_OK (regno, outmode))
          {
-           int offs;
-           int nregs = HARD_REGNO_NREGS (regno, inmode);
+           unsigned int offs;
+           unsigned int nregs = MAX (HARD_REGNO_NREGS (regno, inmode),
+                                     HARD_REGNO_NREGS (regno, outmode));
+
            for (offs = 0; offs < nregs; offs++)
              if (fixed_regs[regno + offs]
                  || ! TEST_HARD_REG_BIT (reg_class_contents[(int) class],