diff --git a/passes/cmds/portarcs.cc b/passes/cmds/portarcs.cc index 7a1d5497c..a6ed75de3 100644 --- a/passes/cmds/portarcs.cc +++ b/passes/cmds/portarcs.cc @@ -192,16 +192,18 @@ struct PortarcsPass : Pass { if (annotations.count(bit)) { // consistency check log_assert(annotations.at(bit)[0] == ((int) (intptr_t) bit.wire)); - - recycling.push_back(annotations.at(ordering[i])); + } else { + alloc_for_bit(bit); } + + recycling.push_back(annotations.at(ordering[i])); } log_debug("Allocated %lux%d\n", allocated.size(), inputs.size()); for (auto bit : outputs) { int *p = annotations.at(canonical_bit(bit)); for (int i = 0; i < inputs.size(); i++) - p[i] = 0; + p[i] = -1; } for (int i = 0; i < ordering.size(); i++) {