diff options
author | Richard Henderson <rth@cygnus.com> | 1998-04-06 19:03:34 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1998-04-06 19:03:34 -0700 |
commit | cd36edbdfbddced4fe8d976a9c4fc3fdb744832e (patch) | |
tree | 299174571cdfeecc8ecdc36d5b7ea772c4a48178 | |
parent | e814ca9784d7e53129e3d6e3c2a98c786a8c3196 (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 26 |
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 |