diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2021-06-10 09:20:30 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2021-06-10 17:03:27 +0200 |
commit | 04a040d907a83af54e0a98bdba5bfabc0ef4f700 (patch) | |
tree | 11898661649f78c06dc21d332212571abcb46022 /gcc | |
parent | 6fcba9ef23e4261a6279a76890b2c1488cc14d12 (diff) | |
download | gcc-04a040d907a83af54e0a98bdba5bfabc0ef4f700.zip gcc-04a040d907a83af54e0a98bdba5bfabc0ef4f700.tar.gz gcc-04a040d907a83af54e0a98bdba5bfabc0ef4f700.tar.bz2 |
Use auto_vec in ssa_equiv_stack.
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.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/gimple-ssa-evrp.c | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/gcc/gimple-ssa-evrp.c b/gcc/gimple-ssa-evrp.c index 7e1cf51..eb8320a 100644 --- a/gcc/gimple-ssa-evrp.c +++ b/gcc/gimple-ssa-evrp.c @@ -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. |