diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2016-06-08 11:39:33 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2016-06-08 09:39:33 +0000 |
commit | cd1d802aed1192b9393b519608e59b64c544db42 (patch) | |
tree | fb2431c5d8cf182638fb0e733d20edc651daf2e3 /gcc/predict.c | |
parent | 15bdf5be1a76d553e0b2e0ea50279115a59692b1 (diff) | |
download | gcc-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.c | 5 |
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 |