]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/58656 (rnflow regressing after r202826)
authorRichard Biener <rguenther@suse.de>
Thu, 10 Oct 2013 14:07:19 +0000 (14:07 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 10 Oct 2013 14:07:19 +0000 (14:07 +0000)
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

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

index 61efb9e674f2ef1af67dea9ba47f3cf7823c7bb1..06d5c986914c93062c50dbc01edac89d38f1f8d1 100644 (file)
@@ -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
index 50027ebffe8c0a053edd80bed115b2f2e060b6be..946de8f3d52fe4a87b2806aa90d008f78ae08268 100644 (file)
@@ -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;
 }