diff options
author | Zdenek Dvorak <ook@ucw.cz> | 2007-11-30 01:32:04 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-11-30 00:32:04 +0000 |
commit | 13285d512dac6411da329c63f6a52b81e88df7a1 (patch) | |
tree | 573fc12944ab74427d5b1d5768b2a39ac6ed4847 /gcc/tree-scalar-evolution.c | |
parent | 54bded776c12100d755e2976fbd5f1b6733ea64b (diff) | |
download | gcc-13285d512dac6411da329c63f6a52b81e88df7a1.zip gcc-13285d512dac6411da329c63f6a52b81e88df7a1.tar.gz gcc-13285d512dac6411da329c63f6a52b81e88df7a1.tar.bz2 |
re PR tree-optimization/34244 (VRP/SCEV miscompiles Firefox)
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.
From-SVN: r130527
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 cc80794..262ec76 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; |