]> gcc.gnu.org Git - gcc.git/commitdiff
alpha.c (alpha_expand_block_move): Correctly collect block offsets.
authorRichard Henderson <rth@cygnus.com>
Tue, 7 Apr 1998 02:03:34 +0000 (19:03 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 7 Apr 1998 02:03:34 +0000 (19:03 -0700)
* alpha.c (alpha_expand_block_move): Correctly collect block offsets.
(alpha_expand_block_clear): Likewise.

From-SVN: r19028

gcc/ChangeLog
gcc/config/alpha/alpha.c

index 4d17ea51723fc811c247cb9911c5eef50de08ea7..3f87f3f66a1a1539c9d92fe4b2fc912ba3c05434 100644 (file)
@@ -1,3 +1,8 @@
+Tue Apr  7 02:01:47 1998  Richard Henderson  <rth@cygnus.com>
+
+       * alpha.c (alpha_expand_block_move): Correctly collect block offsets.
+       (alpha_expand_block_clear): Likewise.
+
 Mon Apr  6 23:36:01 1998  Richard Henderson  <rth@cygnus.com>
 
        * tree.h (sizetype_tab): Fix previous change for K&R.
index 62b346e067f8174ee0b84299b1696454bd063551..e66ad09d0466d638968d5c83b1de9d8ad79209d0 100644 (file)
@@ -1751,12 +1751,12 @@ alpha_expand_block_move (operands)
          emit_move_insn (data_regs[nregs+i],
                          change_address(orig_src, DImode,
                                         plus_constant (XEXP (orig_src, 0),
-                                                       i*8)));
+                                                       ofs + i*8)));
        }
 
       nregs += words;
       bytes -= words * 8;
-      ofs = words * 8;
+      ofs += words * 8;
     }
   if (src_align >= 4 && bytes >= 4)
     {
@@ -1770,12 +1770,12 @@ alpha_expand_block_move (operands)
          emit_move_insn (data_regs[nregs+i],
                          change_address(orig_src, SImode,
                                         plus_constant (XEXP (orig_src, 0),
-                                                       i*4)));
+                                                       ofs + i*4)));
        }
 
       nregs += words;
       bytes -= words * 4;
-      ofs = words * 4;
+      ofs += words * 4;
     }
   if (bytes >= 16)
     {
@@ -1788,7 +1788,7 @@ alpha_expand_block_move (operands)
 
       nregs += words;
       bytes -= words * 8;
-      ofs = words * 8;
+      ofs += words * 8;
     }
   if (!TARGET_BWX && bytes >= 8)
     {
@@ -2025,14 +2025,14 @@ alpha_expand_block_clear (operands)
        {
          emit_move_insn (change_address(orig_dst, DImode,
                                         plus_constant (XEXP (orig_dst, 0),
-                                                       i*8)),
+                                                       ofs + i*8)),
                          const0_rtx);
        }
 
       bytes -= words * 8;
-      ofs = words * 8;
+      ofs += words * 8;
     }
-  else if (align >= 4 && bytes >= 4)
+  if (align >= 4 && bytes >= 4)
     {
       words = bytes / 4;
 
@@ -2040,21 +2040,21 @@ alpha_expand_block_clear (operands)
        {
          emit_move_insn (change_address(orig_dst, SImode,
                                         plus_constant (XEXP (orig_dst, 0),
-                                                       i*4)),
+                                                       ofs + i*4)),
                          const0_rtx);
        }
 
       bytes -= words * 4;
-      ofs = words * 4;
+      ofs += words * 4;
     }
-  else if (bytes >= 16)
+  if (bytes >= 16)
     {
       words = bytes / 8;
 
-      alpha_expand_unaligned_store_words (NULL, orig_dst, words, 0);
+      alpha_expand_unaligned_store_words (NULL, orig_dst, words, ofs);
 
       bytes -= words * 8;
-      ofs = words * 8;
+      ofs += words * 8;
     }
 
   /* Next clean up any trailing pieces.  We know from the contiguous
This page took 0.140677 seconds and 5 git commands to generate.