MimIR
0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
tail_rec_elim.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
mim/pass/pass.h
"
4
5
namespace
mim
{
6
7
class
EtaRed
;
8
9
class
TailRecElim
:
public
FPPass
<TailRecElim, Lam> {
10
public
:
11
TailRecElim
(
PassMan
&);
12
13
private
:
14
/// @name PassMan hooks
15
///@{
16
const
Def
*
rewrite
(
const
Def
*)
override
;
17
undo_t
analyze
(
const
Def
*)
override
;
18
///@}
19
20
EtaRed
* eta_red_;
21
LamMap<std::pair<Lam*, Lam*>
> old2rec_loop_;
22
Lam2Lam
rec2loop_;
23
};
24
25
}
// namespace mim
mim::Def
Base class for all Defs.
Definition
def.h:251
mim::EtaRed
Performs η-reduction.
Definition
eta_red.h:9
mim::FPPass< TailRecElim, Lam >::FPPass
FPPass(PassMan &man, std::string name)
Definition
pass.h:268
mim::PassMan
An optimizer that combines several optimizations in an optimal way.
Definition
pass.h:111
mim::TailRecElim::TailRecElim
TailRecElim(PassMan &)
Definition
tail_rec_elim.cpp:7
mim::TailRecElim::analyze
undo_t analyze(const Def *) override
Definition
tail_rec_elim.cpp:26
mim::TailRecElim::rewrite
const Def * rewrite(const Def *) override
Definition
tail_rec_elim.cpp:11
mim
Definition
ast.h:14
mim::Lam2Lam
LamMap< Lam * > Lam2Lam
Definition
lam.h:218
mim::LamMap
GIDMap< Lam *, To > LamMap
Definition
lam.h:216
mim::undo_t
size_t undo_t
Definition
pass.h:18
pass.h
include
mim
pass
tail_rec_elim.h
Generated by
1.13.2