aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2018-12-02 16:39:45 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2018-12-02 15:39:45 +0000
commit3b131f6a86798c11093eee79b6069139efb92af9 (patch)
tree33b47a2f0e1ba7bb0077bbad2063c388d586ded5
parentdf996c3fd2115d8ed8f44072f00728fbe5dc2d6b (diff)
downloadgcc-3b131f6a86798c11093eee79b6069139efb92af9.zip
gcc-3b131f6a86798c11093eee79b6069139efb92af9.tar.gz
gcc-3b131f6a86798c11093eee79b6069139efb92af9.tar.bz2
bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): trust precise profiles.
* bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): trust precise profiles. From-SVN: r266726
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/bb-reorder.c16
2 files changed, 14 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a724451..c143ee1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2018-12-02 Jan Hubicka <jh@suse.cz>
+
+ * bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges):
+ trust precise profiles.
+
2018-12-02 Jakub Jelinek <jakub@redhat.com>
* tree-nested.c (convert_nonlocal_omp_clauses,
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index e20df16..aaea525 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -1663,17 +1663,19 @@ find_rarely_executed_basic_blocks_and_crossing_edges (void)
if (probably_never_executed_bb_p (cfun, bb))
{
+ cold_bb = true;
+
/* Handle profile insanities created by upstream optimizations
by also checking the incoming edge weights. If there is a non-cold
incoming edge, conservatively prevent this block from being split
into the cold section. */
- cold_bb = true;
- FOR_EACH_EDGE (e, ei, bb->preds)
- if (!probably_never_executed_edge_p (cfun, e))
- {
- cold_bb = false;
- break;
- }
+ if (!bb->count.precise_p ())
+ FOR_EACH_EDGE (e, ei, bb->preds)
+ if (!probably_never_executed_edge_p (cfun, e))
+ {
+ cold_bb = false;
+ break;
+ }
}
if (cold_bb)
{