diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 107ec4b0fbcee275d21fdd847f02c29dec6464af..5f1b84ab1cdfbbcb8c58a31e88e96f97a1f9432e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
 2002-02-05  Richard Henderson  <rth@redhat.com>
 
+	PR fortran/3393
+	* loop.c (loop_iv_add_mult_emit_before): Copy multiplier as well.
+	(loop_iv_add_mult_sink, loop_iv_add_mult_hoist): Likewise.
+
 	PR fortran/3392
 	* config/mips/mips.c (function_arg): Handle TImode.
 	(function_arg_advance): Likewise.
diff --git a/gcc/loop.c b/gcc/loop.c
index a65595f2a447ee30f7453287d1edd9fb32f1d292..0067e7490fd4f7677251123c2600b9907c6daabf 100644
--- a/gcc/loop.c
+++ b/gcc/loop.c
@@ -7654,7 +7654,7 @@ loop_iv_add_mult_emit_before (loop, b, m, a, reg, before_bb, before_insn)
     }
 
   /* Use copy_rtx to prevent unexpected sharing of these rtx.  */
-  seq = gen_add_mult (copy_rtx (b), m, copy_rtx (a), reg);
+  seq = gen_add_mult (copy_rtx (b), copy_rtx (m), copy_rtx (a), reg);
 
   /* Increase the lifetime of any invariants moved further in code.  */
   update_reg_last_use (a, before_insn);
@@ -7682,7 +7682,7 @@ loop_iv_add_mult_sink (loop, b, m, a, reg)
   rtx seq;
 
   /* Use copy_rtx to prevent unexpected sharing of these rtx.  */
-  seq = gen_add_mult (copy_rtx (b), m, copy_rtx (a), reg);
+  seq = gen_add_mult (copy_rtx (b), copy_rtx (m), copy_rtx (a), reg);
 
   /* Increase the lifetime of any invariants moved further in code.
      ???? Is this really necessary?  */
@@ -7711,7 +7711,7 @@ loop_iv_add_mult_hoist (loop, b, m, a, reg)
   rtx seq;
 
   /* Use copy_rtx to prevent unexpected sharing of these rtx.  */
-  seq = gen_add_mult (copy_rtx (b), m, copy_rtx (a), reg);
+  seq = gen_add_mult (copy_rtx (b), copy_rtx (m), copy_rtx (a), reg);
 
   loop_insn_hoist (loop, seq);