diff --git a/passes/cmds/design.cc b/passes/cmds/design.cc index efc72dfb7..9f627ab04 100644 --- a/passes/cmds/design.cc +++ b/passes/cmds/design.cc @@ -23,11 +23,17 @@ YOSYS_NAMESPACE_BEGIN +// TODO refactor such scattered program state std::map saved_designs; std::vector pushed_designs; struct DesignPass : public Pass { - DesignPass() : Pass("design", "save, restore and reset current design") { } + DesignPass() : Pass("design", "save, restore and reset current design") { +#ifdef WITH_PYTHON + // Ensure the index to outlive this pass so that we can free saved designs + (void)RTLIL::Module::get_all_modules(); +#endif + } ~DesignPass() override { for (auto &it : saved_designs) delete it.second;