17 , eta_red_(eta_red) {}
22 void new2old(
Lam* new_lam,
Lam* old_lam) { new2old_[new_lam] = old_lam; }
43 using Data = std::tuple<Def2Def, LamMap<Pos>>;
Performs η-expansion: f -> λx.f x, if f is a Lam with more than one user and does not appear in calle...
Ref rewrite(Ref) override
void new2old(Lam *new_lam, Lam *old_lam)
undo_t analyze(const Proxy *) override
static std::string_view pos2str(Pos pos)
const Proxy * proxy(Lam *lam)
EtaExp(PassMan &man, EtaRed *eta_red)
std::tuple< Def2Def, LamMap< Pos > > Data
Inherit from this class using CRTP, if you do need a Pass with a state and a fixed-point.
An optimizer that combines several optimizations in an optimal way.
const Proxy * proxy(Ref type, Defs ops, u32 tag=0)
Helper class to retrieve Infer::arg if present.
GIDMap< const Def *, To > DefMap