aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Chamberlain <sac@gnu.org>1993-05-10 15:59:02 +0000
committerSteve Chamberlain <sac@gnu.org>1993-05-10 15:59:02 +0000
commitb2358eb12c5bde86168813302ab889c1d5739817 (patch)
treef37f3733b1905fb66be88893b351121a9a5b19b2
parent32642232ce1b2f9afc23a36b8ed9d2e0b20c1b1d (diff)
downloadgcc-b2358eb12c5bde86168813302ab889c1d5739817.zip
gcc-b2358eb12c5bde86168813302ab889c1d5739817.tar.gz
gcc-b2358eb12c5bde86168813302ab889c1d5739817.tar.bz2
(movstrsi): Take alignment into account.
From-SVN: r4410
-rw-r--r--gcc/config/sh/sh.md9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index e7c52ee..2c8f661 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -1176,11 +1176,12 @@
{
rtx src_ptr = copy_to_mode_reg(Pmode,XEXP(operands[1], 0));
rtx dst_ptr = copy_to_mode_reg(Pmode,XEXP(operands[0], 0));
-
+ int maxsize = GET_CODE (operands[2]) == CONST_INT
+ ? MAX (INTVAL (operands[2]), INTVAL (operands[3])) : 1;
enum machine_mode mode =
- (INTVAL(operands[3]) >=4) ? SImode :
- (INTVAL(operands[3]) >=2) ? HImode :
- QImode;
+ (maxsize >= 4) ? SImode :
+ (maxsize >= 2) ? HImode :
+ QImode;
rtx tmpreg = gen_reg_rtx(mode);
rtx increment = GEN_INT(GET_MODE_SIZE(mode));