https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120799
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|sanitizer |target Target| |x86_64-*-* --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- The implementation suggests it is not OK: extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__)) _mm_storel_pd (double *__P, __m128d __A) { *__P = ((__v2df)__A)[0]; } Note the x86 architecture itself is fine with misaligned scalar accesses but the C standard says the above invokes UB. In case the intrinsics explicitly or implicitly say otherwise the intrinsic implementation has to be adjusted to receive an unaligned 'double' destination pointer. In case the official intrisic documentation has the above prototype then passing an unaligned pointer is UB (the act of converting that to double * is already).