https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70623
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Value numbers: _1 = _31 _4 = 1 and <bb 7>: _4 = rc_35 != 0; _31 = _9 == 0; _1 = _4 & _31; if (_1 != 0) which is in the loop we don't converge for ANTIC compute: ... Starting iteration 497 ANTIC_OUT[10] := { _9 (0006) } ANTIC_IN[10] := { _9 (0006), rc_35 (0017), {plus_expr,rc_35,1} (0008) } S[10] := { _9 (0006) } ANTIC_OUT[18] := { _9 (0006), rc_13 (0008) } ANTIC_IN[18] := { _9 (0006), rc_13 (0008) } S[18] := { _9 (0006), rc_13 (0008) } Starting iteration 498 ANTIC_OUT[10] := { } ANTIC_IN[10] := { rc_35 (0017), {plus_expr,rc_35,1} (0008) } S[10] := { } ANTIC_OUT[18] := { rc_13 (0008) } ANTIC_IN[18] := { rc_13 (0008) } S[18] := { rc_13 (0008) } Starting iteration 498 ANTIC_OUT[10] := { } ANTIC_IN[10] := { rc_35 (0017), {plus_expr,rc_35,1} (0008) } S[10] := { } ANTIC_OUT[18] := { _9 (0006), rc_13 (0008) } ANTIC_IN[18] := { _9 (0006), rc_13 (0008) } S[18] := { _9 (0006), rc_13 (0008) } ... Starting iteration 499 ANTIC_OUT[10] := { _9 (0006) } ANTIC_IN[10] := { _9 (0006), rc_35 (0017), {plus_expr,rc_35,1} (0008) } S[10] := { _9 (0006) } ANTIC_OUT[18] := { rc_13 (0008) } ANTIC_IN[18] := { rc_13 (0008) } S[18] := { rc_13 (0008) } I think we're just unlucky here to run into a latent issue (IIRC a similar testcase ICEs on the gcc-5 branch instead). Investigating more closely.