Direct parallelization of call statements
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Interprocedural side-effect analysis in linear time
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Efficient interprocedural analysis for program parallelization and restructuring
PPEALS '88 Proceedings of the ACM/SIGPLAN conference on Parallel programming: experience with applications, languages and systems
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Fast interprocedual alias analysis
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Constructing the Procedure Call Multigraph
IEEE Transactions on Software Engineering
The semantics of Scheme control-flow analysis
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Pointer target tracking—an empirical study
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Interprocedural transformations for parallel code generation
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Managing interprocedural optimization
Managing interprocedural optimization
Interprocedural compilation of Fortran D for MIMD distributed-memory machines
Proceedings of the 1992 ACM/IEEE conference on Supercomputing
Recursion analysis for compiler optimization
Communications of the ACM
A unified approach to global program optimization
POPL '73 Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages
POPL '80 Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An Implementation of Interprocedural Bounded Regular Section Analysis
IEEE Transactions on Parallel and Distributed Systems
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Proceedings of ACM conference on Proving assertions about programs
Reducing indirect function call overhead in C++ programs
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Context-sensitive interprocedural points-to analysis in the presence of function pointers
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Towards better inlining decisions using inlining trials
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Fixpoint computation for polyvariant static analyses of higher-order applicative programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Static branch frequency and program profile analysis
MICRO 27 Proceedings of the 27th annual international symposium on Microarchitecture
An empirical study of static call graph extractors
Proceedings of the 18th international conference on Software engineering
Call graph construction in object-oriented languages
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
An empirical study of static call graph extractors
ACM Transactions on Software Engineering and Methodology (TOSEM)
Initial Results for Glacial Variable Analysis
International Journal of Parallel Programming
Efficient coverage testing using global dominator graphs
Proceedings of the 1999 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering
Interprocedural pointer alias analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Practical virtual method call resolution for Java
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for call graph construction algorithms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Precise Call Graph Construction for OO Programs in the Presence of Virtual Functions
ICPP '97 Proceedings of the international Conference on Parallel Processing
An Empirical Study of Function Pointers Using SPEC Benchmarks
LCPC '99 Proceedings of the 12th International Workshop on Languages and Compilers for Parallel Computing
JaMake: A Java Compiler Environment
LSSC '01 Proceedings of the Third International Conference on Large-Scale Scientific Computing-Revised Papers
Demand-Driven Construction of Call Graphs
CC '00 Proceedings of the 9th International Conference on Compiler Construction
The impact of interprocedural class analysis on optimization
CASCON '95 Proceedings of the 1995 conference of the Centre for Advanced Studies on Collaborative research
Interprocedural side-effect analysis in linear time
ACM SIGPLAN Notices - Best of PLDI 1979-1999
A brief survey of program slicing
ACM SIGSOFT Software Engineering Notes
Interprocedural parallelization analysis in SUIF
ACM Transactions on Programming Languages and Systems (TOPLAS)
Whole-program optimization of global variable layout
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
Interprocedural definition-use chains of dynamic pointer-linked data structures
Scientific Programming
Static type determination for C++
CTEC'94 Proceedings of the 6th conference on USENIX Sixth C++ Technical Conference - Volume 6
Access pattern-based code compression for memory-constrained systems
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Optimal interprocedural program optimization: a new framework and its application
Optimal interprocedural program optimization: a new framework and its application
Analyses for the translation of OpenMP codes into SPMD style with array privatization
WOMPAT'03 Proceedings of the OpenMP applications and tools 2003 international conference on OpenMP shared memory parallel programming
Taming reflection: Aiding static analysis in the presence of reflection and custom class loaders
Proceedings of the 33rd International Conference on Software Engineering
Flow-augmented call graph: a new foundation for taming API complexity
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Hi-index | 0.00 |
We present an efficient algorithm for computing the procedure call graph, the program representation underlying most interprocedural optimization techniques. The algorithm computes the possible bindings of procedure variables in languages where such variables only receive their values through parameter passing, such as Fortran. We extend the algorithm to accommodate a limited form of assignments to procedure variables. The resulting algorithm can also be used in analysis of functional programs that have been converted to Continuation-Passing-Style.We discuss the algorithm in relationship to other call graph analysis approaches. Many less efficient techniques produce essentially the same call graph. A few algorithms are more precise, but they may be prohibitively expensive depending on language features.