1997 · 104 citations · 28 references
ComputingComputer EngineeringComputer ScienceCompilersProgramming LanguagesSystems ProgrammingControl-flow AnalysisData-flow AnalysisBranch AnalysisCode Path AnalysisCompile-time OptimizationControl Flow Graph AnalysisCorrelationInterprocedural AnalysisInterprocedural Control-flow AnalysisInterprocedural Optimization
The existence of statically detectable correlation among conditional branches enables their elimination, an optimization that has a number of benefits. This paper presents techniques to determine whether an interprocedural execution path leading to a conditional branch exists along which the branch outcome is known at compile time, and then to eliminate the branch along this path through code restructuring. The technique consists of a demand driven interprocedural analysis that determines whether a specific branch outcome is correlated with prior statements or branch outcomes. The optimization is performed using a code restructuring algorithm that replicates code to separate out the paths with correlation. When the correlated path is affected by a procedure call, the restructuring is based on procedure entry splitting and exit splitting. The entry splitting transformation creates multiple entries to a procedure, and the exit splitting transformation allows a procedure to return control to one of several return points in the caller. Our technique is efficient in that the correlation detection is demand driven, thus avoiding exhaustive analysis of the entire program, and the restructuring never increases the number of operations along a path through an interprocedural control flow graph. We describe the benefits of our interprocedural branch elimination optimization (ICBE). Our experimental results show that, for the same amount of code growth, the estimated reduction in executed conditional branches is about 2.5 times higher with the ICBE optimization than when only intraprocedural conditional branch elimination is applied.
28
B. Ramakrishna Rau, C. D. Glaeser · ACM SIGMICRO newsletter/SIGMICRO newsletter/SIGMICRO, TCMICRO newsletter · 1981 · 455 citations · Full text
Jens Knoop, Oliver Rüthing, Bernhard Steffen · 1992 · 261 citations · Full text
Precise concrete type inference for object-oriented languages
John Plevyak, Andrew A. Chien · 1994 · 223 citations · Full text