From: hubicka Date: Sun, 2 Dec 2018 15:39:45 +0000 (+0000) Subject: * bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03b717e7520f02d0ae307a78e1218dafad6001a7;p=thirdparty%2Fgcc.git * bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): trust precise profiles. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266726 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a724451eb55a..c143ee13a486 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-12-02 Jan Hubicka + + * bb-reorer.c (find_rarely_executed_basic_blocks_and_crossin_edges): + trust precise profiles. + 2018-12-02 Jakub Jelinek * tree-nested.c (convert_nonlocal_omp_clauses, diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index e20df1607233..aaea525b69e5 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) {