ast: delete wires and localparams after finishing const evaluation

This commit is contained in:
Xiretza 2021-03-17 00:14:27 +01:00 committed by Zachary Snow
parent 091295a5a5
commit 62a42c317c
1 changed files with 8 additions and 0 deletions

View File

@ -4774,6 +4774,7 @@ AstNode *AstNode::eval_const_function(AstNode *fcall, bool must_succeed)
{
std::map<std::string, AstNode*> backup_scope = current_scope;
std::map<std::string, AstNode::varinfo_t> variables;
std::vector<AstNode*> to_delete;
AstNode *block = new AstNode(AST_BLOCK);
AstNode *result = nullptr;
@ -4831,6 +4832,7 @@ AstNode *AstNode::eval_const_function(AstNode *fcall, bool must_succeed)
current_scope[stmt->str] = stmt;
block->children.erase(block->children.begin());
to_delete.push_back(stmt);
continue;
}
@ -4843,6 +4845,7 @@ AstNode *AstNode::eval_const_function(AstNode *fcall, bool must_succeed)
current_scope[stmt->str] = stmt;
block->children.erase(block->children.begin());
to_delete.push_back(stmt);
continue;
}
@ -5038,6 +5041,11 @@ finished:
delete block;
current_scope = backup_scope;
for (auto it : to_delete) {
delete it;
}
to_delete.clear();
return result;
}