The following table shows the overall structure of the compiler. IntermediateLanguages are shown in the center column. The names of compiler passes are listed in the left and right columns.

Compiler Overview

Translation Passes

IntermediateLanguage

Optimization Passes

Source

FrontEnd

AST

Elaborate

CoreML

CoreMLSimplify

Defunctorize

XML

XMLSimplify

Monomorphise

SXML

SXMLSimplify

ClosureConvert

SSA

SSASimplify

ToSSA2

SSA2

SSA2Simplify

ToRSSA

RSSA

RSSASimplify

ToMachine

Machine

Codegen

The Compile functor (compile.sig, compile.fun), controls the high-level view of the compiler passes, from FrontEnd to code generation.