CommonSubexp is an optimization pass for the SSA IntermediateLanguage, invoked from SSASimplify.
Description
It eliminates instances of common subexpressions.
Implementation
Details and Notes
In addition to getting the usual sorts of things like
-
(w + 0wx1) + (w + 0wx1)
rewritten to
let val w' = w + 0wx1 in w' + w' end
it also gets things like
-
val a = Array_uninit n val b = Array_length a
rewritten to
val a = Array_uninit n val b = n