diff options
author | Jan Hubicka <jh@suse.cz> | 2018-12-02 16:39:45 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2018-12-02 15:39:45 +0000 |
commit | 3b131f6a86798c11093eee79b6069139efb92af9 (patch) | |
tree | 33b47a2f0e1ba7bb0077bbad2063c388d586ded5 | |
parent | df996c3fd2115d8ed8f44072f00728fbe5dc2d6b (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/bb-reorder.c | 16 |
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) { |