We are too eager to bump alignment of some decls when vectorizing.
The fix is to not bump alignment of decls the user explicitely
aligned or that are used in an unknown way.

Bootstrapped and tested on i686-darwin9 and x86_64-apple-darwin10
and powerpc-apple-darwin9 by darwin folks, applied.

Richard.

2012-06-19  Richard Guenther  <rguent...@suse.de>

        PR tree-optimization/53708
        * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Preserve
        user-supplied alignment and alignment of decls with the used
        attribute.

Index: gcc/tree-vect-data-refs.c
===================================================================
--- gcc/tree-vect-data-refs.c   (revision 188733)
+++ gcc/tree-vect-data-refs.c   (working copy)
@@ -4731,6 +4720,12 @@ vect_can_force_dr_alignment_p (const_tre
   if (TREE_ASM_WRITTEN (decl))
     return false;
 
+  /* Do not override explicit alignment set by the user or the alignment
+     as specified by the ABI when the used attribute is set.  */
+  if (DECL_USER_ALIGN (decl)
+      || DECL_PRESERVE_P (decl))
+    return false;
+
   if (TREE_STATIC (decl))
     return (alignment <= MAX_OFILE_ALIGNMENT);
   else

Reply via email to