From 3ab0f29005da8dbc7a51fd8a995559e1b40f88e7 Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Mon, 13 Sep 2004 23:25:12 +0000 Subject: [PATCH] expmed.c (synth_mult): Initialize latency. * expmed.c (synth_mult): Initialize latency. Check cost before checking ops count. From-SVN: r87456 --- gcc/ChangeLog | 5 +++++ 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 + + * expmed.c (synth_mult): Initialize latency. Check cost before + checking ops count. + 2004-09-26 Kenneth Zadeck 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. */ -- 2.30.2