Procedure Boundary Elimination for EPIC Compilers Spyridon Triantafyllis, Manish Vachharajani, and David I. August (Princeton University)

Traditional compilation frameworks compile using procedures as the basic unit of compilation. While this approach has yielded good results in the past it is a hindrance on modern EPIC machines. This is because EPIC compilers need a large optimization scope in order to produce quality code and extract sufficient ILP; procedure boundaries limit this scope. To address this problem, researchers have proposed interprocedural analysis and inlining. Interprocedural analysis exposes more information for use in optimization and can be employed extensively provided that compile time permits. Inlining not only exposes more code to analysis, but allows callee code to be specialized for a particular call site via optimization. Furthermore, callee code can be scheduled with caller code, enhancing ILP. Unfortunately aggressively inlining to exploit these benefits can lead to instruction cache penalties due to code growth as well as compile time slowdown.

In this paper we propose a novel compilation strategy called Procedure Boundary Elimination (PBE). The PBE approach eliminates procedure boundaries without causing any code growth and then employs targeted code specialization to create more optimization opportunities, as inlining did, but only for hot code limiting code growth. In this way, PBE can expand the optimization scope in EPIC compilers to aid in extracting ILP while avoiding the code size and instruction cache penalties associated with inlining.