From: Jan Hubicka Date: Fri, 21 Jul 2023 14:50:49 +0000 (+0200) Subject: Use sreal::nearest_int X-Git-Tag: basepoints/gcc-15~7427 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=feeee84079ee165f13f9fb8cdcf5dcea98d394e0;p=thirdparty%2Fgcc.git Use sreal::nearest_int Fix conversions from sreal to nearest integer. gcc/ChangeLog: * cfgloop.cc (get_estimated_loop_iterations): Use sreal::to_nearest_int * cfgloopanal.cc (expected_loop_iterations_unbounded): Likewise. * predict.cc (estimate_bb_frequencies): Likewise. * profile.cc (branch_prob): Likewise. * tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Likewise --- diff --git a/gcc/cfgloop.cc b/gcc/cfgloop.cc index 9ca85e648a72..6d46b5b0911c 100644 --- a/gcc/cfgloop.cc +++ b/gcc/cfgloop.cc @@ -2012,7 +2012,7 @@ get_estimated_loop_iterations (class loop *loop, widest_int *nit) if (expected_loop_iterations_by_profile (loop, &snit, &reliable) && reliable) { - *nit = (snit + 0.5).to_int (); + *nit = snit.to_nearest_int (); return true; } return false; diff --git a/gcc/cfgloopanal.cc b/gcc/cfgloopanal.cc index 2bf2eb06d6bd..c86a537f0245 100644 --- a/gcc/cfgloopanal.cc +++ b/gcc/cfgloopanal.cc @@ -321,7 +321,7 @@ expected_loop_iterations_unbounded (const class loop *loop, sreal sreal_expected; if (expected_loop_iterations_by_profile (loop, &sreal_expected, read_profile_p)) - expected = (sreal_expected + 0.5).to_int (); + expected = sreal_expected.to_nearest_int (); else expected = param_avg_loop_niter; diff --git a/gcc/predict.cc b/gcc/predict.cc index 8f44f5b7db8c..6777e6cb9c52 100644 --- a/gcc/predict.cc +++ b/gcc/predict.cc @@ -4003,8 +4003,8 @@ estimate_bb_frequencies () break; } } - tmp = tmp * freq_max + sreal (1, -1); - profile_count count = profile_count::from_gcov_type (tmp.to_int ()); + tmp = tmp * freq_max; + profile_count count = profile_count::from_gcov_type (tmp.to_nearest_int ()); /* If we have profile feedback in which this function was never executed, then preserve this info. */ diff --git a/gcc/profile.cc b/gcc/profile.cc index 84d47b36d47e..fc59326a19ba 100644 --- a/gcc/profile.cc +++ b/gcc/profile.cc @@ -1553,7 +1553,7 @@ branch_prob (bool thunk) && expected_loop_iterations_by_profile (loop, &nit, &reliable) && reliable) { - widest_int bound = (nit + 0.5).to_int (); + widest_int bound = nit.to_nearest_int (); loop->any_estimate = false; record_niter_bound (loop, bound, true, false); } diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc index a8068014c5fc..705bcc009cdf 100644 --- a/gcc/tree-ssa-loop-niter.cc +++ b/gcc/tree-ssa-loop-niter.cc @@ -4801,7 +4801,7 @@ estimate_numbers_of_iterations (class loop *loop) && expected_loop_iterations_by_profile (loop, &nit, &reliable) && reliable) { - bound = (nit + 0.5).to_int (); + bound = nit.to_nearest_int (); record_niter_bound (loop, bound, true, false); }