vect: Use vect_relevant_for_alignment_p consistently
authorFei Yang <felix.yang@huawei.com>
Thu, 18 Jun 2020 19:11:09 +0000 (20:11 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Thu, 18 Jun 2020 19:11:09 +0000 (20:11 +0100)
Minor code refactorings in tree-vect-data-refs.c.  When trying loop peeling
to force alignment, call vect_relevant_for_alignment_p to filter out data
references in the loop whose alignment is irrelevant.

2020-06-18  Felix Yang  <felix.yang@huawei.com>

gcc/
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment): Call
vect_relevant_for_alignment_p to filter out data references in
the loop whose alignment is irrelevant when trying loop peeling
to force alignment.

gcc/tree-vect-data-refs.c

index 4164bf4743c53cff07e7e2432b5492110dd05d25..2365a3925bb815fc864822456811d561d62d3bb7 100644 (file)
@@ -1722,29 +1722,10 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
   FOR_EACH_VEC_ELT (datarefs, i, dr)
     {
       dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
-      stmt_vec_info stmt_info = dr_info->stmt;
-
-      if (!STMT_VINFO_RELEVANT_P (stmt_info))
-       continue;
-
-      /* For interleaving, only the alignment of the first access
-         matters.  */
-      if (STMT_VINFO_GROUPED_ACCESS (stmt_info)
-         && DR_GROUP_FIRST_ELEMENT (stmt_info) != stmt_info)
-       continue;
-
-      /* For scatter-gather or invariant accesses there is nothing
-        to enhance.  */
-      if (STMT_VINFO_GATHER_SCATTER_P (stmt_info)
-         || integer_zerop (DR_STEP (dr)))
-       continue;
-
-      /* Strided accesses perform only component accesses, alignment is
-        irrelevant for them.  */
-      if (STMT_VINFO_STRIDED_P (stmt_info)
-         && !STMT_VINFO_GROUPED_ACCESS (stmt_info))
+      if (!vect_relevant_for_alignment_p (dr_info))
        continue;
 
+      stmt_vec_info stmt_info = dr_info->stmt;
       supportable_dr_alignment
        = vect_supportable_dr_alignment (loop_vinfo, dr_info, true);
       do_peeling = vector_alignment_reachable_p (dr_info);
@@ -2136,12 +2117,8 @@ vect_enhance_data_refs_alignment (loop_vec_info loop_vinfo)
          FOR_EACH_VEC_ELT (datarefs, i, dr)
            if (dr != dr0_info->dr)
              {
-               /* Strided accesses perform only component accesses, alignment
-                  is irrelevant for them.  */
                dr_vec_info *dr_info = loop_vinfo->lookup_dr (dr);
-               stmt_info = dr_info->stmt;
-               if (STMT_VINFO_STRIDED_P (stmt_info)
-                   && !STMT_VINFO_GROUPED_ACCESS (stmt_info))
+               if (!vect_relevant_for_alignment_p (dr_info))
                  continue;
 
                vect_update_misalignment_for_peel (dr_info, dr0_info, npeel);