diff options
author | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-13 23:25:12 +0000 |
---|---|---|
committer | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-09-13 23:25:12 +0000 |
commit | eddf2705a0effc88d1d5e0b47562b73472138cc9 (patch) | |
tree | 5241e18372b0806679b1ea09b8e21501d956f9b3 | |
parent | acc70efa1df443f9b6ad2c686787a379f3829a4e (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expmed.c | 9 |
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. */ |