summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-13 23:25:12 +0000
committerdrow <drow@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-13 23:25:12 +0000
commiteddf2705a0effc88d1d5e0b47562b73472138cc9 (patch)
tree5241e18372b0806679b1ea09b8e21501d956f9b3
parentacc70efa1df443f9b6ad2c686787a379f3829a4e (diff)
downloadgcc-eddf2705a0effc88d1d5e0b47562b73472138cc9.tar.gz
* expmed.c (synth_mult): Initialize latency. Check cost before
checking ops count. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@87456 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/expmed.c9
2 files changed, 10 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5609638157f..419c409633c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-09-13 Daniel Jacobowitz <dan@debian.org>
+
+ * expmed.c (synth_mult): Initialize latency. Check cost before
+ checking ops count.
+
2004-09-26 Kenneth Zadeck <Kenneth.Zadeck@NaturalBridge.com>
diff --git a/gcc/expmed.c b/gcc/expmed.c
index eb8226da75f..232381f2c5a 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -2247,6 +2247,7 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
/* Indicate that no algorithm is yet found. If no algorithm
is found, this value will be returned and indicate failure. */
alg_out->cost.cost = cost_limit->cost + 1;
+ alg_out->cost.latency = cost_limit->latency + 1;
if (cost_limit->cost < 0
|| (cost_limit->cost == 0 && cost_limit->latency <= 0))
@@ -2516,15 +2517,15 @@ synth_mult (struct algorithm *alg_out, unsigned HOST_WIDE_INT t,
}
}
+ /* If best_cost has not decreased, we have not found any algorithm. */
+ if (!CHEAPER_MULT_COST (&best_cost, cost_limit))
+ return;
+
/* If we are getting a too long sequence for `struct algorithm'
to record, make this search fail. */
if (best_alg->ops == MAX_BITS_PER_WORD)
return;
- /* If best_cost has not decreased, we have not found any algorithm. */
- if (!CHEAPER_MULT_COST (&best_cost, cost_limit))
- return;
-
/* Copy the algorithm from temporary space to the space at alg_out.
We avoid using structure assignment because the majority of
best_alg is normally undefined, and this is a critical function. */