> diff --git a/gcc/ipa-utils.cc b/gcc/ipa-utils.cc
> index 956c6294fd7..1355ccac6f0 100644
> --- a/gcc/ipa-utils.cc
> +++ b/gcc/ipa-utils.cc
> @@ -651,13 +651,16 @@ ipa_merge_profiles (struct cgraph_node *dst,
>               {
>                 edge srce = EDGE_SUCC (srcbb, i);
>                 edge dste = EDGE_SUCC (dstbb, i);
> -               dste->probability = 
> -                 dste->probability * dstbb->count.ipa ().probability_in
> -                                              (dstbb->count.ipa ()
> -                                               + srccount.ipa ())
> -                 + srce->probability * srcbb->count.ipa ().probability_in
> -                                              (dstbb->count.ipa ()
> -                                               + srccount.ipa ());
> +               profile_count sum =
> +                 dstbb->count.ipa () + srccount.ipa ();
> +               if (sum.nonzero_p ())
> +                 dste->probability =
> +                   dste->probability * dstbb->count.ipa ().probability_in
> +                                                (dstbb->count.ipa ()
> +                                                 + srccount.ipa ())
> +                   + srce->probability * srcbb->count.ipa ().probability_in
> +                                                (dstbb->count.ipa ()
> +                                                 + srccount.ipa ());

looks good.  You can use probability_in (sum) 
in both of the places.

Honza

Reply via email to