> 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