* config/rs6000/rs6000.c (expand_block_move): Use SImode and
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Sep 2004 01:12:30 +0000 (01:12 +0000)
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 3 Sep 2004 01:12:30 +0000 (01:12 +0000)
        HImode with STRICT_ALIGNMENT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87021 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 96eb1b8..ab1327b 100644 (file)
@@ -1,3 +1,8 @@
+2004-09-02  David Edelsohn  <edelsohn@gnu.org>
+
+       * config/rs6000/rs6000.c (expand_block_move): Use SImode and
+       HImode with STRICT_ALIGNMENT.
+
 2004-09-02  Mark Mitchell  <mark@codesourcery.com>
 
        * config/arm/bpabi.h (TARGET_BPABI_CPP_BUILTINS): Define.
index 335dbe3..1881fc1 100644 (file)
@@ -8510,13 +8510,13 @@ expand_block_move (rtx operands[])
          move_bytes = (bytes > 8) ? 8 : bytes;
          gen_func.movmemsi = gen_movmemsi_2reg;
        }
-      else if (bytes >= 4 && !STRICT_ALIGNMENT)
+      else if (bytes >= 4 && (align >= 32 || !STRICT_ALIGNMENT))
        {                       /* move 4 bytes */
          move_bytes = 4;
          mode = SImode;
          gen_func.mov = gen_movsi;
        }
-      else if (bytes == 2 && !STRICT_ALIGNMENT)
+      else if (bytes == 2 && (align >= 16 || !STRICT_ALIGNMENT))
        {                       /* move 2 bytes */
          move_bytes = 2;
          mode = HImode;