aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgexpand.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@gcc.gnu.org>2017-07-19 18:09:39 +0000
committerJan Hubicka <hubicka@gcc.gnu.org>2017-07-19 18:09:39 +0000
commit8b5d71cd61ecf0793cab732aad7232d6da4620fc (patch)
tree67f93353f64100487da1968df36ba48d260db79d /gcc/cfgexpand.c
parent95a60a5c8c5620da65d588b6b8c71f8145a31993 (diff)
downloadgcc-8b5d71cd61ecf0793cab732aad7232d6da4620fc.zip
gcc-8b5d71cd61ecf0793cab732aad7232d6da4620fc.tar.gz
gcc-8b5d71cd61ecf0793cab732aad7232d6da4620fc.tar.bz2
predict.c (propagate_unlikely_bbs_forward): Break out from ...
* predict.c (propagate_unlikely_bbs_forward): Break out from ... (determine_unlikely_bbs): ... here. * predict.h (propagate_unlikely_bbs_forward): Declare. * cfgexpand.c (pass_expand::execute): Use it. * bb-reorder.c (sanitize_hot_paths): Do not consider known to be unlikely edges. (find_rarely_executed_basic_blocks_and_crossing_edges): Use propagate_unlikely_bbs_forward. From-SVN: r250360
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r--gcc/cfgexpand.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 3e1d24d..c9d8118 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -6480,6 +6480,11 @@ pass_expand::execute (function *fun)
if (fun->eh->region_tree != NULL)
finish_eh_generation ();
+ /* BB subdivision may have created basic blocks that are are only reachable
+ from unlikely bbs but not marked as such in the profile. */
+ if (optimize)
+ propagate_unlikely_bbs_forward ();
+
/* Remove unreachable blocks, otherwise we cannot compute dominators
which are needed for loop state verification. As a side-effect
this also compacts blocks.