Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
thorin::Scalerize Class Reference

Perform Scalarization (= Argument simplification), i.e.: More...

#include <thorin/pass/scalarize.h>

Inheritance diagram for thorin::Scalerize:
[legend]

Public Member Functions

 Scalerize (PassMan &man, EtaExp *eta_exp)
 
Ref rewrite (Ref) override
 
- Public Member Functions inherited from thorin::RWPass< Scalerize, 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 thorin::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 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

Perform Scalarization (= Argument simplification), i.e.:

f := λ (x_1:[T_1, T_2], .., x_n:T_n).E`

will be transformed to

f' := λ (y_1:T_1, y_2:T2, .. y_n:T_n).E[x_1 \ (y_1, y2); ..; x_n \ y_n]

if f appears in callee position only (see EtaExp). It will not flatten mutable Sigmas or Arrays.

Definition at line 19 of file scalarize.h.

Constructor & Destructor Documentation

◆ Scalerize()

thorin::Scalerize::Scalerize ( PassMan man,
EtaExp eta_exp 
)
inline

Definition at line 21 of file scalarize.h.

Member Function Documentation

◆ rewrite()

Ref thorin::Scalerize::rewrite ( Ref  def)
overridevirtual

Reimplemented from thorin::Pass.

Definition at line 56 of file scalarize.cpp.

References thorin::flatten(), and thorin::Def::isa_mut().


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