31 auto [br, ee, bb] = app->as<
App>()->args<3>();
33 auto br_pass = (
BetaRed*)builder.pass(br);
34 auto ee_pass = (
EtaExp*)builder.pass(ee);
35 auto bb_only = bb->as<
Lit>()->get<u64>();
36 world.DLOG(
"registering copy_prop with br = {}, ee = {}, bb_only = {}", br, ee, bb_only);
37 builder.add_pass<
mem::CopyProp>(app, br_pass, ee_pass, bb_only);
41 auto mode_ax = app->as<
App>()->arg()->as<
Axiom>();
Optimistically performs β-reduction (aka inlining).
Performs η-expansion: f -> λx.f x, if f is a Lam with more than one user and does not appear in calle...
The World represents the whole program and manages creation of MimIR nodes (Defs).
This FPPass is similar to sparse conditional constant propagation (SCCP).
The general idea of this pass/phase is to change the shape of signatures of functions.
void register_normalizers(Normalizers &normalizers)
absl::flat_hash_map< flags_t, std::function< void(World &, PipelineBuilder &, const Def *)> > Passes
axiom ↦ (pipeline part) × (axiom application) → () The function should inspect Application to const...
void register_pass(Passes &passes, CArgs &&... args)
void register_pass_with_arg(Passes &passes)
MIM_EXPORT mim::Plugin mim_get_plugin()
void register_phase(Passes &passes, CArgs &&... args)
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
static constexpr flags_t Base
Basic info and registration function pointer to be returned from a specific plugin.