Vol. 26, No. 4, December 1994 | DAVID F. BACON, SUSAN L. GRAHAM, AND OLIVER J. SHARP
This chapter provides a comprehensive overview of compiler transformations for optimizing programs, particularly for high-performance computing environments. It covers transformations for both sequential and parallel architectures, focusing on imperative languages like C and Fortran. The transformations aim to maximize parallelism and memory locality, using techniques such as loop dependence analysis and dataflow-based optimizations. The chapter discusses the purpose, legality, and examples of each transformation, emphasizing the importance of correctness and the impact of transformations on program behavior. It also explores the organization of compilers, the role of dependence analysis, and the application of various transformations, including loop restructuring, memory access transformations, and procedure call optimizations. The chapter concludes with a discussion on transformation frameworks and compiler evaluation methods, providing a valuable resource for programmers, compiler writers, and students interested in optimizing compiler technology.This chapter provides a comprehensive overview of compiler transformations for optimizing programs, particularly for high-performance computing environments. It covers transformations for both sequential and parallel architectures, focusing on imperative languages like C and Fortran. The transformations aim to maximize parallelism and memory locality, using techniques such as loop dependence analysis and dataflow-based optimizations. The chapter discusses the purpose, legality, and examples of each transformation, emphasizing the importance of correctness and the impact of transformations on program behavior. It also explores the organization of compilers, the role of dependence analysis, and the application of various transformations, including loop restructuring, memory access transformations, and procedure call optimizations. The chapter concludes with a discussion on transformation frameworks and compiler evaluation methods, providing a valuable resource for programmers, compiler writers, and students interested in optimizing compiler technology.