https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120895
--- Comment #19 from Jakub Jelinek <jakub at gcc dot gnu.org> --- But I can't reproduce it with gcc 14 nor 13 either. And the right allocator is used in that case as well: #0 0x00007ffff7e12c30 in operator new(unsigned long, std::align_val_t) () from /lib64/libstdc++.so.6 #1 0x0000000000401411 in std::__new_allocator<float __vector(16)>::allocate(unsigned long, void const*) (this=<optimized out>, __n=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/new_allocator.h:122 #2 std::allocator_traits<std::allocator<float __vector(16)> >::allocate(std::allocator<float __vector(16)>&, unsigned long) (__n=<optimized out>, __a=...) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/alloc_traits.h:482 #3 std::_Vector_base<float __vector(16), std::allocator<float __vector(16)> >::_M_allocate(unsigned long) (this=<optimized out>, __n=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:355 #4 std::_Vector_base<float __vector(16), std::allocator<float __vector(16)> >::_M_allocate(unsigned long) (__n=<optimized out>, this=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:352 #5 std::vector<float __vector(16), std::allocator<float __vector(16)> >::_M_realloc_insert<float __vector(16) const&>(__gnu_cxx::__normal_iterator<float __vector(16)*, std::vector<float __vector(16), std::allocator<float __vector(16)> > >, float __vector(16) const&) (this=this@entry=0x7fffffffdcc0, __position=non-dereferenceable iterator for std::vector) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/vector.tcc:426 #6 0x0000000000401553 in std::vector<float __vector(16), std::allocator<float __vector(16)> >::push_back(float __vector(16) const&) (this=this@entry=0x7fffffffdcc0, __x=...) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:1287 #7 0x000000000040115f in main (argc=<optimized out>, argv=<optimized out>) at /app/example.cpp:23 (gdb) c Continuing. Breakpoint 1, 0x00007ffff7e12c30 in operator new(unsigned long, std::align_val_t) () from /lib64/libstdc++.so.6 (gdb) bt #0 0x00007ffff7e12c30 in operator new(unsigned long, std::align_val_t) () from /lib64/libstdc++.so.6 #1 0x0000000000401411 in std::__new_allocator<float __vector(16)>::allocate(unsigned long, void const*) (this=<optimized out>, __n=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/new_allocator.h:122 #2 std::allocator_traits<std::allocator<float __vector(16)> >::allocate(std::allocator<float __vector(16)>&, unsigned long) (__n=<optimized out>, __a=...) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/alloc_traits.h:482 #3 std::_Vector_base<float __vector(16), std::allocator<float __vector(16)> >::_M_allocate(unsigned long) (this=<optimized out>, __n=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:355 #4 std::_Vector_base<float __vector(16), std::allocator<float __vector(16)> >::_M_allocate(unsigned long) (__n=<optimized out>, this=<optimized out>) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:352 #5 std::vector<float __vector(16), std::allocator<float __vector(16)> >::_M_realloc_insert<float __vector(16) const&>(__gnu_cxx::__normal_iterator<float __vector(16)*, std::vector<float __vector(16), std::allocator<float __vector(16)> > >, float __vector(16) const&) (this=this@entry=0x7fffffffdce0, __position=non-dereferenceable iterator for std::vector) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/vector.tcc:426 #6 0x0000000000401553 in std::vector<float __vector(16), std::allocator<float __vector(16)> >::push_back(float __vector(16) const&) (this=this@entry=0x7fffffffdce0, __x=...) at /opt/compiler-explorer/gcc-13.1.0/include/c++/13.1.0/bits/stl_vector.h:1287 #7 0x000000000040116a in main (argc=<optimized out>, argv=<optimized out>) at /app/example.cpp:24 I'm using -mavx512f option (or -O2 -mavx512f, both work fine).