CODE OPTIMIZATION IN MODERN COMPILERS Krishna V. Palem (Courant Institute) and Vivek Sarkar (IBM) The primary goal of this tutorial is to provide an overview of state-of- the-art code optimization techniques used in compilers for modern processors. The performance gap between optimized and unoptimized code continues to widen as modern processors have evolved to include hardware features such as superscalar and pipelined functional units, and sophisticated memory hierarchies. Compile-time code optimization is critical to automatically harnessing the high performance offered by modern processors. The tutorial is self-contained and begins with an overview of the design of optimizing compilers. Selected state-of-the-art optimizations such as instruction scheduling, register allocation and optimizations for memory hierarchies are then discussed in detail, using a quantitative framework to explain the key principles. Issues related to interactions among individual optimizations are also discussed. The optimizations covered in this tutorial are most relevant for RISC processors, and third-generation programming languages such as C and Fortran.