aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2005-06-05 20:07:43 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2005-06-05 18:07:43 +0000
commitd5ab56750864fa89c06a33d2f2d8e532d8b6b76a (patch)
treecfeafcc33d51ab68e1c5e4385dfbe70b56fbca72 /gcc/tree-cfg.c
parent86403f0f329ea996b6323d4011d5da0111ab80d8 (diff)
downloadgcc-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-cfg.c')
-rw-r--r--gcc/tree-cfg.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 2776f21..6108dd8 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -1264,6 +1264,19 @@ replace_uses_by (tree name, tree val)
}
VEC_free (tree, heap, stmts);
+
+ /* Also update the trees stored in loop structures. */
+ if (current_loops)
+ {
+ struct loop *loop;
+
+ for (i = 0; i < current_loops->num; i++)
+ {
+ loop = current_loops->parray[i];
+ if (loop)
+ substitute_in_loop_info (loop, name, val);
+ }
+ }
}
/* Merge block B into block A. */