From: Filip Kastl Date: Wed, 5 Jul 2023 15:36:02 +0000 (+0200) Subject: value-prof.cc: Correct edge prob calculation. X-Git-Tag: basepoints/gcc-15~7813 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ee710027d8aa16145dab623815d9f9921cf9633;p=thirdparty%2Fgcc.git value-prof.cc: Correct edge prob calculation. The mod-subtract optimization with ncounts==1 produced incorrect edge probabilities due to incorrect conditional probability calculation. This patch fixes the calculation. Signed-off-by: Filip Kastl gcc/ChangeLog: * value-prof.cc (gimple_mod_subtract_transform): Correct edge prob calculation. --- diff --git a/gcc/value-prof.cc b/gcc/value-prof.cc index f40e58ac4f24..5033a6f6aec3 100644 --- a/gcc/value-prof.cc +++ b/gcc/value-prof.cc @@ -1186,7 +1186,11 @@ gimple_mod_subtract_transform (gimple_stmt_iterator *si) if (all > 0) { prob1 = profile_probability::probability_in_gcov_type (count1, all); - prob2 = profile_probability::probability_in_gcov_type (count2, all); + if (all == count1) + prob2 = profile_probability::even (); + else + prob2 = profile_probability::probability_in_gcov_type (count2, all + - count1); } else {