aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2021-01-08 14:22:00 +0100
committerRichard Biener <rguenther@suse.de>2021-01-08 14:23:44 +0100
commitb407f233d7c18534fbfe8f74af7f0232498fb0c4 (patch)
treee18dcf9fcaefaf8191d9d16d23655d326cb82e73 /gcc
parentbdcde1504502719504a7a63ab10059e171694dc2 (diff)
downloadgcc-b407f233d7c18534fbfe8f74af7f0232498fb0c4.zip
gcc-b407f233d7c18534fbfe8f74af7f0232498fb0c4.tar.gz
gcc-b407f233d7c18534fbfe8f74af7f0232498fb0c4.tar.bz2
fix vectorizer memleaks
This plugs two memleaks in the vectorizer. 2021-01-08 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (scalar_stmts_to_slp_tree_map_t): Fix. (vect_build_slp_tree): On cache hit release the matched scalar stmts vector. * tree-vect-stmts.c (vectorizable_store): Properly free vec_oprnds before possibly gathering them again.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree-vect-slp.c3
-rw-r--r--gcc/tree-vect-stmts.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index e0f3539..e7191ed 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -1378,7 +1378,7 @@ bst_traits::equal (value_type existing, value_type candidate)
return true;
}
-typedef hash_map <vec <gimple *>, slp_tree,
+typedef hash_map <vec <stmt_vec_info>, slp_tree,
simple_hashmap_traits <bst_traits, slp_tree> >
scalar_stmts_to_slp_tree_map_t;
@@ -1405,6 +1405,7 @@ vect_build_slp_tree (vec_info *vinfo,
{
SLP_TREE_REF_COUNT (*leader)++;
vect_update_max_nunits (max_nunits, (*leader)->max_nunits);
+ stmts.release ();
}
return *leader;
}
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 014f1af..068e498 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -7717,11 +7717,11 @@ vectorizable_store (vec_info *vinfo,
}
}
next_stmt_info = DR_GROUP_NEXT_ELEMENT (next_stmt_info);
+ vec_oprnds.release ();
if (slp)
break;
}
- vec_oprnds.release ();
return true;
}