On 6/25/24 12:23, Jan Hubicka wrote:
The value vec objects are destroyed on exit, but release still needs to
be called explicitly.
gcc/ChangeLog:
* tree-profile.cc (find_conditions): Release vectors before
return.
I wonder if you turn
hash_map<int_hash<unsigned, 0>, vec<basic_block>> exprs;
to
hash_map<int_hash<unsigned, 0>, auto_vec<basic_block>> exprs;
Won't hash_map destructor take care of this by itself?
It does, actually - I think I tried something to that effect at one
point and the auto_vec's non-copy semantics got in the way. Apparently I
either misremember trying, or I did something differently at the time.
auto_vec is much nicer, of course, I'll update the patch. Thanks!
Honza
---
gcc/tree-profile.cc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc
index e4bb689cef5..18f48e8d04e 100644
--- a/gcc/tree-profile.cc
+++ b/gcc/tree-profile.cc
@@ -919,6 +919,9 @@ find_conditions (struct function *fn)
if (!have_post_dom)
free_dominance_info (fn, CDI_POST_DOMINATORS);
+ for (auto expr : exprs)
+ expr.second.release ();
+
cov->m_masks.safe_grow_cleared (2 * cov->m_index.last ());
const size_t length = cov_length (cov);
for (size_t i = 0; i != length; i++)
--
2.39.2