MimIR 0.1
MimIR is my Intermediate Representation
|
Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map. More...
#include <mim/rewrite.h>
Public Member Functions | |
Rewriter (World &world) | |
World & | world () |
Stack of Maps | |
void | push () |
void | pop () |
const Def * | map (const Def *old_def, const Def *new_def) |
Map old_def to new_def and returns new_def . | |
const Def * | lookup (const Def *old_def) |
Lookup old_def by searching in reverse through the stack of maps. | |
rewrite | |
Recursively rewrite old Defs. | |
virtual const Def * | rewrite (const Def *) |
virtual const Def * | rewrite_imm (const Def *) |
virtual const Def * | rewrite_mut (Def *) |
virtual const Def * | rewrite_arr (const Arr *arr) |
virtual const Def * | rewrite_pack (const Pack *pack) |
virtual const Def * | rewrite_seq (const Seq *) |
virtual const Def * | rewrite_extract (const Extract *) |
virtual const Def * | rewrite_hole (Hole *) |
Recurseivly rebuilds part of a program into the provided World w.r.t. Rewriter::map.
|
inline |
Definition at line 13 of file rewrite.h.
References push(), and world().
Referenced by mim::RWPhase::RWPhase(), and mim::VarRewriter::VarRewriter().
Map old_def
to new_def
and returns new_def
.
new_def
Definition at line 27 of file rewrite.h.
Referenced by rewrite(), rewrite_extract(), rewrite_mut(), mim::VarRewriter::rewrite_mut(), rewrite_seq(), and mim::VarRewriter::VarRewriter().
|
inline |
Definition at line 23 of file rewrite.h.
Referenced by rewrite_seq().
|
inline |
Definition at line 22 of file rewrite.h.
Referenced by rewrite_seq(), and Rewriter().
Definition at line 12 of file rewrite.cpp.
References mim::Def::isa_mut(), lookup(), map(), rewrite_arr(), rewrite_extract(), rewrite_hole(), rewrite_imm(), rewrite_mut(), rewrite_pack(), mim::World::univ(), and world().
Referenced by mim::World::extract(), mim::plug::direct::op_cps2ds_dep(), rewrite_extract(), rewrite_hole(), mim::plug::matrix::LowerMatrixLowLevel::rewrite_imm(), rewrite_imm(), rewrite_mut(), rewrite_seq(), mim::Cleanup::start(), and mim::RWPhase::start().
Definition at line 75 of file rewrite.cpp.
References mim::Def::dbg(), mim::Extract::index(), mim::Def::is_closed(), mim::Lit::isa(), mim::Def::isa_imm(), map(), rewrite(), mim::Pack::shape(), mim::Extract::tuple(), and world().
Referenced by rewrite().
Definition at line 87 of file rewrite.cpp.
References mim::Hole::find(), rewrite(), and rewrite_mut().
Referenced by rewrite().
Reimplemented in mim::plug::matrix::LowerMatrixLowLevel, and mim::VarRewriter.
Definition at line 27 of file rewrite.cpp.
References mim::Def::num_ops(), mim::Def::op(), mim::Def::rebuild(), rewrite(), mim::Def::type(), and world().
Referenced by rewrite(), mim::plug::matrix::LowerMatrixLowLevel::rewrite_imm(), and mim::VarRewriter::rewrite_imm().
Reimplemented in mim::VarRewriter.
Definition at line 35 of file rewrite.cpp.
References mim::Def::is_set(), map(), mim::Def::num_ops(), mim::Def::op(), rewrite(), mim::Def::stub(), mim::Def::type(), and world().
Referenced by rewrite(), rewrite_hole(), mim::VarRewriter::rewrite_mut(), and rewrite_seq().
Definition at line 48 of file rewrite.cpp.
References mim::Def::as_mut(), mim::Seq::body(), mim::World::flags(), mim::Def::has_var(), mim::Def::is_set(), mim::Lit::isa(), map(), pop(), mim::Seq::prod(), push(), mim::Seq::rebuild(), rewrite(), rewrite_mut(), mim::Flags::scalarize_threshold, mim::Seq::shape(), mim::Def::type(), and world().
Referenced by rewrite_arr(), and rewrite_pack().
|
inline |
Definition at line 18 of file rewrite.h.
Referenced by rewrite(), rewrite_extract(), rewrite_imm(), rewrite_mut(), mim::VarRewriter::rewrite_mut(), rewrite_seq(), Rewriter(), and mim::VarRewriter::VarRewriter().