]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Use auto_vec in ssa_equiv_stack.
authorAldy Hernandez <aldyh@redhat.com>
Thu, 10 Jun 2021 07:20:30 +0000 (09:20 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Thu, 10 Jun 2021 15:03:27 +0000 (17:03 +0200)
There is a mismatch between the new and the delete for the
ssa_equiv_stack class.  The correct idiom should have been delete[].
It has been pointed out that perhaps a better alternative is to use
an auto_vec which does everything automatically.  Plus, it is more
consistent with m_stack which is already an auto_vec.

This patch fixes the issue in PR100984.

Tested on x86-64 Linux.

gcc/ChangeLog:

        PR tree-optimization/100984
* gimple-ssa-evrp.c  (ssa_equiv_stack): Use auto_vec for
replacements table.
(ssa_equiv_stack::~ssa_equiv_stack): Remove.

gcc/gimple-ssa-evrp.c

index 7e1cf51239a59620d87528240df849a329fe3d05..eb8320ae9d885d8f88ce50dfe569da2927fa92d2 100644 (file)
@@ -53,7 +53,6 @@ class ssa_equiv_stack
 {
 public:
   ssa_equiv_stack ();
-  ~ssa_equiv_stack ();
   void enter (basic_block);
   void leave (basic_block);
   void push_replacement (tree name, tree replacement);
@@ -61,19 +60,13 @@ public:
 
 private:
   auto_vec<std::pair <tree, tree>> m_stack;
-  tree *m_replacements;
+  auto_vec<tree> m_replacements;
   const std::pair <tree, tree> m_marker = std::make_pair (NULL, NULL);
 };
 
 ssa_equiv_stack::ssa_equiv_stack ()
 {
-  m_replacements = new tree[num_ssa_names] ();
-}
-
-ssa_equiv_stack::~ssa_equiv_stack ()
-{
-  m_stack.release ();
-  delete m_replacements;
+  m_replacements.safe_grow_cleared (num_ssa_names);
 }
 
 // Pushes a marker at the given point.