From 8dbcc14aa053cc13c5f24493230575e60ffc3472 Mon Sep 17 00:00:00 2001
From: Fei Yang <felix.yang@huawei.com>
Date: Thu, 18 Jun 2020 15:52:40 +0800
Subject: [PATCH] vect: Use vect_relevant_for_alignment_p consistently

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 | 29 +++--------------------------
 1 file changed, 3 insertions(+), 26 deletions(-)

diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index 4164bf4743c..2365a3925bb 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -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);
-- 
2.19.1

