## MLton 20241230+git20251029+dfsg-5

# SSASimplify

The optimization passes for the SSA IntermediateLanguage are collected and controlled by the `Simplify` functor (`simplify.sig`, `simplify.fun`).

The following optimization passes are implemented:

- CombineConversions

- CommonArg

- CommonBlock

- CommonSubexp

- ConstantPropagation

- Contify

- DuplicateGlobals

- Flatten

- Inline

- IntroduceLoops

- KnownCase

- LocalFlatten

- LocalRef

- LoopInvariant

- LoopUnroll

- LoopUnswitch

- Redundant

- RedundantTests

- RemoveUnused

- ShareZeroVec

- SimplifyTypes

- SplitTypes

- Useless

The following implementation passes are implemented:

- PolyEqual

- PolyHash

There are additional analysis and rewrite passes that augment many of the other optimization passes:

- Multi

- Restore

- Shrink

The optimization passes can be controlled from the command-line by the options:

- `-diag-pass <pass>`— keep diagnostic info for pass

- `-disable-pass <pass>`— skip optimization pass (if normally performed)

- `-enable-pass <pass>`— perform optimization pass (if normally skipped)

- `-keep-pass <pass>`— keep the results of pass

- `-loop-passes <n>`— loop optimization passes

- `-ssa-passes <passes>`— ssa optimization passes