http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52272
Igor Zamyatin <izamyatin at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |izamyatin at gmail dot com --- Comment #8 from Igor Zamyatin <izamyatin at gmail dot com> 2012-03-26 11:05:52 UTC --- Sort of experimental patch Index: tree-ssa-loop-ivopts.c =================================================================== --- tree-ssa-loop-ivopts.c (revision 185039) +++ tree-ssa-loop-ivopts.c (working copy) @@ -4114,6 +4114,7 @@ else if (ratio == 1) { tree real_cbase = cbase; + int diff_cost, add_cost1; /* Check to see if any adjustment is needed. */ if (cstepi == 0 && stmt_is_after_inc) @@ -4133,7 +4134,10 @@ ubase, real_cbase, &symbol_present, &var_present, &offset, depends_on); + diff_cost = cost.cost; cost.cost /= avg_loop_niter (data->current_loop); + if (diff_cost > (add_cost1 = add_cost(TYPE_MODE (ctype), data->speed))) + cost.cost += add_cost1; } else if (address_p && !POINTER_TYPE_P (ctype) It was found during some side investigation regarding ivopts phase work. Patch fixes the regression.