From: Clifford Wolf Date: Sun, 1 Mar 2015 10:20:22 +0000 (+0100) Subject: Const-fold parameter defs on-demand in AstNode::detectSignWidthWorker() X-Git-Tag: yosys-0.6~384 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=422794c5840784cab11930cfa305ed9351bb1a98;p=yosys.git Const-fold parameter defs on-demand in AstNode::detectSignWidthWorker() --- diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc index c421364a3..8ed8c673a 100644 --- a/frontends/ast/genrtlil.cc +++ b/frontends/ast/genrtlil.cc @@ -567,9 +567,11 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun if (id_ast->children.size() > 1 && id_ast->children[1]->range_valid) { this_width = id_ast->children[1]->range_left - id_ast->children[1]->range_right + 1; } else - if (id_ast->children[0]->type == AST_CONSTANT) { + if (id_ast->children[0]->type != AST_CONSTANT) + while (id_ast->simplify(true, false, false, 1, -1, false, true)) { } + if (id_ast->children[0]->type == AST_CONSTANT) this_width = id_ast->children[0]->bits.size(); - } else + else log_error("Failed to detect width for parameter %s at %s:%d!\n", str.c_str(), filename.c_str(), linenum); if (children.size() != 0) range = children[0];