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) ...