= SplitTypes

<<SplitTypes#>> is an optimization pass for the <<SSA#>> <<IntermediateLanguage#>>,
invoked from <<SSASimplify#>>.

== Description

<<SplitTypes#>> performs a unification-based analysis to split a datatype into
distinct instances for constructed values that are not unified.  Because
datatypes are recursive, other analyses often conflate all defs and uses of
`ConApp`-s; `SplitTypes` allows non-unified instances of a datatype to be
analyzed separately.

== Implementation

* https://github.com/MLton/mlton/blob/master/mlton/ssa/split-types.fun[`split-types.fun`]

== Details and Notes

{empty}
