| 1 | ToSSA2 |
| 2 | ====== |
| 3 | |
| 4 | <:ToSSA2:> is a translation pass from the <:SSA:> |
| 5 | <:IntermediateLanguage:> to the <:SSA2:> <:IntermediateLanguage:>. |
| 6 | |
| 7 | == Description == |
| 8 | |
| 9 | This pass is a simple conversion from a <:SSA:> program into a |
| 10 | <:SSA2:> program. |
| 11 | |
| 12 | The only interesting portions of the translation are: |
| 13 | |
| 14 | * an <:SSA:> `ref` type becomes an object with a single mutable field |
| 15 | * `array`, `vector`, and `ref` are eliminated in favor of select and updates |
| 16 | * `Case` transfers separate discrimination and constructor argument selects |
| 17 | |
| 18 | == Implementation == |
| 19 | |
| 20 | * <!ViewGitFile(mlton,master,mlton/ssa/ssa-to-ssa2.sig)> |
| 21 | * <!ViewGitFile(mlton,master,mlton/ssa/ssa-to-ssa2.fun)> |
| 22 | |
| 23 | == Details and Notes == |
| 24 | |
| 25 | {empty} |