From 1ee710027d8aa16145dab623815d9f9921cf9633 Mon Sep 17 00:00:00 2001 From: Filip Kastl Date: Wed, 5 Jul 2023 17:36:02 +0200 Subject: [PATCH] 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. --- gcc/value-prof.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 { -- 2.47.2