MimIR
0.4-dev
MimIR is my Intermediate Representation
Toggle main menu visibility
Loading...
Searching...
No Matches
branch_clos_elim.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
mim/phase.h
>
4
5
namespace
mim::plug::clos::phase
{
6
7
/// Flattens branches over closure literals back into a direct branch over Lam%s.
8
class
BranchClosElim
:
public
RWPhase
{
9
public
:
10
BranchClosElim
(
World
&
world
,
flags_t
annex
)
11
:
RWPhase
(
world
,
annex
) {}
12
13
private
:
14
const
Def
*
rewrite_imm_App
(
const
App
*)
final
;
15
16
DefMap<Lam*>
branch2dropped_;
17
};
18
19
}
// namespace mim::plug::clos::phase
mim::App
Definition
lam.h:224
mim::Def
Base class for all Defs.
Definition
def.h:273
mim::Phase::annex
flags_t annex() const
Definition
phase.h:81
mim::RWPhase::RWPhase
RWPhase(World &world, std::string name, Analysis *analysis=nullptr)
Definition
phase.h:431
mim::RWPhase::world
World & world()=delete
Hides both and forbids direct access.
mim::World
The World represents the whole program and manages creation of MimIR nodes (Defs).
Definition
world.h:40
mim::plug::clos::phase::BranchClosElim::rewrite_imm_App
const Def * rewrite_imm_App(const App *) final
Definition
branch_clos_elim.cpp:27
mim::plug::clos::phase::BranchClosElim::BranchClosElim
BranchClosElim(World &world, flags_t annex)
Definition
branch_clos_elim.h:10
mim::plug::clos::phase
Definition
branch_clos_elim.h:5
mim::flags_t
u64 flags_t
Definition
types.h:39
mim::DefMap
GIDMap< const Def *, To > DefMap
Definition
def.h:88
phase.h
include
mim
plug
clos
phase
branch_clos_elim.h
Generated by
1.18.0