MimIR 0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
mim::RWPass< P, M > Class Template Reference

Inherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration. More...

#include <mim/pass/pass.h>

Inheritance diagram for mim::RWPass< P, M >:
[legend]

Public Member Functions

 RWPass (PassMan &man, std::string_view name)
 
bool inspect () const override
 Should the PassMan even consider this pass?
 
Mcurr_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 (Ref def)
 
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 enter ()
 Invoked just before Pass::rewriteing PassMan::curr_mut's body.
 
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

template<class P, class M = Def>
class mim::RWPass< P, M >

Inherit from this class using CRTP, if your Pass does not need state and a fixed-point iteration.

If you a are only interested in specific mutables, you can pass this to M.

Definition at line 220 of file pass.h.

Constructor & Destructor Documentation

◆ RWPass()

template<class P , class M = Def>
mim::RWPass< P, M >::RWPass ( PassMan & man,
std::string_view name )
inline

Definition at line 222 of file pass.h.

Member Function Documentation

◆ curr_mut()

template<class P , class M = Def>
M * mim::RWPass< P, M >::curr_mut ( ) const
inline

Definition at line 232 of file pass.h.

References mim::PassMan::curr_mut(), and mim::Pass::man().

◆ inspect()

template<class P , class M = Def>
bool mim::RWPass< P, M >::inspect ( ) const
inlineoverridevirtual

Should the PassMan even consider this pass?

Implements mim::Pass.

Definition at line 225 of file pass.h.

References mim::PassMan::curr_mut(), and mim::Pass::man().


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