aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.def
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-08-07 13:59:13 +0200
committerMartin Liska <marxin@gcc.gnu.org>2018-08-07 11:59:13 +0000
commit806562fd6269a3d7e0651d5bbf9085c7708fb5cd (patch)
treeeaa3b52796a56d33f60e9066a720a28f86390a1f /gcc/predict.def
parentea2329d170827cf9d321324844035a4a2dcfec96 (diff)
downloadgcc-806562fd6269a3d7e0651d5bbf9085c7708fb5cd.zip
gcc-806562fd6269a3d7e0651d5bbf9085c7708fb5cd.tar.gz
gcc-806562fd6269a3d7e0651d5bbf9085c7708fb5cd.tar.bz2
Add malloc predictor (PR middle-end/83023).
2018-08-07 Martin Liska <mliska@suse.cz> PR middle-end/83023 * predict.c (expr_expected_value_1): Handle DECL_IS_MALLOC, BUILT_IN_REALLOC and DECL_IS_OPERATOR_NEW. * predict.def (PRED_MALLOC_NONNULL): New predictor. * doc/extend.texi: Document that malloc attribute adds hit to compiler. 2018-08-07 Martin Liska <mliska@suse.cz> PR middle-end/83023 * gcc.dg/predict-16.c: New test. * g++.dg/predict-1.C: New test. From-SVN: r263355
Diffstat (limited to 'gcc/predict.def')
-rw-r--r--gcc/predict.def5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/predict.def b/gcc/predict.def
index 4ed97ed..76e6590 100644
--- a/gcc/predict.def
+++ b/gcc/predict.def
@@ -51,6 +51,10 @@ DEF_PREDICTOR (PRED_NO_PREDICTION, "no prediction", PROB_ALWAYS, 0)
DEF_PREDICTOR (PRED_UNCONDITIONAL, "unconditional jump", PROB_ALWAYS,
PRED_FLAG_FIRST_MATCH)
+/* Return value of malloc function is almost always non-null. */
+DEF_PREDICTOR (PRED_MALLOC_NONNULL, "malloc returned non-NULL", \
+ PROB_VERY_LIKELY, PRED_FLAG_FIRST_MATCH)
+
/* Use number of loop iterations determined by # of iterations
analysis to set probability. We don't want to use Dempster-Shaffer
theory here, as the predictions is exact. */
@@ -169,7 +173,6 @@ DEF_PREDICTOR (PRED_HOT_LABEL, "hot label", HITRATE (85), 0)
DEF_PREDICTOR (PRED_COLD_LABEL, "cold label", PROB_VERY_LIKELY,
PRED_FLAG_FIRST_MATCH)
-
/* The following predictors are used in Fortran. */
/* Branch leading to an integer overflow are extremely unlikely. */