tree-optimization/102949 - fix base object alignment

Message ID n5p6q3r0-5r5p-6732-rrrs-2pq2qs4n6n82@fhfr.qr
State Committed
Commit eed248bb8cc3091e8a9b2f73138c691396752438
Headers
Series tree-optimization/102949 - fix base object alignment |

Commit Message

Richard Biener Oct. 28, 2021, 9:02 a.m. UTC
  This fixes fallout of g:4703182a06b831a9 where we now silently fail
to force alignment of a base object.  The fix is to look at the
dr_info of the group leader to be consistent with alignment analysis.

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

2021-10-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/102949
	* tree-vect-stmts.c (ensure_base_align): Look at the
	dr_info of a group leader and assert we are looking at
	one with analyzed alignment.
---
 gcc/tree-vect-stmts.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
  

Patch

diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index bf07e7a9495..03cc7267cf8 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -6338,8 +6338,12 @@  vectorizable_operation (vec_info *vinfo,
 static void
 ensure_base_align (dr_vec_info *dr_info)
 {
-  if (dr_info->misalignment == DR_MISALIGNMENT_UNINITIALIZED)
-    return;
+  /* Alignment is only analyzed for the first element of a DR group,
+     use that to look at base alignment we need to enforce.  */
+  if (STMT_VINFO_GROUPED_ACCESS (dr_info->stmt))
+    dr_info = STMT_VINFO_DR_INFO (DR_GROUP_FIRST_ELEMENT (dr_info->stmt));
+
+  gcc_assert (dr_info->misalignment != DR_MISALIGNMENT_UNINITIALIZED);
 
   if (dr_info->base_misaligned)
     {