https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120895
--- Comment #21 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Ah, so you're clearly using __m512 without -mavx512f. Self-inflicted pain. It is correct that __alignof__ (__m512) is in that case just 64 and alignof (__m512) is 16, the latter is min_align_of_type, minimum alignment of the type while the former is TYPE_ALIGN_UNIT. When neither AVX nor AVX512F is enabled, the maximum supported type has 128-bit alignment (16-byte vectors), all larger vectors are emulated. libstdc++ clearly uses alignof rather than __alignof__ for the check which new to use.