https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115544
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Note the gimple stmt/complex_expr in this case: _6 = COMPLEX_EXPR <a.0_1, 0>; where _6 is fully unused. Complex lowering changes: _6 = COMPLEX_EXPR <a.0_1, 0>; _2 = REALPART_EXPR <_6>; into: _6 = COMPLEX_EXPR <a.0_1, 0>; _2 = a.0_1; Which is totally correct though it does not do any DCE. I am not sure if complex lowering should do some simple DCE or if it matters if it does not do it.