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:
Alex Coplan 2024-11-26 17:48:14 +00:00
parent 3880271e94
commit cfdb961588

View file

@ -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.