diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2005-06-05 20:07:43 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2005-06-05 18:07:43 +0000 |
commit | d5ab56750864fa89c06a33d2f2d8e532d8b6b76a (patch) | |
tree | cfeafcc33d51ab68e1c5e4385dfbe70b56fbca72 /gcc/tree-ssa-loop-niter.c | |
parent | 86403f0f329ea996b6323d4011d5da0111ab80d8 (diff) | |
download | gcc-d5ab56750864fa89c06a33d2f2d8e532d8b6b76a.zip gcc-d5ab56750864fa89c06a33d2f2d8e532d8b6b76a.tar.gz gcc-d5ab56750864fa89c06a33d2f2d8e532d8b6b76a.tar.bz2 |
re PR middle-end/21846 (segfault in fold_binary compiling vpr with -O2 -funroll-loops)
PR tree-optimization/21846
* tree-cfg.c (replace_uses_by): Update information stored at loops.
* tree-flow.h (substitute_in_loop_info): Declare.
* tree-scalar-evolution.c (initialize_scalar_evolutions_analyzer):
Ensure that chrec_dont_know and chrec_known have a type.
* tree-ssa-loop-niter.c (substitute_in_loop_info): New function.
From-SVN: r100631
Diffstat (limited to 'gcc/tree-ssa-loop-niter.c')
-rw-r--r-- | gcc/tree-ssa-loop-niter.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c index 38f7b42..78f14e9 100644 --- a/gcc/tree-ssa-loop-niter.c +++ b/gcc/tree-ssa-loop-niter.c @@ -1600,3 +1600,21 @@ free_numbers_of_iterations_estimates (struct loops *loops) free_numbers_of_iterations_estimates_loop (loop); } } + +/* Substitute value VAL for ssa name NAME inside expressions held + at LOOP. */ + +void +substitute_in_loop_info (struct loop *loop, tree name, tree val) +{ + struct nb_iter_bound *bound; + + loop->nb_iterations = simplify_replace_tree (loop->nb_iterations, name, val); + loop->estimated_nb_iterations + = simplify_replace_tree (loop->estimated_nb_iterations, name, val); + for (bound = loop->bounds; bound; bound = bound->next) + { + bound->bound = simplify_replace_tree (bound->bound, name, val); + bound->additional = simplify_replace_tree (bound->additional, name, val); + } +} |