aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/tree-ssanames.c5
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ac75869..e860055 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2018-01-29 Richard Biener <rguenther@suse.de>
+ PR tree-optimization/84086
+ * tree-ssanames.c: Include cfgloop.h and tree-scalar-evolution.h.
+ (flush_ssaname_freelist): When SSA names were released reset
+ the SCEV hash table.
+
+2018-01-29 Richard Biener <rguenther@suse.de>
+
PR tree-optimization/84057
* tree-ssa-loop-ivcanon.c (unloop_loops): Deal with already
removed paths when removing edges.
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index dffaa17..6cce43b 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -29,6 +29,8 @@ along with GCC; see the file COPYING3. If not see
#include "stor-layout.h"
#include "tree-into-ssa.h"
#include "tree-ssa.h"
+#include "cfgloop.h"
+#include "tree-scalar-evolution.h"
/* Rewriting a function into SSA form can create a huge number of SSA_NAMEs,
many of which may be thrown away shortly after their creation if jumps
@@ -241,6 +243,9 @@ verify_ssaname_freelists (struct function *fun)
void
flush_ssaname_freelist (void)
{
+ /* If there were any SSA names released reset the SCEV cache. */
+ if (! vec_safe_is_empty (FREE_SSANAMES_QUEUE (cfun)))
+ scev_reset_htab ();
vec_safe_splice (FREE_SSANAMES (cfun), FREE_SSANAMES_QUEUE (cfun));
vec_safe_truncate (FREE_SSANAMES_QUEUE (cfun), 0);
}