summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-23 11:14:40 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2017-10-23 11:14:40 +0000
commit79bc16204aee74b82300f2088e0789cf1311e753 (patch)
tree414a95aaa8dba5d46f3e33f344a5aba398146f5f
parentea3b0bfac3fe5cd2a1cadc3146243320e49ee429 (diff)
downloadgcc-79bc16204aee74b82300f2088e0789cf1311e753.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254005 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/tree-ssa-pre.c12
2 files changed, 12 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ebda3cd5500..3ed0c4e42d8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 4861a4c231f..cad7934f23e 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -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);