https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81900
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- So while there is one simple issue with the iteration, fix: @@ -2119,14 +2170,13 @@ static sbitmap has_abnormal_preds; static bool compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge) { - bool changed = false; bitmap_set_t S, old, ANTIC_OUT; bitmap_iterator bi; unsigned int bii; edge e; edge_iterator ei; - bool was_visited = BB_VISITED (block); + bool changed = ! BB_VISITED (block); old = ANTIC_OUT = S = NULL; BB_VISITED (block) = 1; @@ -2217,7 +2267,7 @@ compute_antic_aux (basic_block block, bo /* clean (ANTIC_IN (block)) is defered to after the iteration converged because it can cause non-convergence, see for example PR81181. */ - if (!was_visited || !bitmap_set_equal (old, ANTIC_IN (block))) + if (!bitmap_set_equal (old, ANTIC_IN (block))) changed = true; maybe_dump_sets: there is another issue as we think *_7 is antic and thus hoist the dereference before the _7 == 0 check which will optimize that away as not necessary in a later pass.