diff --git a/passes/opt/share.cc b/passes/opt/share.cc index 6081d140e..40d6d1d20 100644 --- a/passes/opt/share.cc +++ b/passes/opt/share.cc @@ -87,7 +87,7 @@ struct ShareWorker queue_bits.clear(); for (auto &pbit : portbits) { - if (pbit.cell->type == ID($mux) || pbit.cell->type == ID($pmux)) { + if ((pbit.cell->type == ID($mux) || pbit.cell->type == ID($pmux)) && visited_cells.count(pbit.cell) == 0) { pool bits = modwalker.sigmap(pbit.cell->getPort(ID::S)).to_sigbit_pool(); terminal_bits.insert(bits.begin(), bits.end()); queue_bits.insert(bits.begin(), bits.end());