12 for (
const auto& [f, def] :
old_world().flags2annex())
17 for (
auto mut :
old_world().copy_externals())
42 for (
auto& phase :
phases()) {
44 todo_ |= phase->todo();
50 for (
auto& phase :
phases())
void transfer_external(Def *to)
void start() override
Actual entry.
const auto & phases() const
void start() override
Actual entry.
PhaseMan(World &, bool fixed_point=false)
bool todo_
Set to true to indicate that you want to rerun all Phasees in current your fixed-point PhaseMan.
Phase(World &world, std::string name)
virtual void run()
Entry point and generates some debug output; invokes Phase::start.
std::string_view name() const
virtual void start()=0
Actual entry.
World & new_world()
Create new Defs into this.
virtual void rewrite_annex(flags_t, const Def *)
void start() override
Actual entry.
World & old_world()
Get old Defs from here.
virtual void rewrite_external(Def *)
virtual const Def * rewrite(const Def *)
The World represents the whole program and manages creation of MimIR nodes (Defs).
World & verify()
Verifies that all externals() and annexes() are Def::is_closed(), if MIM_ENABLE_CHECKS.
const Def * register_annex(flags_t f, const Def *)