MLton 20070826 IntroduceLoops
Home  Index  
IntroduceLoops is an optimization pass for the SSA IntermediateLanguage, invoked from SSASimplify.

Description

This pass rewrites any SSA function that calls itself in tail position into one with a local loop and no self tail calls.

A SSA function like

fun F (arg_0, arg_1) = L_0 ()
  ...
  L_16 (x_0)
    ...
    F (z_0, z_1) Tail
  ...
becomes
fun F (arg_0', arg_1') = loopS_0 ()
  loopS_0 ()
    loop_0 (arg_0', arg_1')
  loop_0 (arg_0, arg_1)
    L_0 ()
  ...
  L_16 (x_0)
    ...
    loop_0 (z_0, z_1)
  ...

Implementation

[WWW]introduce-loops.sig [WWW]introduce-loops.fun

Details and Notes


Last edited on 2006-11-02 17:35:30 by MatthewFluet.