aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2020-10-29 17:02:13 +0100
committerRichard Biener <rguenther@suse.de>2020-10-29 18:38:43 +0100
commit57ec9b687b0c1d83e477b7b7433c11d814489259 (patch)
treedd3fac075d9e3b7875831d4f8ba7773b9267a536 /gcc
parent8895443a42db4045aad8e4b42cd5dd2ad6ffa7d7 (diff)
downloadgcc-57ec9b687b0c1d83e477b7b7433c11d814489259.zip
gcc-57ec9b687b0c1d83e477b7b7433c11d814489259.tar.gz
gcc-57ec9b687b0c1d83e477b7b7433c11d814489259.tar.bz2
Fix some memleaks
This fixes some memleaks, one older, one recently introduced. 2020-10-29 Richard Biener <rguenther@suse.de> * tree-ssa-pre.c (compute_avail): Free operands consistently. * tree-vect-loop.c (vectorizable_phi): Make sure all operand defs vectors are released.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-ssa-pre.c5
-rw-r--r--gcc/tree-vect-loop.c2
2 files changed, 5 insertions, 2 deletions
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 63f3a81..bcef972 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -3953,7 +3953,10 @@ compute_avail (void)
adding the reference to EXP_GEN. */
if (BB_MAY_NOTRETURN (block)
&& vn_reference_may_trap (ref))
- continue;
+ {
+ operands.release ();
+ continue;
+ }
/* If the value of the reference is not invalidated in
this block until it is computed, add the expression
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 75b7314..5ab125d 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -7570,7 +7570,6 @@ vectorizable_phi (vec_info *,
tree scalar_dest = gimple_phi_result (stmt_info->stmt);
basic_block bb = gimple_bb (stmt_info->stmt);
tree vec_dest = vect_create_destination_var (scalar_dest, vectype);
- auto_vec<tree> vec_oprnds;
auto_vec<gphi *> new_phis;
for (unsigned i = 0; i < gimple_phi_num_args (stmt_info->stmt); ++i)
{
@@ -7581,6 +7580,7 @@ vectorizable_phi (vec_info *,
&& SLP_TREE_VEC_STMTS (child).is_empty ())
continue;
+ auto_vec<tree> vec_oprnds;
vect_get_slp_defs (SLP_TREE_CHILDREN (slp_node)[i], &vec_oprnds);
if (!new_phis.exists ())
{