Demand-driven Inlining Heuristics in a Region-based Optimizing Compiler for ILP Architectures

While scientists and engineers have been taking on the challenge of converting their applications into parallel programs, compilers are charged with identifying opportunities and transforming codes to exploit the available instruction-level parallelism (ILP) offered by today’s uniprocessors, even within a parallel computing environment. Region-based compilation repartitions a program into more desirable compilation units for optimization and ILP scheduling. With region-based compilation, the compiler can control problem size and complexity by controlling region size and contents, and expose interprocedural scheduling and optimization opportunities without interprocedural analysis or large function bodies. However, heuristics play a key role in determining when it is most beneficial to inline functions during region formation. This paper presents and experimentally compares a set of heuristics for demand-driven inlining performed during region formation in terms of static code growth, compile-time memory, and run-time performance.

[1]  Lori L. Pollock,et al.  Region formation analysis with demand-driven inlining for region-based optimization , 2000, Proceedings 2000 International Conference on Parallel Architectures and Compilation Techniques (Cat. No.PR00622).

[2]  Steve Johnson,et al.  Compiling C for vectorization, parallelization, and inline expansion , 1988, PLDI '88.

[3]  C. R. Ramakrishnan,et al.  Evaluating Inlining Techniques , 1998, Comput. Lang..

[4]  Ian Piumarta,et al.  Optimizing direct threaded code by selective inlining , 1998, PLDI 1998.

[5]  Jack W. Davidson,et al.  A study of a C function inliner , 1988, Softw. Pract. Exp..

[6]  Wen-mei W. Hwu,et al.  Inline function expansion for compiling C programs , 1989, PLDI '89.

[7]  Bennett B. Goldberg,et al.  Trimaran - An Infrastructure for Compiler Research in Instruction Level Parallelism , 1998 .

[8]  Andrew W. Appel,et al.  Compiling with Continuations , 1991 .

[9]  Craig Chambers,et al.  Towards better inlining decisions using inlining trials , 1994, LFP '94.

[10]  Mary Hall Managing interprocedural optimization , 1992 .

[11]  Suresh Jagannathan,et al.  Flow-directed inlining , 1996, PLDI '96.

[12]  Robert Scheifler,et al.  An analysis of inline substitution for a structured programming language , 1977, CACM.

[13]  Thomas W. Reps,et al.  Demand interprocedural dataflow analysis , 1995, SIGSOFT FSE.

[14]  Manuel Serrano Inline Expansion: When and How? , 1997, PLILP.

[15]  J. Michael Ashley The effectiveness of flow analysis for inlining , 1997, ICFP '97.

[16]  Rajiv Gupta,et al.  A demand-driven approach for efficient interprocedural data flow analysis , 1996 .

[17]  Andrew Ayers,et al.  Aggressive inlining , 1997, PLDI '97.

[18]  Scott A. Mahlke,et al.  Profile‐guided automatic inline expansion for C programs , 1992, Softw. Pract. Exp..

[19]  Jack W. Davidson,et al.  Subprogram Inlining: A Study of its Effects on Program Execution Time , 1992, IEEE Trans. Software Eng..

[20]  David F. Bacon,et al.  Compiler transformations for high-performance computing , 1994, CSUR.