On Tue, 19 Jun 2012, Dominique Dhumieres wrote: > On Tue, 19 Jun 2012, Richard Guenther wrote: > > > > > Richard Guenther <rguent...@suse.de> writes: > > > > 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. > > > > > > I thought attribute((__aligned__)) only set a minimum alignment for > > > variables? Most usees I've seen have been trying to get better > > > performance from higher alignment, so it might not go down well if the > > > attribute stopped the vectoriser from increasing the alignment still > > > further. > > > > That's what the documentation says indeed. I'm not sure which part of > > the patch fixes the ObjC failures where the alignment is part of the ABI > > (and I suppose ObjC then mis-uses the aligned attribute?). > > A quick test shows that > > if (DECL_PRESERVE_P (decl)) > > alone is enough to fix the objc failures, while they are still there if > one uses only > > if (DECL_USER_ALIGN (decl))
Thus, the following. Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2012-06-20 Richard Guenther <rguent...@suse.de> * tree-vect-data-refs.c (vect_can_force_dr_alignment_p): Allow adjusting alignment of user-aligned decls again. Index: gcc/tree-vect-data-refs.c =================================================================== --- gcc/tree-vect-data-refs.c (revision 188817) +++ gcc/tree-vect-data-refs.c (working copy) @@ -4731,10 +4720,9 @@ 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)) + /* Do not override the alignment as specified by the ABI when the used + attribute is set. */ + if (DECL_PRESERVE_P (decl)) return false; if (TREE_STATIC (decl))