As the amount of instruction-level parallelism required
to fully utilize VLIW and superscalar processors increases,
compilers must perform increasingly more aggressive analysis,
optimization, parallelization and scheduling on the input
programs. Traditionally, compilers have been built assuming
functions as the unit of compilation. In this framework,
function boundaries tend to hide valuable optimization
opportunities from the compiler. % making it undesirable.
Function inlining may be applied to assemble strongly coupled
functions into the same compilation unit at the cost of very
large function bodies. This paper introduces a new technique,
called region-based compilation, where the compiler is allowed
to repartition the program into more desirable compilation
units. Region-based compilation allows the compiler to control
problem size while exposing inter-procedural optimization and
code motion opportunities.