In an effort to extract higher levels of instruction-level parallelism (ILP) from programs
and meet the needs of today's wide-issue machines, compilers are employing aggressive
global optimizations and scheduling techniques. The application of these transformations
to a program is a time-intensive task. Compilers also often employ aggressive
procedure inlining in order to obtain a more global view of a program and expose cyclic
code. This process increases the size of the functions in a program. In a traditional compiler,
this may cause the optimization and scheduling of a function to become intractable
as the memory and time compilation requirements increase.