RFC: fix think-o in tree-ssa-loop-ivopts.c

Sandra Loosemore sandra@codesourcery.com
Wed Jun 9 17:52:00 GMT 2010


Still working on PR42505, I found another problem in the ivopts cost 
computation.  This is apparently not the cause of the regression in PR42505 
either, but there's clearly something wrong here.....

This patch

http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01579.html

which was committed as r139821 includes this bit:

>    /* Having offset does not affect runtime cost in case it is added to
>       symbol, but it increases complexity.  */
>    if (offset)
>      cost.complexity++;
>  
> -  cost.cost += n_sums * add_cost (TYPE_MODE (ctype), speed);
> -  return cost;
> +  cost.cost += add_cost (TYPE_MODE (ctype), speed);
> +
> +  aratio = ratio > 0 ? ratio : -ratio;
> +  if (aratio != 1)
> +    cost.cost += multiply_by_cost (aratio, TYPE_MODE (ctype), speed);
>  
>  fallback:
>    {

The "cost" is never referred to again in the fallback code, so it seems like 
deleting the return statement was an unintended mistake.

I quickly put together the attached patch with the obvious fix and re-ran CSiBE 
on x86-64 native....  and I found that code size went up, giving back about half 
the improvement I got from adjusting the iv setup costs for -Os.

So, I'm wondering:  Eric, were the runtime speed improvements you claimed you 
saw here

http://gcc.gnu.org/ml/gcc-patches/2009-05/msg01858.html

actually present in the checked-in version of the patch, where the result of the 
fancy cost computation is simply discarded, or in some other version of the 
patch that implemented what I presume was the intended behavior?  Do we know for 
sure that the fancy cost computation actually even an improvement over the 
fallback case?

TBH, I don't really have time to work on re-checking x86 benchmark results 
myself....  I'm just trying to grok the costs code so I can fix PR42505 for one 
of our ARM customers.  ;-)

-Sandra


2010-06-09  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* tree-ssa-loop-ivopts.c (get_computation_cost_at): Return the
	computed cost.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: costs2.patch
Type: text/x-patch
Size: 440 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20100609/486edf4a/attachment.bin>


More information about the Gcc-patches mailing list