From 33d07b72a3d9914f5d5f44af20f17682379e6604 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Fri, 21 Feb 2025 10:21:57 +0100 Subject: [PATCH] share: print error instead of infinite loop in find_terminal_bits on mux comb loop --- passes/opt/share.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/passes/opt/share.cc b/passes/opt/share.cc index 6081d140e20..6a869877cc2 100644 --- a/passes/opt/share.cc +++ b/passes/opt/share.cc @@ -88,6 +88,9 @@ struct ShareWorker for (auto &pbit : portbits) { if (pbit.cell->type == ID($mux) || pbit.cell->type == ID($pmux)) { + if (visited_cells.count(pbit.cell)) + log_error("Combinational loop composed of $mux or $pmux, " + "run check -assert before this pass for more info\n"); 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());