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


Reply via email to