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
5namespace mim {
6
7class EtaRed;
8
9class TailRecElim : public FPPass<TailRecElim, Lam> {
10public:
12
13private:
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
Base class for all Defs.
Definition def.h:251
Performs η-reduction.
Definition eta_red.h:9
FPPass(PassMan &man, std::string name)
Definition pass.h:268
An optimizer that combines several optimizations in an optimal way.
Definition pass.h:111
TailRecElim(PassMan &)
undo_t analyze(const Def *) override
const Def * rewrite(const Def *) override
Definition ast.h:14
LamMap< Lam * > Lam2Lam
Definition lam.h:218
GIDMap< Lam *, To > LamMap
Definition lam.h:216
size_t undo_t
Definition pass.h:18