diff options
author | Martin Liska <mliska@suse.cz> | 2016-06-16 18:05:25 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2016-06-16 16:05:25 +0000 |
commit | 68fa96d6257baa572dad70a23259670be1542efb (patch) | |
tree | 4639894bc52d12b93835464e86fc462d737e390f /gcc/gimple-fold.c | |
parent | 8b051d2e6c9a816aff781802b311dbdb77ac7be0 (diff) | |
download | gcc-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/gimple-fold.c')
-rw-r--r-- | gcc/gimple-fold.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index 885367e..fa03e89 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -5250,6 +5250,14 @@ gimple_fold_stmt_to_constant_1 (gimple *stmt, tree (*valueize) (tree), case IFN_UBSAN_CHECK_MUL: subcode = MULT_EXPR; break; + case IFN_BUILTIN_EXPECT: + { + tree arg0 = gimple_call_arg (stmt, 0); + tree op0 = (*valueize) (arg0); + if (TREE_CODE (op0) == INTEGER_CST) + return op0; + return NULL_TREE; + } default: return NULL_TREE; } |