From e2c2fde2105b83ec8c4fcc664969df2437467c36 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 10 Oct 2013 14:07:19 +0000 Subject: [PATCH] re PR tree-optimization/58656 (rnflow regressing after r202826) 2013-10-10 Richard Biener PR tree-optimization/58656 * tree-ssa-pre.c (phi_translate): Do not cache failed translations. From-SVN: r203377 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-pre.c | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) 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 + + PR tree-optimization/58656 + * tree-ssa-pre.c (phi_translate): Do not cache failed + translations. + 2013-10-10 Andrew MacLeod * 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; } -- 2.7.4