https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68855
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I wonder if lower complex should do a better job in the first place: that is from: _9 = _8 + __complex__ (6.0e+0, 1.0e+0); _11 = ((_9)); (*a_7(D))[_6] = _11; instead of producing: _9 = COMPLEX_EXPR <_15, _14>; _11 = ((_9)); _19 = REALPART_EXPR <_11>; _20 = IMAGPART_EXPR <_11>; It should produce: _19 = ((_15)); _20 = ((_24)); Instead. that is expand PAREN_EXPR into its components.