https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61301
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |10.0 Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Been fixed since GCC 10. shuffle1(float vector[4]): shufps xmm0, xmm0, 177 ret shuffle2(float vector[4] const&): movaps xmm0, XMMWORD PTR [rdi] shufps xmm0, xmm0, 177 ret shuffle3(float vector[4] const&): movaps xmm0, XMMWORD PTR [rdi] shufps xmm0, xmm0, 177 ret foo::shuffle2() const: movaps xmm0, XMMWORD PTR [rdi] shufps xmm0, xmm0, 177 ret foo::shuffle3() const: movaps xmm0, XMMWORD PTR [rdi] shufps xmm0, xmm0, 177 ret SLP is able to handle it.