https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98563
--- Comment #13 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Looking at this, I see in PRE: REALPART_EXPR <D.72413[_8]._M_value> = _25; IMAGPART_EXPR <D.72413[_8]._M_value> = _26; _19 = REALPART_EXPR <MEM <struct complex[16]> [(const struct complex &)&D.72413][_8]._M_value>; Should _19 be the same as _25 ? I suspect if this is done, then the vectorizer would kick in and do the right thing.