mirror of https://github.com/YosysHQ/yosys.git
fix width of post-increment/decrement expressions
This commit is contained in:
parent
7d07615dee
commit
28e99f2b8c
|
@ -325,7 +325,7 @@ static AstNode *addIncOrDecExpr(AstNode *lhs, dict<IdString, AstNode*> *attr, AS
|
||||||
log_assert(stmt->type == AST_ASSIGN_EQ);
|
log_assert(stmt->type == AST_ASSIGN_EQ);
|
||||||
AstNode *expr = stmt->children[0]->clone();
|
AstNode *expr = stmt->children[0]->clone();
|
||||||
if (undo) {
|
if (undo) {
|
||||||
AstNode *minus_one = AstNode::mkconst_int(-1, true);
|
AstNode *minus_one = AstNode::mkconst_int(-1, true, 1);
|
||||||
expr = new AstNode(op, expr, minus_one);
|
expr = new AstNode(op, expr, minus_one);
|
||||||
}
|
}
|
||||||
SET_AST_NODE_LOC(expr, begin, end);
|
SET_AST_NODE_LOC(expr, begin, end);
|
||||||
|
|
|
@ -56,5 +56,18 @@ module top;
|
||||||
check(96, 200, 24);
|
check(96, 200, 24);
|
||||||
y = (z >>= 1'sb1) * 2; // shift is implicitly cast to unsigned
|
y = (z >>= 1'sb1) * 2; // shift is implicitly cast to unsigned
|
||||||
check(96, 24, 12);
|
check(96, 24, 12);
|
||||||
|
|
||||||
|
// check width of post-increment expressions
|
||||||
|
z = (y = 0);
|
||||||
|
begin
|
||||||
|
byte w;
|
||||||
|
w = 0;
|
||||||
|
x = {1'b1, ++w};
|
||||||
|
check(257, 0, 0);
|
||||||
|
assert (w == 1);
|
||||||
|
x = {2'b10, w++};
|
||||||
|
check(513, 0, 0);
|
||||||
|
assert (w == 2);
|
||||||
|
end
|
||||||
end
|
end
|
||||||
endmodule
|
endmodule
|
||||||
|
|
Loading…
Reference in New Issue