https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83391
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Before that commit, we had: <bb 9> [local count: 357878150]: # iftmp.0_19 = PHI <iftmp.0_11(8), 0(17), 0(12)> <L15>: # DEBUG i => iftmp.0_19 # DEBUG e => 0 if (iftmp.0_19 != 0) before dom2 and dom2 turned it into: <bb 8> [local count: 275904678]: # iftmp.0_45 = PHI <iftmp.0_11(7), 0(13)> <L15>: <bb 9> [local count: 357878150]: # iftmp.0_19 = PHI <iftmp.0_45(8), 0(10)> # DEBUG i => iftmp.0_19 # DEBUG e => 0 if (iftmp.0_19 != 0) After that change, we have before dom2: <bb 9> [local count: 357878150]: # iftmp.0_19 = PHI <iftmp.0_11(8), 0(17), 0(12)> # DEBUG i => iftmp.0_19 # DEBUG e => 0 <L15>: if (iftmp.0_19 != 0) and dom2 turns that into: <bb 8> [local count: 275904678]: # iftmp.0_45 = PHI <iftmp.0_11(7), 0(13)> # DEBUG i => iftmp.0_19 # DEBUG e => 0 <L15>: <bb 9> [local count: 357878150]: # iftmp.0_19 = PHI <iftmp.0_45(8), 0(10)> if (iftmp.0_19 != 0) which is of course invalid.