diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-04 07:27:05 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-04 07:27:05 +0000 |
commit | 43eb6d3b22ec548746b59035dc4b01a590d5e0d1 (patch) | |
tree | 6929c721defce86705af92688565a7060d243a40 | |
parent | 21d3ccaff75133fbb3f3a736f2a2dee3f7ce610d (diff) | |
download | gcc-43eb6d3b22ec548746b59035dc4b01a590d5e0d1.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250865 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/omp-simd-clone.c | 7 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ea78f4f4642..92143020844 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 a1a563e8094..fbb122cd1e0 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; |