aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfgcleanup.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-02-27 15:01:08 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2013-02-27 15:01:08 +0100
commit6fa5e0ed90b7c720526aaf00987828b50165d19a (patch)
treef2b0dbceeb47d6576b17174120930c4e096ff48e /gcc/tree-cfgcleanup.c
parentd809887a669e7c2c709d1ca37d2f0e44ecfdb341 (diff)
downloadgcc-6fa5e0ed90b7c720526aaf00987828b50165d19a.zip
gcc-6fa5e0ed90b7c720526aaf00987828b50165d19a.tar.gz
gcc-6fa5e0ed90b7c720526aaf00987828b50165d19a.tar.bz2
re PR middle-end/56461 (GCC is leaking lots of memory)
PR middle-end/56461 * tree-flow.h (edge_var_map_vector): Change into va_heap, vl_embed vector. * tree-ssa.c (redirect_edge_var_map_add): Use vec_safe_reserve and vec_safe_push, always update *slot. (redirect_edge_var_map_clear): Use vec_free. (redirect_edge_var_map_dup): Use vec_safe_copy and vec_safe_reserve. (free_var_map_entry): Use vec_free. * tree-cfgcleanup.c (remove_forwarder_block_with_phi): Use FOR_EACH_VEC_SAFE_ELT instead of FOR_EACH_VEC_ELT. From-SVN: r196313
Diffstat (limited to 'gcc/tree-cfgcleanup.c')
-rw-r--r--gcc/tree-cfgcleanup.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index 94e616b..064d994 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -822,7 +822,7 @@ remove_forwarder_block_with_phi (basic_block bb)
redirection, replace it with the PHI argument that used
to be on E. */
head = redirect_edge_var_map_vector (e);
- FOR_EACH_VEC_ELT (*head, i, vm)
+ FOR_EACH_VEC_SAFE_ELT (head, i, vm)
{
tree old_arg = redirect_edge_var_map_result (vm);
tree new_arg = redirect_edge_var_map_def (vm);