On the conversion of indirect to direct recursion

Owen Kaser B, C. R. Ramakrishnan, Shaunak R. Pawagi · ACM Letters on Programming Languages and Systems · 1993

Procedure inlining can be used to convert mutual recursion to direct recursion. This allows use of optimization techniques that are most easily applied to directly recursive procedures, in addition to the well-known benefits of inlining. We present tight (necessaryandsufficient) conditions under which inlining can transform all mutual recursion to direct recursion, and those under which heuristics to eliminate mutual recursion always terminate. We also present a technique to eliminate mutually recursive circuits that consist of only tail calls. From this, we conclude that tail recursion elimination should be interleaved with inlining.

Read the paper · More papers on PaperTik