The following removes the fixup we apply to pattern stmts before
code generating vector epilogues.  While I did expect this isn't
necessary anymore since the SLP graph now exclusively records the
data flow now, I expected "details" to mess this up.  In particular
1/2 of this series fixes the one place I expected test coverage,
OMP scan-stores, so I disabled epilogue vectorization with those.

We are not ready to kill off adjusting gather/scatter DR things,
the series remembering the get_load_store_type results will.  Then
we can scrap all of this code.

Bootstrapped and tested on x86_64-unknown-linux-gnu.

        * tree-vect-loop.cc (update_epilogue_loop_vinfo): Remove
        fixing up pattern stmt operands.
---
 gcc/tree-vect-loop.cc | 27 ---------------------------
 1 file changed, 27 deletions(-)

diff --git a/gcc/tree-vect-loop.cc b/gcc/tree-vect-loop.cc
index ce08909ab83..b036fbb34a5 100644
--- a/gcc/tree-vect-loop.cc
+++ b/gcc/tree-vect-loop.cc
@@ -11256,33 +11256,6 @@ update_epilogue_loop_vinfo (class loop *epilogue, tree 
advance)
        }
     }
 
-  /* The PATTERN_DEF_SEQs and RELATED_STMTs in the epilogue were constructed
-     using the original main loop and thus need to be updated to refer to the
-     cloned variables used in the epilogue.  */
-  for (unsigned i = 0; i < stmt_worklist.length (); ++i)
-    {
-      gimple *stmt = stmt_worklist[i];
-      tree *new_op;
-
-      for (unsigned j = 1; j < gimple_num_ops (stmt); ++j)
-       {
-         tree op = gimple_op (stmt, j);
-         if ((new_op = mapping.get(op)))
-           gimple_set_op (stmt, j, *new_op);
-         else
-           {
-             /* PR92429: The last argument of simplify_replace_tree disables
-                folding when replacing arguments.  This is required as
-                otherwise you might end up with different statements than the
-                ones analyzed in vect_loop_analyze, leading to different
-                vectorization.  */
-             op = simplify_replace_tree (op, NULL_TREE, NULL_TREE,
-                                         &find_in_mapping, &mapping, false);
-             gimple_set_op (stmt, j, op);
-           }
-       }
-    }
-
   struct data_reference *dr;
   vec<data_reference_p> datarefs = LOOP_VINFO_DATAREFS (epilogue_vinfo);
   FOR_EACH_VEC_ELT (datarefs, i, dr)
-- 
2.43.0

Reply via email to