From: Xiretza Date: Tue, 16 Mar 2021 23:14:27 +0000 (+0100) Subject: ast: delete wires and localparams after finishing const evaluation X-Git-Tag: yosys-0.10~135 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=62a42c317c41590b654f59851b4730c89bfcd7ae;p=yosys.git ast: delete wires and localparams after finishing const evaluation --- 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; }