Contenedor para `__m256` Producir falla de segmentación con el constructor - Windows 64 + MinGW + AVX Issues

Tengo una unión que se ve así

 union bareVec8f { 
    __m256 m256; //avx 8x float vector
    float floats[8];
    int ints[8];
    inline bareVec8f(){
    }
    inline bareVec8f(__m256 vec){
        this->m256 = vec;
    }
    inline bareVec8f &operator=(__m256 m256) {
        this->m256 = m256;
        return *this;
    }

    inline operator __m256 &() {
        return m256;
    }
}

El __m256 debe alinearse en el límite de 32 bytes para usarse con las funciones SSE, y debe estar automáticamente, incluso dentro de la unión.

Y cuando hago esto

bareVec8f test = _mm256_set1_ps(1.0f);

Me sale una falla de segmentación. Este código debería funcionar debido al constructor que hice. Sin embargo, cuando hago esto

bareVec8f test;
test.m256 = _mm256_set1_ps(8.f);

No obtengo una falla de segmentación.

Entonces, debido a que funciona bien, la unión probablemente esté alineada correctamente, parece que se está produciendo una falla de segmentación con el constructor.

Estoy usando el compilador de Windows gcc 64bit

--------------------------------- EDITAR Matt logró producir el ejemplo más simple del error que parece estar sucediendo aquí .

#include <immintrin.h>

void foo(__m256 x) {}

int main()
{
    __m256 r = _mm256_set1_ps(0.0f);
    foo(r);
}

Estoy compilando con-std=c++11 -mavx

Respuestas a la pregunta(1)

Su respuesta a la pregunta