https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83325
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- <bb 36> [local count: 78951607]: # ou_lsm.117_263 = PHI <ou_lsm.117_385(94), ou_lsm.117_262(35)> # mb_lsm.120_277 = PHI <mb_lsm.120_388(94), mb_lsm.120_441(35)> mb.74_96 = mb_lsm.120_277; if (mb.74_96 <= 1) goto <bb 11>; [36.00%] else goto <bb 37>; [64.00%] <bb 34> [local count: 28422578]: # ou_lsm.117_262 = PHI <ou_lsm.117_260(29), ou_lsm.117_261(33)> l7.72_93 = l7; if (l7.72_93 <= 0) goto <bb 30>; [36.00%] else goto <bb 35>; [64.00%] # ou_lsm.117_261 = PHI <ou_lsm.117_448(32), ou_lsm.117_263(37)> <bb 33> [local count: 60761156]: jk: l7.71_91 = l7; _92 = l7.71_91 + 1; l7 = _92; Value numbering ou_lsm.117_385 stmt = ou_lsm.117_385 = 0; Value numbering ou_lsm.117_260 stmt = ou_lsm.117_260 = PHI <ou_lsm.117_259(27), ou_lsm.117_399(28)> Setting value number of ou_lsm.117_260 to 1 Value numbering ou_lsm.117_448 stmt = ou_lsm.117_448 = 1; RHS 1 simplified to 1 so we have # ou_lsm.117_263 = PHI <0(94), ou_lsm.117_262(35)> # ou_lsm.117_262 = PHI <1(29), ou_lsm.117_261(33)> # ou_lsm.117_261 = PHI <1(32), ou_lsm.117_263(37)> but we value number the PHIs to other PHIs. Looks like this doesn't work well for cycles... Need to debug this in more detail.