aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.def
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2016-06-16 18:05:25 +0200
committerMartin Liska <marxin@gcc.gnu.org>2016-06-16 16:05:25 +0000
commit68fa96d6257baa572dad70a23259670be1542efb (patch)
tree4639894bc52d12b93835464e86fc462d737e390f /gcc/predict.def
parent8b051d2e6c9a816aff781802b311dbdb77ac7be0 (diff)
downloadgcc-68fa96d6257baa572dad70a23259670be1542efb.zip
gcc-68fa96d6257baa572dad70a23259670be1542efb.tar.gz
gcc-68fa96d6257baa572dad70a23259670be1542efb.tar.bz2
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. From-SVN: r237533
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 3e3a43a..a0d0ba9 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)