Patchwork Fix PR53708

login
register
mail settings
Submitter Richard Guenther
Date June 20, 2012, 9:50 a.m.
Message ID <alpine.LNX.2.00.1206201149490.5191@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/165972/
State New
Headers show

Comments

Richard Guenther - June 20, 2012, 9:50 a.m.
On Tue, 19 Jun 2012, Dominique Dhumieres wrote:

> On Tue, 19 Jun 2012, Richard Guenther wrote:
> > 
> > > Richard Guenther <rguenther@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  <rguenther@suse.de>

	* tree-vect-data-refs.c (vect_can_force_dr_alignment_p):
	Allow adjusting alignment of user-aligned decls again.

Patch

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))