Fix profile update in tree-ssa-loop-im.cc
This fixes two bugs in tree-ssa-loop-im.cc. First is that cap probability is not reliable, but it is constructed with adjusted quality. Second is that sometimes the conditional has wrong joiner BB count. This is visible on testsuite/gcc.dg/pr102385.c however the testcase triggers another profile update bug in pcom, so I will update it in followup patch. gcc/ChangeLog: * tree-ssa-loop-im.cc (execute_sm_if_changed): Turn cap probability to guessed; fix count of new_bb.
This commit is contained in:
parent
499b8079a6
commit
5b06b3b877
1 changed files with 4 additions and 1 deletions
|
@ -2059,7 +2059,8 @@ execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag,
|
|||
nbbs++;
|
||||
}
|
||||
|
||||
profile_probability cap = profile_probability::always ().apply_scale (2, 3);
|
||||
profile_probability cap
|
||||
= profile_probability::guessed_always ().apply_scale (2, 3);
|
||||
|
||||
if (flag_probability.initialized_p ())
|
||||
;
|
||||
|
@ -2103,6 +2104,8 @@ execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag,
|
|||
|
||||
old_dest = ex->dest;
|
||||
new_bb = split_edge (ex);
|
||||
if (append_cond_position)
|
||||
new_bb->count += last_cond_fallthru->count ();
|
||||
then_bb = create_empty_bb (new_bb);
|
||||
then_bb->count = new_bb->count.apply_probability (flag_probability);
|
||||
if (irr)
|
||||
|
|
Loading…
Add table
Reference in a new issue