diff options
author | Clifford Wolf <clifford@clifford.at> | 2017-02-14 15:10:59 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2017-02-14 15:10:59 +0100 |
commit | 4fb800717101c65344fe78a365b8ae6ca0a90d9e (patch) | |
tree | 04ffd6d2c2a822043eeedc91bc9ea7b948103160 /frontends/ast/simplify.cc | |
parent | 4e80ce97a8de55360a9aa5cb05c734fd4b0ba5c5 (diff) | |
download | yosys-4fb800717101c65344fe78a365b8ae6ca0a90d9e.tar.gz yosys-4fb800717101c65344fe78a365b8ae6ca0a90d9e.tar.bz2 yosys-4fb800717101c65344fe78a365b8ae6ca0a90d9e.zip |
Fix incorrect "incompatible re-declaration of wire" error in tasks/functions
Diffstat (limited to 'frontends/ast/simplify.cc')
-rw-r--r-- | frontends/ast/simplify.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index eecc04132..f7fcbc479 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -2183,9 +2183,16 @@ skip_dynamic_range_lvalue_expansion:; if (wire->children.empty()) { for (auto c : child->children) wire->children.push_back(c->clone()); - } else { - if (!child->children.empty()) + } else if (!child->children.empty()) { + while (child->simplify(true, false, false, stage, -1, false, false)) { } + if (GetSize(child->children) == GetSize(wire->children)) { + for (int i = 0; i < GetSize(child->children); i++) + if (*child->children.at(i) != *wire->children.at(i)) + goto tcall_incompatible_wires; + } else { + tcall_incompatible_wires: log_error("Incompatible re-declaration of wire %s at %s:%d.\n", child->str.c_str(), filename.c_str(), linenum); + } } } else |