From 635b2b8939f32a3551114332147a8323217f4474 Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Tue, 14 Apr 2020 09:31:06 -0700 Subject: [PATCH 1/2] kernel: Design::remove(RTLIL::Module *) to check refcount_modules_ --- kernel/rtlil.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/rtlil.cc b/kernel/rtlil.cc index d9003f28c..3e27fdecd 100644 --- a/kernel/rtlil.cc +++ b/kernel/rtlil.cc @@ -597,6 +597,7 @@ void RTLIL::Design::remove(RTLIL::Module *module) } log_assert(modules_.at(module->name) == module); + log_assert(refcount_modules_ == 0); modules_.erase(module->name); delete module; } From 75bb2c8c2472f4f09c556c09ae0ac3fb6a70d41a Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Tue, 14 Apr 2020 10:43:05 -0700 Subject: [PATCH 2/2] design: do not delete when iterating over Design::modules() directly --- passes/cmds/design.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/passes/cmds/design.cc b/passes/cmds/design.cc index 4612760cc..8861182aa 100644 --- a/passes/cmds/design.cc +++ b/passes/cmds/design.cc @@ -340,7 +340,7 @@ struct DesignPass : public Pass { if (reset_mode || !load_name.empty() || push_mode || pop_mode) { - for (auto mod : design->modules()) + for (auto mod : design->modules().to_vector()) design->remove(mod); design->selection_stack.clear();