aboutsummaryrefslogtreecommitdiff
path: root/gcc/predict.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2016-06-08 11:39:33 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2016-06-08 09:39:33 +0000
commitcd1d802aed1192b9393b519608e59b64c544db42 (patch)
treefb2431c5d8cf182638fb0e733d20edc651daf2e3 /gcc/predict.c
parent15bdf5be1a76d553e0b2e0ea50279115a59692b1 (diff)
downloadgcc-cd1d802aed1192b9393b519608e59b64c544db42.zip
gcc-cd1d802aed1192b9393b519608e59b64c544db42.tar.gz
gcc-cd1d802aed1192b9393b519608e59b64c544db42.tar.bz2
predict.c (pass_strip_predict_hints::execute): Cleanup CFG if some statements was removed.
* predict.c (pass_strip_predict_hints::execute): Cleanup CFG if some statements was removed. From-SVN: r237199
Diffstat (limited to 'gcc/predict.c')
-rw-r--r--gcc/predict.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/predict.c b/gcc/predict.c
index 6f81b53..837c2f3 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -3166,6 +3166,7 @@ pass_strip_predict_hints::execute (function *fun)
basic_block bb;
gimple *ass_stmt;
tree var;
+ bool changed = false;
FOR_EACH_BB_FN (bb, fun)
{
@@ -3177,6 +3178,7 @@ pass_strip_predict_hints::execute (function *fun)
if (gimple_code (stmt) == GIMPLE_PREDICT)
{
gsi_remove (&bi, true);
+ changed = true;
continue;
}
else if (is_gimple_call (stmt))
@@ -3191,6 +3193,7 @@ pass_strip_predict_hints::execute (function *fun)
&& gimple_call_internal_fn (stmt) == IFN_BUILTIN_EXPECT))
{
var = gimple_call_lhs (stmt);
+ changed = true;
if (var)
{
ass_stmt
@@ -3207,7 +3210,7 @@ pass_strip_predict_hints::execute (function *fun)
gsi_next (&bi);
}
}
- return 0;
+ return changed ? TODO_cleanup_cfg : 0;
}
} // anon namespace