diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-30 00:32:04 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-11-30 00:32:04 +0000 |
commit | ce9e2cc1f19e7d3163766917588edd1ad389bd96 (patch) | |
tree | 573fc12944ab74427d5b1d5768b2a39ac6ed4847 /gcc/tree-scalar-evolution.c | |
parent | a1cdd5678a79f6a5e16f0d90d15f5ed2c7b5a99b (diff) | |
download | gcc-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.c | 13 |
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; |