On Fri, Jan 9, 2009 at 4:31 PM, Ian Lance Taylor <i...@google.com> wrote: > "Richard Guenther" <richard.guent...@gmail.com> writes: > >>> There are many ways to align data without exposing it in the >>> ABI--e.g., the alignment of a global array is not part of the ABI, in >>> that nothing breaks if the alignment is increased. Also, there are >>> many programs which simply don't care about an external ABI. >> >> I'd say if programs want to use vectorization they should use >> alignof (vector_type) instead of a magic attribute((aligned(max))). > > It's not that programs explicitly want to use vectorization. It's > that auto-vectorization happens on ordinary scalar types, and programs > want to permit that to happen without worrying about the details.
Sure. The vectorizer increases alignment of variables for this reason. But as people cannot adjust their memory allocator behavior they cannot use attribute((aligned(max))) for that either. Or do you suggest they should stick that on every decl? (which is what the autovectorizer does) > (I've had my code crash because gcc autovectorized it but the x86 > malloc did not return the alignment which gcc expected. This happened > without any vector types being involved at all. Not that that proves > anything one way or another about attribute ((aligned)).) Right. Richard. > Ian >