[Bug target/106228] [13 regression] r13-1457-g10b502fb78351a causes bootstrap failure

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jul 11 06:35:21 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106228

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |ASSIGNED

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
OK, it's vect_setup_realignment called from

  tree offset = NULL_TREE;
  if ((alignment_support_scheme == dr_explicit_realign_optimized
       || alignment_support_scheme == dr_explicit_realign)
      && !compute_in_loop)
    {
      /* If we have different first_stmt_info, we can't set up realignment
         here, since we can't guarantee first_stmt_info DR has been
         initialized yet, use first_stmt_info_for_drptr DR by bumping the
         distance from first_stmt_info DR instead as below.  */
      if (!diff_first_stmt_info)
        msq = vect_setup_realignment (vinfo,
                                      first_stmt_info, gsi, &realignment_token,
                                      alignment_support_scheme, NULL_TREE,
                                      &at_loop);

The following fixes that ICE.

diff --git a/gcc/tree-vect-data-refs.cc b/gcc/tree-vect-data-refs.cc
index d20a10a1524..53e52cb58cb 100644
--- a/gcc/tree-vect-data-refs.cc
+++ b/gcc/tree-vect-data-refs.cc
@@ -5780,6 +5780,13 @@ vect_setup_realignment (vec_info *vinfo, stmt_vec_info
stmt_info,
   if (loop_for_initial_load)
     pe = loop_preheader_edge (loop_for_initial_load);

+  tree vuse;
+  gphi *vphi = get_virtual_phi (loop_for_initial_load->header);
+  if (vphi)
+    vuse = PHI_ARG_DEF_FROM_EDGE (vphi, pe);
+  else
+    vuse = gimple_vuse (gsi_stmt (*gsi));
+
   /* 3. For the case of the optimized realignment, create the first vector
       load at the loop preheader.  */

@@ -5813,6 +5820,7 @@ vect_setup_realignment (vec_info *vinfo, stmt_vec_info
stmt_info,
       new_stmt = gimple_build_assign (vec_dest, data_ref);
       new_temp = make_ssa_name (vec_dest, new_stmt);
       gimple_assign_set_lhs (new_stmt, new_temp);
+      gimple_set_vuse (new_stmt, vuse);
       if (pe)
         {
           new_bb = gsi_insert_on_edge_immediate (pe, new_stmt);


The testsuite FAILs seem to use -mdejagnu-cpu=power7 so likely are the same.


More information about the Gcc-bugs mailing list