> Hi,
> 
> The new behavior of safe_add triggered an ICE because of one use where
> it had not been used instead of a simple addition.  I'll fix it with the
> following obvious patch so that periodic benchmarkers can continue
> working because a proper fix (see below) will need a review.
> 
> The testcase showed me, however, that we can propagate time and cost
> from one lattice to another more than once even when that was not the
> intent.  I'll address that as a follow-up after I verify it does not
> affect the IPA-CP heuristics too much or change the corresponding
> params accordingly.
> 
> Bootstrapped and tested on x86_64-linux.
> 
> Thanks,
> 
> Martin
> 
> 
> gcc/ChangeLog:
> 
> 2020-11-13  Martin Jambor  <mjam...@suse.cz>
> 
>       PR ipa/97816
>       * ipa-cp.c (value_topo_info<valtype>::propagate_effects): Use
>       safe_add instead of a simple addition.
Seems OK. I wonder if we can't just stop propagation earlier? Does it
really make sense to propagate such a large vlaues? Don't we have some
cap on how much size we permit?
thanks!
Honza
> ---
>  gcc/ipa-cp.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
> index f29f2164f4e..c3ee71e16e1 100644
> --- a/gcc/ipa-cp.c
> +++ b/gcc/ipa-cp.c
> @@ -3873,7 +3873,8 @@ value_topo_info<valtype>::propagate_effects ()
>        for (val = base; val; val = val->scc_next)
>       {
>         time = time + val->local_time_benefit + val->prop_time_benefit;
> -       size = safe_add (size, val->local_size_cost + val->prop_size_cost);
> +       size = safe_add (size, safe_add (val->local_size_cost,
> +                                        val->prop_size_cost));
>       }
>  
>        for (val = base; val; val = val->scc_next)
> -- 
> 2.28.0
> 

Reply via email to