Fixed handling of task outputs

This commit is contained in:
Clifford Wolf 2014-08-14 22:26:10 +02:00
parent 5602cbde9f
commit 85e3cc12ac
1 changed files with 4 additions and 2 deletions

View File

@ -1523,12 +1523,14 @@ skip_dynamic_range_lvalue_expansion:;
replace_rules[child->str] = wire->str; replace_rules[child->str] = wire->str;
if (child->is_input && arg_count < children.size()) if ((child->is_input || child->is_output) && arg_count < children.size())
{ {
AstNode *arg = children[arg_count++]->clone(); AstNode *arg = children[arg_count++]->clone();
AstNode *wire_id = new AstNode(AST_IDENTIFIER); AstNode *wire_id = new AstNode(AST_IDENTIFIER);
wire_id->str = wire->str; wire_id->str = wire->str;
AstNode *assign = new AstNode(AST_ASSIGN_EQ, wire_id, arg); AstNode *assign = child->is_input ?
new AstNode(AST_ASSIGN_EQ, wire_id, arg) :
new AstNode(AST_ASSIGN_EQ, arg, wire_id);
for (auto it = current_block->children.begin(); it != current_block->children.end(); it++) { for (auto it = current_block->children.begin(); it != current_block->children.end(); it++) {
if (*it != current_block_child) if (*it != current_block_child)