aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2023-07-16 23:55:14 +0200
committerJan Hubicka <jh@suse.cz>2023-07-16 23:55:14 +0200
commitc62791fa413a49fc6476ce186b324250f8ae6d40 (patch)
tree81610bd4d94290e37ad0952945883d67a1c18383
parent1d203d4c90adb064edfa9680768d1f83a41f17e0 (diff)
downloadgcc-c62791fa413a49fc6476ce186b324250f8ae6d40.zip
gcc-c62791fa413a49fc6476ce186b324250f8ae6d40.tar.gz
gcc-c62791fa413a49fc6476ce186b324250f8ae6d40.tar.bz2
Fix optimize_mask_stores profile update
While looking into sphinx3 regression I noticed that vectorizer produces BBs with overall probability count 120%. This patch fixes it. Richi, I don't know how to create a testcase, but having one would be nice. Bootstrapped/regtested x86_64-linux, will commit it shortly. gcc/ChangeLog: PR tree-optimization/110649 * tree-vect-loop.cc (optimize_mask_stores): Set correctly probability of the if-then-else construct.
-rw-r--r--gcc/tree-vect-loop.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index 7d917bf..61343ea 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -11680,6 +11680,7 @@ optimize_mask_stores (class loop *loop)
efalse = make_edge (bb, store_bb, EDGE_FALSE_VALUE);
/* Put STORE_BB to likely part. */
efalse->probability = profile_probability::unlikely ();
+ e->probability = efalse->probability.invert ();
store_bb->count = efalse->count ();
make_single_succ_edge (store_bb, join_bb, EDGE_FALLTHRU);
if (dom_info_available_p (CDI_DOMINATORS))