4 <:Flatten:> is an optimization pass for the <:SSA:>
5 <:IntermediateLanguage:>, invoked from <:SSASimplify:>.
9 This pass flattens arguments to <:SSA:> constructors, blocks, and
12 If a tuple is explicitly available at all uses of a function
15 * The formals and call sites are changed so that the components of the
18 * The tuple is reconstructed at the beginning of the body of the
19 function (resp. block).
21 Similarly, if a tuple is explicitly available at all uses of a
24 * The constructor argument datatype is changed to flatten the tuple
27 * The tuple is passed flat at each `ConApp`.
29 * The tuple is reconstructed at each `Case` transfer target.
33 * <!ViewGitFile(mlton,master,mlton/ssa/flatten.fun)>
35 == Details and Notes ==