https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64164
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> --- That is, it is good # _30 = PHI <0(2), _10(8), value_33(7), value_33(3), value_33(6)> return _30; vs bad # _30 = PHI <0(2), _10(8), _33(7), _33(3), _33(6)> return _30; where it thinks that coalescing _30 and _33 is more important than coalescing _30 and _10 (which looks reasonable). The question is why RTL opts make such large difference out of this.