1997 · 296 citations · 42 references
ComputingComputer ScienceAlgorithmsCompilersProgramming LanguagesAbstract Syntax TreesControl-flow AnalysisData-flow AnalysisObject-oriented AnalysisObject-oriented ProgrammingParameterized AlgorithmsCall Graph ConstructionControl-flow Graph ConstructionFirst-class FunctionsInterprocedural AnalysisInterprocedural OptimizationObject-oriented ArchitecturePrecisionRelative Precision
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedural analysis to programs written in object-oriented or functional languages is complicated by the difficulty of constructing an accurate program call graph. This paper presents a parameterized algorithmic framework for call graph construction in the presence of message sends and/or first class functions. We use this framework to describe and to implement a number of well-known and new algorithms. We then empirically assess these algorithms by applying them to a suite of medium-sized programs written in Cecil and Java, reporting on the relative cost of the analyses, the relative precision of the constructed call graphs, and the impact of this precision on the effectiveness of a number of interprocedural optimizations.
42
Patrick Cousot, Radhia Cousot · 1977 · 6.2K citations
Points-to analysis in almost linear time
Bjarne Steensgaard · 1996 · 1.1K citations · Full text
A unified approach to global program optimization
Gary A. Kildall · 1973 · 901 citations
Efficient implementation of the smalltalk-80 system
L. Peter Deutsch, Allan M. Schiffman · 1984 · 589 citations