https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51017
--- Comment #15 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Alexander Peslyak from comment #12) > (In reply to Richard Biener from comment #11) > > I wonder if you could share the exact CPU type you are using? > > This is on (dual) Xeon E5420 (using only one core for these benchmarks), but > there was similar slowdown with GCC 4.6 on other Core 2'ish CPUs as well > (such as desktop Core 2 Duo CPUs). You might not call these "modern". > > > Note that we have to use movups because [...] > > Thank you for looking into this. I still have a question, though: does this > mean you're treating older GCC's behavior, where it dared to use movaps > anyway, a bug? If you used intrinsics for aligned loads then no. > I was under impression that with most SSE*/AVX* intrinsics (except for those > explicitly defined to do unaligned loads/stores) natural alignment is > assumed and is supposed to be provided by the programmer. Not only with GCC, > but with compilers for x86(-64) in general. I thought this was part of the > contract: I use intrinsics and I guarantee alignment. (Things would > certainly not work for me at least with older GCC if I assumed the compiler > would use unaligned loads whenever it was unsure of alignment.) Was I wrong, > or has this changed (in GCC? or in some compiler-neutral specification?), or > is GCC wrong in not assuming alignment now? GCC was changed to be more permissive to broken programs and also intrinsics were changed to map to plain C code in some cases (thus they are not visible as intrinsics to the compiler). > Is there a command-line option to ask GCC to assume alignment, like it did > before? No.