diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index b9d874916..fc236fa29 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -336,7 +336,8 @@ static AstNode *addIncOrDecExpr(AstNode *lhs, dict *attr, AS log_assert(stmt->type == AST_ASSIGN_EQ); AstNode *expr = stmt->children[0]->clone(); if (undo) { - AstNode *minus_one = AstNode::mkconst_int(-1, true, 1); + AstNode *one = AstNode::mkconst_int(1, false, 1); + AstNode *minus_one = new AstNode(AST_NEG, one); expr = new AstNode(op, expr, minus_one); } SET_AST_NODE_LOC(expr, begin, end); diff --git a/tests/verilog/incdec.ys b/tests/verilog/incdec.ys new file mode 100644 index 000000000..9133061a5 --- /dev/null +++ b/tests/verilog/incdec.ys @@ -0,0 +1,68 @@ +# From https://github.com/YosysHQ/yosys/issues/5151 +read_verilog -sv <