Sorry for the double post, ignore please.
On 06/11/2019 10:57, Andre Vieira (lists) wrote:
Hi,
When investigating PR92317 I noticed that when we create the skip
epilogue condition, see ('if (skip_epilog)' in 'vect_do_peeling'), we
only copy phi-nodes that are not constants in
'slpeel_update_phi_nodes_for_guard2'. This can cause problems later
when we create the scalar epilogue for this epilogue, since if the
'scalar_loop' is not the same as 'loop'
'slpeel_tree_duplicate_loop_to_edge_cfg' will expect both to have
identical single_exit bb's and use that to copy the current_def
meta_data of phi-nodes.
This makes sure that is true even if these phi-nodes are constants,
fixing PR92317. I copied the failing testcase and added the options
that originally made it fail.
Is this OK for trunk?
Cheers,
Andre
gcc/ChangeLog:
2019-11-06 Andre Vieira <andre.simoesdiasvie...@arm.com>
* tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard2): Also
update phi's with constant phi arguments.
gcc/testsuite/ChangeLog:
2019-11-06 Andre Vieira <andre.simoesdiasvie...@arm.com>
* gcc/testsuite/g++.dg/opt/pr92317.C