8 auto& world = type->
world();
15 auto arg_cpl = arg->as<
App>();
18 world.ELOG(
"pass_phase expects a pass_list as argument but got {}", arg);
24 auto n = pass_list_defs.size();
31 auto& world = type->
world();
35 auto n = phase_list_defs.size();
46 auto& world = type->
world();
47 auto pass_lists = arg->
projs();
50 for (
auto pass_list_def : pass_lists) {
53 passes.insert(passes.end(), pass_list_defs.begin(), pass_list_defs.end());
56 for (
auto pass : passes) app_list = world.app(app_list, pass);
auto projs(F f) const
Splits this Def via Def::projections into an Array (if A == -1_n) or std::array (otherwise).
Helper class to retrieve Infer::arg if present.
const Def * call(Id id, Args &&... args)
#define MIM_compile_NORMALIZER_IMPL
Ref normalize_combined_phase(Ref type, Ref, Ref arg)
combined_phase (phase_list phase1 ... phasen) -> phases_to_phase n (phase1, ..., phasen)
Ref normalize_pass_phase(Ref type, Ref, Ref arg)
Ref normalize_single_pass_phase(Ref type, Ref, Ref arg)
single_pass_phase pass -> passes_to_phase 1 pass
Ref normalize_combine_pass_list(Ref type, Ref, Ref arg)
combine_pass_list K (pass_list pass11 ... pass1N) ... (pass_list passK1 ... passKM) = pass_list pass1...
std::pair< const Def *, std::vector< const Def * > > collect_args(const Def *def)
Helper function to cope with the fact that normalizers take all arguments and not only its axiom argu...
static constexpr flags_t Base