aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-03-05 10:37:56 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2013-03-05 10:37:56 +0100
commit93675444333665dd3f22e6d19c914e3247d19312 (patch)
treed238cfd70adc5ed0083f680fa965447f63f5d5f6 /gcc
parent3e492e9ca6a1cab0a89cf65a6d2424cb39ee1556 (diff)
downloadgcc-93675444333665dd3f22e6d19c914e3247d19312.zip
gcc-93675444333665dd3f22e6d19c914e3247d19312.tar.gz
gcc-93675444333665dd3f22e6d19c914e3247d19312.tar.bz2
re PR middle-end/56461 (GCC is leaking lots of memory)
PR middle-end/56461 * tree-vect-stmts.c (free_stmt_vec_info_vec): Call free_stmt_vec_info on any left-over stmt_vec_info in the vector. * tree-vect-loop.c (vect_create_epilog_for_reduction): Release inner_phis vector. From-SVN: r196453
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-vect-loop.c3
-rw-r--r--gcc/tree-vect-stmts.c5
3 files changed, 15 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 56d6b41..bc0500c 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2013-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/56461
+ * tree-vect-stmts.c (free_stmt_vec_info_vec): Call
+ free_stmt_vec_info on any left-over stmt_vec_info in the vector.
+ * tree-vect-loop.c (vect_create_epilog_for_reduction): Release
+ inner_phis vector.
+
2013-03-05 Richard Biener <rguenther@suse.de>
PR lto/56515
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 8be53bb..1252c5a 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -4487,8 +4487,9 @@ vect_finalize_reduction:
}
scalar_results.release ();
+ inner_phis.release ();
new_phis.release ();
-}
+}
/* Function vectorizable_reduction.
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index e5604fa..a714428 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -5969,6 +5969,11 @@ init_stmt_vec_info_vec (void)
void
free_stmt_vec_info_vec (void)
{
+ unsigned int i;
+ vec_void_p info;
+ FOR_EACH_VEC_ELT (stmt_vec_info_vec, i, info)
+ if (info != NULL)
+ free_stmt_vec_info (STMT_VINFO_STMT ((stmt_vec_info) info));
gcc_assert (stmt_vec_info_vec.exists ());
stmt_vec_info_vec.release ();
}