summaryrefslogtreecommitdiff
path: root/gcc/predict.def
diff options
context:
space:
mode:
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2016-06-16 16:05:25 +0000
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2016-06-16 16:05:25 +0000
commitdb48d95b87e8078c753fd0197d6500788d9467e0 (patch)
tree4639894bc52d12b93835464e86fc462d737e390f /gcc/predict.def
parenta3475f4c68fec1b2ebdf8b9d3cb21321750e1eee (diff)
downloadgcc-db48d95b87e8078c753fd0197d6500788d9467e0.tar.gz
Introduce fortran loop preheader
* predict.def: Add fortran loop preheader predictor. * gimple-fold.c (gimple_fold_stmt_to_constant_1): Properly fold IFN_BUILTIN_EXPECT with a known constant argument. * trans-stmt.c (gfc_trans_simple_do): Predict the edge. * gfortran.dg/predict-1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@237533 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/predict.def')
-rw-r--r--gcc/predict.def6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/predict.def b/gcc/predict.def
index 3e3a43a1079..a0d0ba923a2 100644
--- a/gcc/predict.def
+++ b/gcc/predict.def
@@ -199,3 +199,9 @@ DEF_PREDICTOR (PRED_FORTRAN_INVALID_BOUND, "Fortran invalid bound", \
which in turn has an optional argument. */
DEF_PREDICTOR (PRED_FORTRAN_ABSENT_DUMMY, "Fortran absent dummy", \
HITRATE (60), 0)
+
+/* Fortran DO statement generates a pre-header guard:
+ empty = (step > 0 ? to < from : to > from), which can be predicted
+ to be very likely. */
+DEF_PREDICTOR (PRED_FORTRAN_LOOP_PREHEADER, "Fortran loop preheader", \
+ HITRATE (99), 0)