diff --git a/passes/opt/wreduce.cc b/passes/opt/wreduce.cc index 047e8c5f81b..006d4353950 100644 --- a/passes/opt/wreduce.cc +++ b/passes/opt/wreduce.cc @@ -458,7 +458,9 @@ struct WreduceWorker continue; log("Removed top %d bits (of %d) from wire %s.%s.\n", unused_top_bits, GetSize(w), log_id(module), log_id(w)); - Wire *nw = module->addWire(IdString("$" + w->name.str()), GetSize(w) - unused_top_bits); + IdString nw_name = IdString("$" + w->name.str()); + while (module->count_id(nw_name)) nw_name = IdString("$" + nw_name.str()); + Wire *nw = module->addWire(nw_name, GetSize(w) - unused_top_bits); module->connect(nw, SigSpec(w).extract(0, GetSize(nw))); module->swap_names(w, nw); }