https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98317
Bug ID: 98317 Summary: Vector Extensions aligned(1) not generating unaligned loads/stores Product: gcc Version: 10.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: danielhanchen at gmail dot com Target Milestone: --- The ordering of aligned(1) causes GCC to generate movaps / movups. typedef float float128_tv1 __attribute__ ((aligned(1), vector_size(16))); typedef float float128_tv2 __attribute__ ((vector_size(16), aligned(1))); float128_tv1 provides MOVAPS float128_tv2 provides MOVUPS It seems like the ordering of the arguments changes the assembly. https://gcc.godbolt.org/z/5qs7e7 It seems like GCC 10.2 and 9.2 all have this issue. Unless if this was already documentated, this issue can cause massive issues if memory is unaligned and an aligned load/store is used instead.