diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-30 18:13:44 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-30 18:13:44 -0500 |
commit | 8ca00751f76d44f01ece03998635d38d6613ed47 (patch) | |
tree | ad0fb6ead21f20e5ce348ce8dfdb56abde3903f5 /gcc | |
parent | 8922eb5b249f40a3f6835570eebba2126aa32aa2 (diff) | |
download | gcc-8ca00751f76d44f01ece03998635d38d6613ed47.zip gcc-8ca00751f76d44f01ece03998635d38d6613ed47.tar.gz gcc-8ca00751f76d44f01ece03998635d38d6613ed47.tar.bz2 |
(emit_block_move): Only use movstr if size is small enough constant or
MODE is at least BITS_PER_WORD.
From-SVN: r8585
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/expr.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1624,7 +1624,10 @@ emit_block_move (x, y, size, align) here because if SIZE is less than the mode mask, as it is returned by the macro, it will definitely be less than the actual mode mask. */ - && (unsigned HOST_WIDE_INT) INTVAL (size) <= GET_MODE_MASK (mode) + && ((GET_CODE (size) == CONST_INT + && ((unsigned HOST_WIDE_INT) INTVAL (size) + <= GET_MODE_MASK (mode))) + || GET_MODE_BITSIZE (mode) >= BITS_PER_WORD) && (insn_operand_predicate[(int) code][0] == 0 || (*insn_operand_predicate[(int) code][0]) (x, BLKmode)) && (insn_operand_predicate[(int) code][1] == 0 |