Import Upstream version 20180207
[hcoop/debian/mlton.git] / doc / guide / src / RSSA.adoc
CommitLineData
7f918cf1
CE
1RSSA
2====
3
4<:RSSA:> is an <:IntermediateLanguage:>, translated from <:SSA2:> by
5<:ToRSSA:>, optimized by <:RSSASimplify:>, and translated by
6<:ToMachine:> to <:Machine:>.
7
8== Description ==
9
10<:RSSA:> is a <:IntermediateLanguage:> that makes representation
11decisions explicit.
12
13== Implementation ==
14
15* <!ViewGitFile(mlton,master,mlton/backend/rssa.sig)>
16* <!ViewGitFile(mlton,master,mlton/backend/rssa.fun)>
17
18== Type Checking ==
19
20The new type language is aimed at expressing bit-level control over
21layout and associated packing of data representations. There are
22singleton types that denote constants, other atomic types for things
23like integers and reals, and arbitrary sum types and sequence (tuple)
24types. The big change to the type system is that type checking is now
25based on subtyping, not type equality. So, for example, the singleton
26type `0xFFFFEEBB` whose only inhabitant is the eponymous constant is a
27subtype of the type `Word32`.
28
29== Details and Notes ==
30
31SSA is an abbreviation for Static Single Assignment. The <:RSSA:>
32<:IntermediateLanguage:> is a variant of SSA.