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

Reply via email to