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 | |
virtual void | push () |
virtual 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 * | dispatch (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(), mim::VarRewriter::VarRewriter(), and mim::VarRewriter::VarRewriter().
Definition at line 19 of file rewrite.cpp.
References mim::Def::isa_mut(), map(), rewrite_arr(), rewrite_extract(), rewrite_hole(), rewrite_imm(), rewrite_mut(), and rewrite_pack().
Referenced by rewrite(), and mim::VarRewriter::rewrite().
Lookup old_def
by searching in reverse through the stack of maps.
nullptr
if nothing was found. Definition at line 31 of file rewrite.h.
Referenced by rewrite(), and mim::VarRewriter::rewrite().
Map old_def
to new_def
and returns new_def
.
new_def
Definition at line 27 of file rewrite.h.
Referenced by mim::VarRewriter::add(), dispatch(), rewrite_extract(), rewrite_mut(), and rewrite_seq().
|
inlinevirtual |
Reimplemented in mim::VarRewriter.
Definition at line 23 of file rewrite.h.
Referenced by mim::VarRewriter::pop(), and rewrite_seq().
|
inlinevirtual |
Reimplemented in mim::VarRewriter.
Definition at line 22 of file rewrite.h.
Referenced by mim::VarRewriter::push(), rewrite_seq(), and Rewriter().
Reimplemented in mim::VarRewriter.
Definition at line 12 of file rewrite.cpp.
References dispatch(), lookup(), mim::World::univ(), and world().
Referenced by 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 79 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 dispatch().
Definition at line 91 of file rewrite.cpp.
References mim::Hole::find(), rewrite(), and rewrite_mut().
Referenced by dispatch().
Reimplemented in mim::plug::matrix::LowerMatrixLowLevel.
Definition at line 31 of file rewrite.cpp.
References mim::Def::num_ops(), mim::Def::op(), mim::Def::rebuild(), rewrite(), mim::Def::type(), and world().
Referenced by dispatch(), and mim::plug::matrix::LowerMatrixLowLevel::rewrite_imm().
Reimplemented in mim::VarRewriter.
Definition at line 39 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 dispatch(), rewrite_hole(), mim::VarRewriter::rewrite_mut(), and rewrite_seq().
Definition at line 52 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(), mim::VarRewriter::rewrite(), rewrite_extract(), rewrite_imm(), rewrite_mut(), mim::VarRewriter::rewrite_mut(), rewrite_seq(), Rewriter(), mim::VarRewriter::VarRewriter(), and mim::VarRewriter::VarRewriter().