vect: Set counts of early break exit blocks correctly [PR117790]
This adds missing code to correctly set the counts of the exit blocks we create when building the CFG for a vectorized early break loop. gcc/ChangeLog: PR tree-optimization/117790 * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): Set profile counts for {main,alt}_loop_exit_block.
This commit is contained in:
parent
3880271e94
commit
cfdb961588
1 changed files with 10 additions and 0 deletions
|
@ -1686,6 +1686,16 @@ slpeel_tree_duplicate_loop_to_edge_cfg (class loop *loop, edge loop_exit,
|
|||
|
||||
set_immediate_dominator (CDI_DOMINATORS, new_preheader,
|
||||
loop->header);
|
||||
|
||||
/* Fix up the profile counts of the new exit blocks.
|
||||
main_loop_exit_block was created by duplicating the
|
||||
preheader, so needs its count scaling according to the main
|
||||
exit edge's probability. The remaining count from the
|
||||
preheader goes to the alt_loop_exit_block, since all
|
||||
alternative exits have been redirected there. */
|
||||
main_loop_exit_block->count = loop_exit->count ();
|
||||
alt_loop_exit_block->count
|
||||
= preheader->count - main_loop_exit_block->count;
|
||||
}
|
||||
|
||||
/* Adjust the epilog loop PHI entry values to continue iteration.
|
||||
|
|
Loading…
Add table
Reference in a new issue