Merge pull request #2479 from zachjs/const-arg-hint

Allow constant function calls in constant function arguments
This commit is contained in:
whitequark 2020-12-22 01:31:25 +00:00 committed by GitHub
commit 3e67ab1ebb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 0 deletions

View File

@ -1205,6 +1205,11 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
current_block = this;
current_block_child = children[i];
}
if (!in_param_here && type == AST_FCALL) {
bool recommend_const_eval = false;
bool require_const_eval = has_const_only_constructs(recommend_const_eval);
in_param_here = recommend_const_eval || require_const_eval;
}
if ((type == AST_ALWAYS || type == AST_INITIAL) && children[i]->type == AST_BLOCK)
current_top_block = children[i];
if (i == 0 && child_0_is_self_determined)

View File

@ -14,6 +14,11 @@ module top;
end
endfunction
function automatic [31:0] pass_through;
input [31:0] inp;
pass_through = inp;
endfunction
function automatic [31:0] operation2;
input [4:0] var;
input integer num;
@ -47,6 +52,9 @@ module top;
wire [31:0] x1;
assign x1 = operation1(A, a);
wire [31:0] x1b;
assign x1b = operation1(pass_through(A), a);
wire [31:0] x2;
assign x2 = operation2(A, a);
@ -58,6 +66,7 @@ module top;
assert property (a == 2);
assert property (A == 3);
assert property (x1 == 16);
assert property (x1b == 16);
assert property (x2 == 4);
assert property (x3 == 16);
`endif