aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.c
diff options
context:
space:
mode:
authorRong Xu <xur@google.com>2013-10-03 17:13:50 +0000
committerRong Xu <xur@gcc.gnu.org>2013-10-03 17:13:50 +0000
commit942df7390fb64e26bb7ed6ac58ee9911be4ea5cb (patch)
tree48352394b524e6a8198bc62633939861961f8a7e /gcc/predict.c
parent2ef7251f6cd9e228cafa3473929ff55c9cb56928 (diff)
downloadgcc-942df7390fb64e26bb7ed6ac58ee9911be4ea5cb.zip
gcc-942df7390fb64e26bb7ed6ac58ee9911be4ea5cb.tar.gz
gcc-942df7390fb64e26bb7ed6ac58ee9911be4ea5cb.tar.bz2
predict.c (tree_predict_by_opcode): Get the probability for builtin_expect from param builtin_expect_probability.
* predict.c (tree_predict_by_opcode): Get the probability for builtin_expect from param builtin_expect_probability. * params.def (BUILTIN_EXPECT_PROBABILITY): New parameter. * predict.def (PRED_BUILTIN_EXPECT_RELAXED): Fix comments. * doc/invoke.texi: Add documentation for builtin-expect-probability. * gcc.target/i386/cold-attribute-2.c: Fix the test by using original probability. * gcc.dg/tree-ssa/ipa-split-5.c: Ditto. * gcc.dg/tree-ssa/ipa-split-6.c: Ditto. --This li (t)ene, and those below, will be ignored-- M gcc/params.def M gcc/predict.def M gcc/ChangeLog M gcc/testsuite/gcc.dg/tree-ssa/ipa-split-5.c M gcc/testsuite/gcc.dg/tree-ssa/ipa-split-6.c M gcc/testsuite/gcc.target/i386/cold-attribute-2.c M gcc/predict.c M gcc/doc/invoke.texi From-SVN: r203167
Diffstat (limited to 'gcc/predict.c')
-rw-r--r--gcc/predict.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/predict.c b/gcc/predict.c
index 2909117..e6a4095 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -2000,11 +2000,12 @@ tree_predict_by_opcode (basic_block bb)
BITMAP_FREE (visited);
if (val)
{
+ int percent = PARAM_VALUE (BUILTIN_EXPECT_PROBABILITY);
+
+ gcc_assert (percent >= 0 && percent <= 100);
if (integer_zerop (val))
- predict_edge_def (then_edge, PRED_BUILTIN_EXPECT, NOT_TAKEN);
- else
- predict_edge_def (then_edge, PRED_BUILTIN_EXPECT, TAKEN);
- return;
+ percent = 100 - percent;
+ predict_edge (then_edge, PRED_BUILTIN_EXPECT, HITRATE (percent));
}
/* Try "pointer heuristic."
A comparison ptr == 0 is predicted as false.