https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103771
--- Comment #34 from Jeffrey A. Law <law at gcc dot gnu.org> --- I've always wanted to see us be able to push something like those matched conversions down through the PHI. That would make the code look like: if (x.1_1 > 255) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : _2 = -x_5(D); _3 = _2 >> 31; goto <bb 5>; [INV] <bb 4> : <bb 5> : # tmp = PHI <_3, x_5(4)> iftmp.0_4 = (uint8_t) tmp And presumably we'd clean up the empty bb4 which would in turn unblock other optimizations. Is that what you're working on?