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.

Reply via email to