(expand_mult): Properly set ADD_TARGET for add_variant.

From-SVN: r7802
This commit is contained in:
Richard Kenner 1994-07-27 23:33:05 -04:00
parent d772039ba7
commit 98310eaac7

View File

@ -2093,7 +2093,8 @@ expand_mult (mode, op0, op1, target, unsignedp)
alg = alg2, variant = negate_variant; alg = alg2, variant = negate_variant;
/* This proves very useful for division-by-constant. */ /* 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) if (alg2.cost + add_cost < alg.cost)
alg = alg2, variant = add_variant; alg = alg2, variant = add_variant;
@ -2131,7 +2132,9 @@ expand_mult (mode, op0, op1, target, unsignedp)
int log = alg.log[opno]; int log = alg.log[opno];
int preserve = preserve_subexpressions_p (); int preserve = preserve_subexpressions_p ();
rtx shift_subtarget = preserve ? 0 : accum; 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; rtx accum_target = preserve ? 0 : accum;
switch (alg.op[opno]) switch (alg.op[opno])