https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88542
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Richard Biener from comment #3) > not sure why that only happens in the last phiopt pass. Ah, because > the main phiopt pass sees the following: > > <bb 2> [local count: 1073741825]: > if (d_3(D) < max_4(D)) > goto <bb 3>; [50.00%] > else > goto <bb 4>; [50.00%] > > <bb 3> [local count: 536870912]: > _1 = -max_4(D); > if (_1 < d_3(D)) > goto <bb 5>; [50.00%] > else > goto <bb 4>; [50.00%] > > <bb 4> [local count: 805306368]: > > <bb 5> [local count: 1073741825]: > # iftmp.0_2 = PHI <1(3), 0(4)> The above issue of not doing the phiopt early was solved finally by r12-5300-gf98f373dd822b35c.