From: Eddie Hung Date: Wed, 1 Apr 2020 16:59:23 +0000 (-0700) Subject: ast: cap dynamic range select to size of signal, suppresses warnings X-Git-Tag: working-ls180~696^2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c22fb76664559abb0bac838e03a34b140d3146ee;p=yosys.git ast: cap dynamic range select to size of signal, suppresses warnings --- diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 073b9cbbe..26c1cc7a9 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -1732,8 +1732,9 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, AstNode *cond = new AstNode(AST_COND, mkconst_int(start_bit, true)); AstNode *lvalue = children[0]->clone(); lvalue->delete_children(); + int end_bit = std::min(start_bit+result_width,source_width) - 1; lvalue->children.push_back(new AstNode(AST_RANGE, - mkconst_int(start_bit+result_width-1, true), mkconst_int(start_bit, true))); + mkconst_int(end_bit, true), mkconst_int(start_bit, true))); cond->children.push_back(new AstNode(AST_BLOCK, new AstNode(type, lvalue, children[1]->clone()))); newNode->children.push_back(cond); }