Abstract
Performing inlining of routines across file boundaries is known to yield significant run-time performance improvements. In this paper, we present a scalable cross-module inlining framework that reduces the compiler's memory footprint, file thrashing, and overall compile-time. Instead of using the call-site ordering generated by the analysis phase, the transformation phase dynamically produces a new inlining order depending on the resource constraints of the system. We introduce dependences among call-sites and affinity among source files based on the inlines performed. We discuss the implementation of our technique and show how it substantially reduces compile-time and memory usage without sacrificing any run-time performance.