From 62a42c317c41590b654f59851b4730c89bfcd7ae Mon Sep 17 00:00:00 2001 From: Xiretza Date: Wed, 17 Mar 2021 00:14:27 +0100 Subject: [PATCH] ast: delete wires and localparams after finishing const evaluation --- frontends/ast/simplify.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 8ef681069..f85306423 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -4774,6 +4774,7 @@ AstNode *AstNode::eval_const_function(AstNode *fcall, bool must_succeed) { std::map backup_scope = current_scope; std::map variables; + std::vector 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; } -- 2.30.2