diff options
author | marxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-06-16 16:05:25 +0000 |
---|---|---|
committer | marxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-06-16 16:05:25 +0000 |
commit | db48d95b87e8078c753fd0197d6500788d9467e0 (patch) | |
tree | 4639894bc52d12b93835464e86fc462d737e390f /gcc/predict.def | |
parent | a3475f4c68fec1b2ebdf8b9d3cb21321750e1eee (diff) | |
download | gcc-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.def | 6 |
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) |