aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2013-10-10 14:07:19 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2013-10-10 14:07:19 +0000
commite2c2fde2105b83ec8c4fcc664969df2437467c36 (patch)
treefc755051b75f46c3aa2262fb9734e192c371292c
parent20921a97e16f3f6fe229b7a8463e63d6d6b65f98 (diff)
downloadgcc-e2c2fde2105b83ec8c4fcc664969df2437467c36.zip
gcc-e2c2fde2105b83ec8c4fcc664969df2437467c36.tar.gz
gcc-e2c2fde2105b83ec8c4fcc664969df2437467c36.tar.bz2
re PR tree-optimization/58656 (rnflow regressing after r202826)
2013-10-10 Richard Biener <rguenther@suse.de> PR tree-optimization/58656 * tree-ssa-pre.c (phi_translate): Do not cache failed translations. From-SVN: r203377
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-pre.c9
2 files changed, 14 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 61efb9e..06d5c98 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-10-10 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/58656
+ * tree-ssa-pre.c (phi_translate): Do not cache failed
+ translations.
+
2013-10-10 Andrew MacLeod <amacleod@redhat.com>
* gimplify.c: Include expr.h and tm_p.h for targets with special va-arg
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 50027eb..946de8f 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -1758,7 +1758,14 @@ phi_translate (pre_expr expr, bitmap_set_t set1, bitmap_set_t set2,
phitrans = phi_translate_1 (expr, set1, set2, pred, phiblock);
if (slot)
- slot->v = phitrans;
+ {
+ if (phitrans)
+ slot->v = phitrans;
+ else
+ /* Remove failed translations again, they cause insert
+ iteration to not pick up new opportunities reliably. */
+ phi_translate_table.remove_elt_with_hash (slot, slot->hashcode);
+ }
return phitrans;
}