diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2017-07-06 18:12:01 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2017-07-06 16:12:01 +0000 |
commit | b0a12b5e4612ba1c4013e0f2549b82f0690c9458 (patch) | |
tree | 69bdb5475cb4c31ded2ef0f49d772f2540869db6 /gcc | |
parent | 5094f7d540ff2f8ccbb3b78a0962a07ffa5960cb (diff) | |
download | gcc-b0a12b5e4612ba1c4013e0f2549b82f0690c9458.zip gcc-b0a12b5e4612ba1c4013e0f2549b82f0690c9458.tar.gz gcc-b0a12b5e4612ba1c4013e0f2549b82f0690c9458.tar.bz2 |
bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh edges...
* bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh
edges; zero probability is not better than uninitialized.
From-SVN: r250033
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/bb-reorder.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e0fe1a6..f2a15a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-07-06 Jan Hubicka <hubicka@ucw.cz> + + * bb-reorder.c (better_edge_p): Do not build traces across abnormal/eh + edges; zero probability is not better than uninitialized. + 2017-07-06 Maxim Ostapenko <m.ostapenko@samsung.com> * asan.h (asan_sanitize_allocas_p): Declare. diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c index 1994c1f..a421f6b 100644 --- a/gcc/bb-reorder.c +++ b/gcc/bb-reorder.c @@ -957,7 +957,14 @@ better_edge_p (const_basic_block bb, const_edge e, profile_probability prob, return !cur_best_edge || cur_best_edge->dest->index > e->dest->index; - if (prob > best_prob + diff_prob || !best_prob.initialized_p ()) + /* Those edges are so expensive that continuing a trace is not useful + performance wise. */ + if (e->flags & (EDGE_ABNORMAL | EDGE_EH)) + return false; + + if (prob > best_prob + diff_prob + || (!best_prob.initialized_p () + && prob > profile_probability::guessed_never ())) /* The edge has higher probability than the temporary best edge. */ is_better_edge = true; else if (prob < best_prob - diff_prob) |