aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1998-04-06 19:03:34 -0700
committerRichard Henderson <rth@gcc.gnu.org>1998-04-06 19:03:34 -0700
commitcd36edbdfbddced4fe8d976a9c4fc3fdb744832e (patch)
tree299174571cdfeecc8ecdc36d5b7ea772c4a48178
parente814ca9784d7e53129e3d6e3c2a98c786a8c3196 (diff)
downloadgcc-cd36edbdfbddced4fe8d976a9c4fc3fdb744832e.zip
gcc-cd36edbdfbddced4fe8d976a9c4fc3fdb744832e.tar.gz
gcc-cd36edbdfbddced4fe8d976a9c4fc3fdb744832e.tar.bz2
alpha.c (alpha_expand_block_move): Correctly collect block offsets.
* alpha.c (alpha_expand_block_move): Correctly collect block offsets. (alpha_expand_block_clear): Likewise. From-SVN: r19028
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/alpha/alpha.c26
2 files changed, 18 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4d17ea5..3f87f3f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 62b346e..e66ad09 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -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