From: Richard Kenner Date: Thu, 28 Jul 1994 03:33:05 +0000 (-0400) Subject: (expand_mult): Properly set ADD_TARGET for add_variant. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=98310eaac7db6d1f1e07a30f3f9970ec1c6e2305;p=gcc.git (expand_mult): Properly set ADD_TARGET for add_variant. From-SVN: r7802 --- diff --git a/gcc/expmed.c b/gcc/expmed.c index 994451a0e2d..98019eeb2ed 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2093,7 +2093,8 @@ expand_mult (mode, op0, op1, target, unsignedp) alg = alg2, variant = negate_variant; /* This proves very useful for division-by-constant. */ - synth_mult (&alg2, val - 1, (alg.cost < mult_cost ? alg.cost : mult_cost) - add_cost); + synth_mult (&alg2, val - 1, + (alg.cost < mult_cost ? alg.cost : mult_cost) - add_cost); if (alg2.cost + add_cost < alg.cost) alg = alg2, variant = add_variant; @@ -2131,7 +2132,9 @@ expand_mult (mode, op0, op1, target, unsignedp) int log = alg.log[opno]; int preserve = preserve_subexpressions_p (); rtx shift_subtarget = preserve ? 0 : accum; - rtx add_target = opno == alg.ops - 1 && target != 0 ? target : 0; + rtx add_target + = (opno == alg.ops - 1 && target != 0 && variant != add_variant + ? target : 0); rtx accum_target = preserve ? 0 : accum; switch (alg.op[opno])