MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::plug::clos::ClosConvPrep Class Reference

#include <mim/plug/clos/pass/clos_conv_prep.h>

Inheritance diagram for mim::plug::clos::ClosConvPrep:
[legend]

Public Member Functions

 ClosConvPrep (PassMan &man, EtaExp *eta_exp)
 
void enter () override
 Invoked just before Pass::rewriteing PassMan::curr_mut's body.
 
Ref rewrite (Ref) override
 
const Apprewrite_arg (const App *app)
 
const Apprewrite_callee (const App *app)
 
Lamscope (Lam *lam)
 
bool from_outer_scope (Lam *lam)
 
bool from_outer_scope (Ref lam)
 
Ref eta_wrap (Ref def, attr a)
 
- Public Member Functions inherited from mim::RWPass< ClosConvPrep, Lam >
 RWPass (PassMan &man, std::string_view name)
 
bool inspect () const override
 Should the PassMan even consider this pass?
 
Lamcurr_mut () const
 
- Public Member Functions inherited from mim::Pass
 Pass (PassMan &, std::string_view name)
 
virtual ~Pass ()=default
 
Worldworld ()
 
PassManman ()
 
const PassManman () const
 
std::string_view name () const
 
size_t index () const
 
virtual Ref rewrite (const Var *var)
 
virtual Ref rewrite (const Proxy *proxy)
 
virtual undo_t analyze (Ref)
 
virtual undo_t analyze (const Var *)
 
virtual undo_t analyze (const Proxy *)
 
virtual bool fixed_point () const
 
virtual void prepare ()
 Invoked once before entering the main rewrite loop.
 
const Proxyproxy (Ref type, Defs ops, u32 tag=0)
 
const Proxyisa_proxy (Ref def, u32 tag=0)
 Check whether given def is a Proxy whose Proxy::pass matches this Pass's IPass::index.
 
const Proxyas_proxy (Ref def, u32 tag=0)
 

Detailed Description

Definition at line 14 of file clos_conv_prep.h.

Constructor & Destructor Documentation

◆ ClosConvPrep()

mim::plug::clos::ClosConvPrep::ClosConvPrep ( PassMan & man,
EtaExp * eta_exp )
inline

Definition at line 16 of file clos_conv_prep.h.

Member Function Documentation

◆ enter()

void mim::plug::clos::ClosConvPrep::enter ( )
overridevirtual

Invoked just before Pass::rewriteing PassMan::curr_mut's body.

Note
This is invoked when seeing the inside of a mutable the first time. This is often too late, as you usually want to do something when you see a mutable the first time from the outside. This means that this PassMan::curr_mut has already been encountered elsewhere. Otherwise, we wouldn't have seen PassMan::curr_mut to begin with (unless it is Def::is_external).

Reimplemented from mim::Pass.

Definition at line 38 of file clos_conv_prep.cpp.

References mim::Lam::body(), mim::RWPass< ClosConvPrep, Lam >::curr_mut(), mim::Pi::isa_cn(), mim::Lam::isa_mut_basicblock(), mim::Pi::isa_returning(), and mim::Pass::world().

◆ eta_wrap()

Ref mim::plug::clos::ClosConvPrep::eta_wrap ( Ref def,
attr a )
inline

◆ from_outer_scope() [1/2]

bool mim::plug::clos::ClosConvPrep::from_outer_scope ( Lam * lam)
inline

Definition at line 29 of file clos_conv_prep.h.

References mim::RWPass< ClosConvPrep, Lam >::curr_mut(), and scope().

Referenced by rewrite_arg().

◆ from_outer_scope() [2/2]

bool mim::plug::clos::ClosConvPrep::from_outer_scope ( Ref lam)
inline

Definition at line 34 of file clos_conv_prep.h.

◆ rewrite()

Ref mim::plug::clos::ClosConvPrep::rewrite ( Ref def)
overridevirtual

Reimplemented from mim::Pass.

Definition at line 133 of file clos_conv_prep.cpp.

References mim::match(), rewrite_arg(), and rewrite_callee().

◆ rewrite_arg()

◆ rewrite_callee()

const App * mim::plug::clos::ClosConvPrep::rewrite_callee ( const App * app)

◆ scope()

Lam * mim::plug::clos::ClosConvPrep::scope ( Lam * lam)

Definition at line 33 of file clos_conv_prep.cpp.

References mim::EtaExp::new2old().

Referenced by eta_wrap(), and from_outer_scope().


The documentation for this class was generated from the following files: