RemoveUnused
============

<:RemoveUnused:> is an optimization pass for both the <:SSA:> and
<:SSA2:> <:IntermediateLanguage:>s, invoked from <:SSASimplify:> and
<:SSA2Simplify:>.

== Description ==

This pass aggressively removes unused:

* datatypes
* datatype constructors
* datatype constructor arguments
* functions
* function arguments
* function returns
* blocks
* block arguments
* statements (variable bindings)
* handlers from non-tail calls (mayRaise analysis)
* continuations from non-tail calls (mayReturn analysis)

== Implementation ==

* <!ViewGitFile(mlton,master,mlton/ssa/remove-unused.fun)>
* <!ViewGitFile(mlton,master,mlton/ssa/remove-unused2.fun)>

== Details and Notes ==

{empty}
