#include struct X { alignas(32) __m256 d; }; void g1(X); void g2(const X&); void g3(const void *); void f(float *ptr) { X x = {_mm256_load_ps(ptr)}; g1(x); // BUG: passes via unaligned (whatever rsp alignment is) stack g2(x); // OK: passes via aligned stack location g3(&x); // OK: passes via aligned stack location }