aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-01-23 17:16:23 -0800
committerRichard Henderson <rth@gcc.gnu.org>2002-01-23 17:16:23 -0800
commit3d709fd3c5a45585b6dc138e625fcaeac576df8b (patch)
treeecbc8081d9def84ff9bc42f32a46dcad4d5b82d6 /gcc/expr.c
parent152d4916efac917dd1fc64cc4950e299b54476f0 (diff)
downloadgcc-3d709fd3c5a45585b6dc138e625fcaeac576df8b.zip
gcc-3d709fd3c5a45585b6dc138e625fcaeac576df8b.tar.gz
gcc-3d709fd3c5a45585b6dc138e625fcaeac576df8b.tar.bz2
* expr.c (move_by_pieces_1): Extend size before negation.
From-SVN: r49158
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index bad461e..0691420 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1575,9 +1575,11 @@ move_by_pieces_1 (genfun, mode, data)
from1 = adjust_address (data->from, mode, data->offset);
if (HAVE_PRE_DECREMENT && data->explicit_inc_to < 0)
- emit_insn (gen_add2_insn (data->to_addr, GEN_INT (-size)));
+ emit_insn (gen_add2_insn (data->to_addr,
+ GEN_INT (-(HOST_WIDE_INT)size)));
if (HAVE_PRE_DECREMENT && data->explicit_inc_from < 0)
- emit_insn (gen_add2_insn (data->from_addr, GEN_INT (-size)));
+ emit_insn (gen_add2_insn (data->from_addr,
+ GEN_INT (-(HOST_WIDE_INT)size)));
if (data->to)
emit_insn ((*genfun) (to1, from1));