summaryrefslogtreecommitdiff
path: root/gcc/tree-scalar-evolution.c
diff options
context:
space:
mode:
authorrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-30 00:32:04 +0000
committerrakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4>2007-11-30 00:32:04 +0000
commitce9e2cc1f19e7d3163766917588edd1ad389bd96 (patch)
tree573fc12944ab74427d5b1d5768b2a39ac6ed4847 /gcc/tree-scalar-evolution.c
parenta1cdd5678a79f6a5e16f0d90d15f5ed2c7b5a99b (diff)
downloadgcc-ce9e2cc1f19e7d3163766917588edd1ad389bd96.tar.gz
PR tree-optimization/34244
* tree-vrp.c (adjust_range_with_scev): Clear scev cache. (record_numbers_of_iterations): New function. (execute_vrp): Cache the numbers of iterations of loops. * tree-scalar-evolution.c (scev_reset_except_niters): New function. (scev_reset): Use scev_reset_except_niters. * tree-scalar-evolution.h (scev_reset_except_niters): Declare. * gcc.dg/tree-ssa/pr34244.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130527 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-scalar-evolution.c')
-rw-r--r--gcc/tree-scalar-evolution.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c
index cc80794c5d9..262ec764b30 100644
--- a/gcc/tree-scalar-evolution.c
+++ b/gcc/tree-scalar-evolution.c
@@ -2608,6 +2608,16 @@ scev_initialize (void)
}
}
+/* Clean the scalar evolution analysis cache, but preserve the cached
+ numbers of iterations for the loops. */
+
+void
+scev_reset_except_niters (void)
+{
+ if (scalar_evolution_info)
+ htab_empty (scalar_evolution_info);
+}
+
/* Cleans up the information cached by the scalar evolutions analysis. */
void
@@ -2619,7 +2629,8 @@ scev_reset (void)
if (!scalar_evolution_info || !current_loops)
return;
- htab_empty (scalar_evolution_info);
+ scev_reset_except_niters ();
+
FOR_EACH_LOOP (li, loop, 0)
{
loop->nb_iterations = NULL_TREE;