* (lwa_operand): Address must be word aligned.
authorDavid Edelsohn <edelsohn@gnu.org>
Tue, 25 Sep 2001 00:28:28 +0000 (00:28 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Tue, 25 Sep 2001 00:28:28 +0000 (20:28 -0400)
From-SVN: r45795

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 419ec4b9a02b56f32cc50b7dd8bf4484c397d812..c37c714891efc1e9139eee4594f427a62f6540b8 100644 (file)
@@ -1,3 +1,7 @@
+2001-09-24  David Edelsohn  <edelsohn@gnu.org>
+
+       * rs6000.c (lwa_operand): Address must be word aligned.
+
 Mon Sep 24 18:57:59 2001  Richard Kenner  <kenner@vlsi1.ultra.nyu.edu>
 
        * tree.c (type_hash_marked_p): Consider as marked if debug symbol
index 738c8a5bed85484c8ea0f1b15110ea1d97df88f4..cf47f98fff18e6a9aec5b1ec75bd4e74777559df 100644 (file)
@@ -1308,7 +1308,10 @@ lwa_operand (op, mode)
   return gpc_reg_operand (inner, mode)
     || (memory_operand (inner, mode)
        && GET_CODE (XEXP (inner, 0)) != PRE_INC
-       && GET_CODE (XEXP (inner, 0)) != PRE_DEC);
+       && GET_CODE (XEXP (inner, 0)) != PRE_DEC
+       && (GET_CODE (XEXP (inner, 0)) != PLUS
+           || (GET_CODE (XEXP (XEXP (inner, 0), 1)) == CONST_INT
+               && INTVAL (XEXP (XEXP (inner, 0), 1)) % 4 == 0)));
 }
 
 /* Return 1 if the operand, used inside a MEM, is a valid first argument