re PR tree-optimization/82129 (ICE in compute_antic, at tree-ssa-pre.c:2447)
authorRichard Biener <rguenther@suse.de>
Mon, 23 Oct 2017 11:14:40 +0000 (11:14 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Mon, 23 Oct 2017 11:14:40 +0000 (11:14 +0000)
2017-10-23  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82129
Revert
2017-08-01  Richard Biener  <rguenther@suse.de>

PR tree-optimization/81181
* tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
(compute_antic): ... end of iteration here.

From-SVN: r254005

gcc/ChangeLog
gcc/tree-ssa-pre.c

index ebda3cd5500f71d009452524826cf69d7c6236db..3ed0c4e42d84c2f5321b1a52db13459c81945ded 100644 (file)
@@ -1,3 +1,13 @@
+2017-10-23  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/82129
+       Revert
+       2017-08-01  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/81181
+       * tree-ssa-pre.c (compute_antic_aux): Defer clean() to ...
+       (compute_antic): ... end of iteration here.
+
 2017-10-23  Richard Sandiford  <richard.sandiford@linaro.org>
 
        * target.def (starting_frame_offset): New hook.
index 4861a4c231fbe605f7b6a4d5c699ec20a9252220..cad7934f23e67b8cb3c8d0b07fc24dc2e2bab445 100644 (file)
@@ -2082,8 +2082,7 @@ static sbitmap has_abnormal_preds;
      ANTIC_OUT[BLOCK] = phi_translate (ANTIC_IN[succ(BLOCK)])
 
    ANTIC_IN[BLOCK] = clean(ANTIC_OUT[BLOCK] U EXP_GEN[BLOCK] - TMP_GEN[BLOCK])
-
-   Note that clean() is deferred until after the iteration.  */
+*/
 
 static bool
 compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
@@ -2219,8 +2218,7 @@ compute_antic_aux (basic_block block, bool block_has_abnormal_pred_edge)
     bitmap_value_insert_into_set (ANTIC_IN (block),
                                  expression_for_id (bii));
 
-  /* clean (ANTIC_IN (block)) is defered to after the iteration converged
-     because it can cause non-convergence, see for example PR81181.  */
+  clean (ANTIC_IN (block));
 
   if (!bitmap_set_equal (old, ANTIC_IN (block)))
     changed = true;
@@ -2453,12 +2451,6 @@ compute_antic (void)
       gcc_checking_assert (num_iterations < 500);
     }
 
-  /* We have to clean after the dataflow problem converged as cleaning
-     can cause non-convergence because it is based on expressions
-     rather than values.  */
-  FOR_EACH_BB_FN (block, cfun)
-    clean (ANTIC_IN (block));
-
   statistics_histogram_event (cfun, "compute_antic iterations",
                              num_iterations);