10 auto compilation_functions = {
11 world.
sym(
"_compile"),
12 world.
sym(
"_default_compile"),
13 world.
sym(
"_core_compile"),
14 world.
sym(
"_fallback_compile")
18 const Def* compilation =
nullptr;
19 for (
auto compilation_function : compilation_functions) {
20 if (
auto compilation_ = world.
external(compilation_function)) {
21 if (!compilation) compilation = compilation_;
28 if (
auto lam = def->isa<
Lam>(); lam && lam->num_doms() == 0) {
30 if (lam->codom()->sym().view() ==
"%compile.Phase") {
31 if (!compilation) compilation = lam;
37 if (!compilation) world.ELOG(
"no compilation function found");
38 world.DLOG(
"compilation using {} : {}", compilation, compilation->
type());
40 auto body = compilation->as<
Lam>()->body();
43 world.DLOG(
"Building pipeline");
44 if (
auto f = world.
driver().
stage(callee->flags())) {
45 auto stage = (*f)(world);
46 auto phase = stage.get()->as<
Phase>();
47 if (
auto app = body->isa<
App>()) phase->
apply(app);
50 world.ELOG(
"axm not found in passes");