]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree-optimization/102949 - fix base object alignment
authorRichard Biener <rguenther@suse.de>
Thu, 28 Oct 2021 08:07:40 +0000 (10:07 +0200)
committerRichard Biener <rguenther@suse.de>
Thu, 28 Oct 2021 09:02:38 +0000 (11:02 +0200)
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.

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

index bf07e7a94956e8293617b7412257b22f4d27aa25..03cc7267cf80d4ce73c0d89ab86b07e84752456a 100644 (file)
@@ -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)
     {