aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>2000-07-06 22:26:17 +0000
committerRichard Kenner <kenner@gcc.gnu.org>2000-07-06 18:26:17 -0400
commitdb30db99382a43a9469489a3b7b46f8d249838ab (patch)
treef1e5613e3291d1d482f85e709e317bd25f949239 /gcc
parent774c79ed27652b3e1006f2e2ceff25b6c9c1a5a7 (diff)
downloadgcc-db30db99382a43a9469489a3b7b46f8d249838ab.zip
gcc-db30db99382a43a9469489a3b7b46f8d249838ab.tar.gz
gcc-db30db99382a43a9469489a3b7b46f8d249838ab.tar.bz2
reload.c (push_reload): When seeing if can reuse a register...
* reload.c (push_reload): When seeing if can reuse a register, check extra registers against widest of INMODE and OUTMODE. From-SVN: r34891
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e19fd04..8c4b344 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/reload.c b/gcc/reload.c
index ce4811a..7f5f355 100644
--- a/gcc/reload.c
+++ b/gcc/reload.c
@@ -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],