aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAldy Hernandez <aldyh@redhat.com>2021-06-10 09:20:30 +0200
committerAldy Hernandez <aldyh@redhat.com>2021-06-10 17:03:27 +0200
commit04a040d907a83af54e0a98bdba5bfabc0ef4f700 (patch)
tree11898661649f78c06dc21d332212571abcb46022 /gcc
parent6fcba9ef23e4261a6279a76890b2c1488cc14d12 (diff)
downloadgcc-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.c11
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.