aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTom de Vries <tom@codesourcery.com>2017-08-04 07:27:05 +0000
committerTom de Vries <vries@gcc.gnu.org>2017-08-04 07:27:05 +0000
commit54cb4e20069f00f96ad2b6249cb68295a61a1786 (patch)
tree6929c721defce86705af92688565a7060d243a40 /gcc
parent07cf14668f69b343a67de1cab79bb0edbed1fc2a (diff)
downloadgcc-54cb4e20069f00f96ad2b6249cb68295a61a1786.zip
gcc-54cb4e20069f00f96ad2b6249cb68295a61a1786.tar.gz
gcc-54cb4e20069f00f96ad2b6249cb68295a61a1786.tar.bz2
Add missing edge probability in simd_clone_adjust
Currently we generate an if with probability set on only one of the two edges: <bb 5> [0.00%] [count: INV]: _5 = mask.3[iter.6_3]; if (_5 == 0) goto <bb 6>; [INV] [count: INV] else goto <bb 2>; [100.00%] [count: INV] Add the missing edge probability, and set the split to unlikely/likely: if (_5 == 0) goto <bb 6>; [19.99%] [count: INV] else goto <bb 2>; [80.01%] [count: INV] 2017-08-04 Tom de Vries <tom@codesourcery.com> * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability. From-SVN: r250865
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/omp-simd-clone.c7
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ea78f4f..9214302 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2017-08-04 Tom de Vries <tom@codesourcery.com>
+
+ * omp-simd-clone.c (simd_clone_adjust): Add missing edge probability.
+
2017-08-03 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
diff --git a/gcc/omp-simd-clone.c b/gcc/omp-simd-clone.c
index a1a563e..fbb122c 100644
--- a/gcc/omp-simd-clone.c
+++ b/gcc/omp-simd-clone.c
@@ -1240,8 +1240,11 @@ simd_clone_adjust (struct cgraph_node *node)
g = gimple_build_cond (EQ_EXPR, mask, build_zero_cst (TREE_TYPE (mask)),
NULL, NULL);
gsi_insert_after (&gsi, g, GSI_CONTINUE_LINKING);
- make_edge (loop->header, incr_bb, EDGE_TRUE_VALUE);
- FALLTHRU_EDGE (loop->header)->flags = EDGE_FALSE_VALUE;
+ edge e = make_edge (loop->header, incr_bb, EDGE_TRUE_VALUE);
+ e->probability = profile_probability::unlikely ().guessed ();
+ edge fallthru = FALLTHRU_EDGE (loop->header);
+ fallthru->flags = EDGE_FALSE_VALUE;
+ fallthru->probability = profile_probability::likely ().guessed ();
}
basic_block latch_bb = NULL;