aboutsummaryrefslogtreecommitdiff
path: root/gcc/gimple-fold.c
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/gimple-fold.c
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/gimple-fold.c')
-rw-r--r--gcc/gimple-fold.c8
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;
}