emit-rtl.c (adjust_address, [...]): Change criteria for whether can put offset inside...
authorRichard Kenner <kenner@vlsi1.ultra.nyu.edu>
Tue, 10 Jul 2001 11:25:32 +0000 (11:25 +0000)
committerRichard Kenner <kenner@gcc.gnu.org>
Tue, 10 Jul 2001 11:25:32 +0000 (07:25 -0400)
* emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for
whether can put offset inside LO_SUM to check mode alignment, not size.

From-SVN: r43896

gcc/ChangeLog
gcc/emit-rtl.c

index 101fbcf681779b3313eb0e7d792b8b64a83a9986..840fd8306ccc7e445d68fa8d5a8f91ea97098e0f 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jul 10 07:27:53 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
+
+       * emit-rtl.c (adjust_address, adjust_address_nv): Change criteria for
+       whether can put offset inside LO_SUM to check mode alignment, not size.
+
 2001-07-10  Gabriel Dos Reis  <gdr@merlin.codesourcery.com>
 
        * doc/tm.texi (Misc): Fix thinko.
index 42137bf776dae653052eb1daef76d592c6e6b90d..eae04b6cff70d9ec7a23b283603814624891f3c3 100644 (file)
@@ -1631,10 +1631,11 @@ adjust_address (memref, mode, offset)
      will do memref tracking.  */
   rtx addr = XEXP (memref, 0);
 
-  /* If MEMREF is a LO_SUM and the offset is within the size of the
+  /* If MEMREF is a LO_SUM and the offset is within the alignment of the
      object, we can merge it into the LO_SUM.  */
   if (GET_MODE (memref) != BLKmode && GET_CODE (addr) == LO_SUM
-      && offset >= 0 && offset < GET_MODE_SIZE (GET_MODE (memref)))
+      && offset >= 0
+      && offset < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT)
     addr = gen_rtx_LO_SUM (mode, XEXP (addr, 0),
                           plus_constant (XEXP (addr, 1), offset));
   else
@@ -1658,7 +1659,8 @@ adjust_address_nv (memref, mode, offset)
   /* If MEMREF is a LO_SUM and the offset is within the size of the
      object, we can merge it into the LO_SUM.  */
   if (GET_MODE (memref) != BLKmode && GET_CODE (addr) == LO_SUM
-      && offset >= 0 && offset < GET_MODE_SIZE (GET_MODE (memref)))
+      && offset >= 0
+      && offset < GET_MODE_ALIGNMENT (GET_MODE (memref)) / BITS_PER_UNIT)
     addr = gen_rtx_LO_SUM (mode, XEXP (addr, 0),
                           plus_constant (XEXP (addr, 1), offset));
   else