From: Clifford Wolf Date: Fri, 27 May 2016 15:55:03 +0000 (+0200) Subject: Fixed procedural assignments to non-unique lvalues, e.g. {y,y} = {a,b} X-Git-Tag: yosys-0.7~210 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=766032c5f85e33c8aabb69d1868c3493f254695f;p=yosys.git Fixed procedural assignments to non-unique lvalues, e.g. {y,y} = {a,b} --- diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc index e5446dae6..0e5029eb4 100644 --- a/frontends/ast/genrtlil.cc +++ b/frontends/ast/genrtlil.cc @@ -429,6 +429,17 @@ struct AST_INTERNAL::ProcessGenerator { RTLIL::SigSpec unmapped_lvalue = ast->children[0]->genRTLIL(), lvalue = unmapped_lvalue; RTLIL::SigSpec rvalue = ast->children[1]->genWidthRTLIL(lvalue.size(), &subst_rvalue_map.stdmap()); + + pool lvalue_sigbits; + for (int i = 0; i < GetSize(lvalue); i++) { + if (lvalue_sigbits.count(lvalue[i]) > 0) { + unmapped_lvalue.remove(i); + lvalue.remove(i); + rvalue.remove(i--); + } else + lvalue_sigbits.insert(lvalue[i]); + } + lvalue.replace(subst_lvalue_map.stdmap()); if (ast->type == AST_ASSIGN_EQ) {