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
