| | |
Summary: Loop Headers in -calculus or CPS
Andrew W. Appel
Princeton University
appel@princeton.edu
CS-TR-460-94
Princeton University
June 15, 1994
Abstract
As is well known, the introduction of a \loop header" block facilitates the
hoisting of loop-invariant code from a loop. But in a -calculus interme-
diate representation, which has a notion of scope, this transformation is
particularly useful.
Loop headers with scope also solve an old problem with in-line expansion
of recursive functions or loops: if done naively, only the rst iteration is
inlined. A loop header can encapsulate the loop or recursion for better
in-line expansion.
This optimization improves performance by about 5% in Standard ML of
New Jersey.
I have previously described [2, pp. 83{92] the in-line expander of the Stan-
dard ML of New Jersey compiler. Its purpose is not merely to avoid function-
|