diff options
author | Jakub Jelinek <jakub@redhat.com> | 2013-03-05 10:37:56 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2013-03-05 10:37:56 +0100 |
commit | 93675444333665dd3f22e6d19c914e3247d19312 (patch) | |
tree | d238cfd70adc5ed0083f680fa965447f63f5d5f6 /gcc | |
parent | 3e492e9ca6a1cab0a89cf65a6d2424cb39ee1556 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-vect-loop.c | 3 | ||||
-rw-r--r-- | gcc/tree-vect-stmts.c | 5 |
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 (); } |