Fixed AST handling of variables declared inside a functions main block

This commit is contained in:
Clifford Wolf 2014-08-05 08:35:51 +02:00
parent 0bb6942218
commit 0129d41efa
2 changed files with 16 additions and 3 deletions

View File

@ -1460,7 +1460,6 @@ skip_dynamic_range_lvalue_expansion:;
} }
for (auto child : decl->children) for (auto child : decl->children)
{
if (child->type == AST_WIRE) if (child->type == AST_WIRE)
{ {
AstNode *wire = child->clone(); AstNode *wire = child->clone();
@ -1488,7 +1487,9 @@ skip_dynamic_range_lvalue_expansion:;
} }
} }
} }
else
for (auto child : decl->children)
if (child->type != AST_WIRE)
{ {
AstNode *stmt = child->clone(); AstNode *stmt = child->clone();
stmt->replace_ids(replace_rules); stmt->replace_ids(replace_rules);
@ -1500,7 +1501,6 @@ skip_dynamic_range_lvalue_expansion:;
break; break;
} }
} }
}
replace_fcall_with_id: replace_fcall_with_id:
if (type == AST_FCALL) { if (type == AST_FCALL) {

View File

@ -33,3 +33,16 @@ end
endmodule endmodule
module task_func_test02( input [7:0] din_a, input [7:0] din_b, output [7:0] dout_a);
assign dout_a = test(din_a,din_b);
function [7:0] test;
input [7:0] a;
input [7:0] b;
begin : TEST
integer i;
for (i = 0; i <= 7; i = i + 1)
test[i] = a[i] & b[i];
end
endfunction
endmodule