aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2017-07-06 18:12:01 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2017-07-06 16:12:01 +0000
commitb0a12b5e4612ba1c4013e0f2549b82f0690c9458 (patch)
tree69bdb5475cb4c31ded2ef0f49d772f2540869db6
parent5094f7d540ff2f8ccbb3b78a0962a07ffa5960cb (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/bb-reorder.c9
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)