aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-complex.c
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2005-07-19 03:36:15 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2005-07-19 03:36:15 +0000
commitb9d3348810a657d5b64e23cb6f098bd7d479191b (patch)
tree880e6bcccb700c5d4ffc320ff94104a03e895fc9 /gcc/tree-complex.c
parent9fa264571da0247ed1b0d0d0e64897f7b3731c50 (diff)
downloadgcc-b9d3348810a657d5b64e23cb6f098bd7d479191b.zip
gcc-b9d3348810a657d5b64e23cb6f098bd7d479191b.tar.gz
gcc-b9d3348810a657d5b64e23cb6f098bd7d479191b.tar.bz2
re PR tree-optimization/22483 (ICE : tree check: expected ssa_name, have var_decl in is_old_name, at tree-into-ssa.c:466)
2005-07-18 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/22483 * tree-complex.c (create_components): Use safe_referenced_var_iterator and FOR_EACH_REFERENCED_VAR_SAFE. * tree-flow-inline.h (fill_referenced_var_vec): New function. * tree-flow.h (safe_referenced_var_iterator): New structure. (FOR_EACH_REFERENCED_VAR_SAFE): New macro. * tree-ssa-alias.c (setup_pointers_and_addressables): Use safe_referenced_var iterator. (add_type_alias): Ditto. From-SVN: r102150
Diffstat (limited to 'gcc/tree-complex.c')
-rw-r--r--gcc/tree-complex.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 21e9245..54f3ace 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -386,7 +386,8 @@ create_components (void)
{
size_t n;
tree var;
- referenced_var_iterator rvi;
+ safe_referenced_var_iterator rvi;
+ VEC (tree, heap) *refvars;
n = num_referenced_vars;
if (n == 0)
@@ -395,7 +396,7 @@ create_components (void)
complex_variable_components = htab_create (10, int_tree_map_hash,
int_tree_map_eq, free);
- FOR_EACH_REFERENCED_VAR (var, rvi)
+ FOR_EACH_REFERENCED_VAR_SAFE (var, refvars, rvi)
{
tree r = NULL, i = NULL;
@@ -442,6 +443,7 @@ create_components (void)
cvc_insert (2 * DECL_UID (var), r);
cvc_insert (2 * DECL_UID (var) + 1, i);
}
+ VEC_free (tree, heap, refvars);
}
/* Extract the real or imaginary part of a complex variable or constant.