Results 1 
6 of
6
Efficient ContextSensitive Pointer Analysis for C Programs
, 1995
"... This paper proposes an efficient technique for contextsensitive pointer analysis that is applicable to real C programs. For efficiency, we summarize the effects of procedures using partial transfer functions. A partial transfer function (PTF) describes the behavior of a procedure assuming that certa ..."
Abstract

Cited by 396 (9 self)
 Add to MetaCart
This paper proposes an efficient technique for contextsensitive pointer analysis that is applicable to real C programs. For efficiency, we summarize the effects of procedures using partial transfer functions. A partial transfer function (PTF) describes the behavior of a procedure assuming that certain alias relationships hold when it is called. We can reuse a PTF in many calling contexts as long as the aliases among the inputs to the procedure are the same. Our empirical results demonstrate that this technique is successfula single PTF per procedure is usually sufficient to obtain completely contextsensitive results. Because many C programs use features such as type casts and pointer arithmetic to circumvent the highlevel type system, our algorithm is based on a lowlevel representation of memory locations that safely handles all the features of C. We have implemented our algorithm in the SUIF compiler system and we show that it runs efficiently for a set of C benchmarks. 1 Introd...
Managing Interprocedural Optimization
, 1991
"... This dissertation addresses a number of important issues related to interprocedural optimization. Interprocedural optimization is an integral component in a compilation system for highperformance computing. The importance of interprocedural optimization stems from two sources: it increases the cont ..."
Abstract

Cited by 63 (9 self)
 Add to MetaCart
This dissertation addresses a number of important issues related to interprocedural optimization. Interprocedural optimization is an integral component in a compilation system for highperformance computing. The importance of interprocedural optimization stems from two sources: it increases the context available to the optimizing compiler, and it enables programmers to use procedure calls without the concern of hurting execution time. While important, interprocedural optimization can introduce some significant compiletime costs. When interprocedural information is used to optimize a procedure, the procedure is then dependent on those interprocedural facts. Thus, even if the procedure is not edited, it may require recompilation due to changes in the interprocedural facts. In addition to these effects on recompilation, interprocedural information can also be expensive to compute. Furthermore, interprocedural optimizations can increase program size which can in turn increase compile tim...
Efficient Call Graph Analysis
 ACM LETTERS ON PROGRAMMING LANGUAGES AND SYSTEMS
, 1992
"... 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 parame ..."
Abstract

Cited by 48 (3 self)
 Add to MetaCart
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.
Interprocedural optimization: eliminating unnecessary recompilation
 ACM Transactions on Programming Languages and Systems
, 1993
"... While efficient new algorithms for interprocedural dataflow analysis have made these techniques practical for use in production compilation systems,a new problem has arisen: collecting and using interprocedural information in a compiler introduces subtle dependence among the proceduresof a program. ..."
Abstract

Cited by 35 (4 self)
 Add to MetaCart
While efficient new algorithms for interprocedural dataflow analysis have made these techniques practical for use in production compilation systems,a new problem has arisen: collecting and using interprocedural information in a compiler introduces subtle dependence among the proceduresof a program. If the compiler dependson interprocedural information to optimize a given module, a subsequentediting changeto another module in the program may changethe interprocedural information and necessitaterecompilation. To avoid having to recompile every module in a program in responseto a single editing changeto one module, we have developed techniquesto more precisely determine which compilations have actually beeninvalidated by a changeto the programâ€™s source.This paper presents a general recoinpzlatton test to determine which proceduresmust be compiled in responseto a series of editing changes.Three different implementation strategies, which demonstrate the fundamental tradeoff between the cost of analysis and the precision of the resulting test, are also discussed.
An Empirical Study of Function Pointers Using SPEC Benchmarks
, 1999
"... Since the C language imposes little restriction on the use of function pointers, the task of call graph construction for a C program is far more difficult than what the algorithms designed for Fortran can handle. From the experience of implementing a call graph extractor in the IMPACT compiler, we f ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Since the C language imposes little restriction on the use of function pointers, the task of call graph construction for a C program is far more difficult than what the algorithms designed for Fortran can handle. From the experience of implementing a call graph extractor in the IMPACT compiler, we found the call graph construction problem has evolved into an interprocedural pointer analysis problem. A complete and precise call graph can be constructed from fully resolved function pointers. In this paper, we report an empirical study of function pointers in the complete SPECint92 and SPECint95 benchmarks. We evaluate the resolution of function pointers and the potential program transformations enabled by a complete call graph. We also examine several real examples of function pointer manipulation found in these benchmarks. They can be considered as critical issues in the design of a complete interprocedural pointer analysis algorithm. 2 1 Introduction With the rapid advancement in mo...
UC32 A METHOD FOR DETERMINING THE SIDE EFFECTS OF PROCEDURE CALLS*
, 1978
"... Dissertation An abstract model of blockstructured programs is developed and used to prove that the methods given yield approximations which are safe for use in program optimization and, for certain side effects, are at least as precise as those given by any previous method. The implementation of ..."
Abstract
 Add to MetaCart
Dissertation An abstract model of blockstructured programs is developed and used to prove that the methods given yield approximations which are safe for use in program optimization and, for certain side effects, are at least as precise as those given by any previous method. The implementation of these methods is discussed in general and a particular implementation for the programming language PASCAL is described. Finally, the results of an _empirical study of side effects and aliases in a collection of PASCAL programs are presented. ij?ACKNOWLEDGEMENTS I would like to express my appreciation to my thesis committee, especially to my adviser, Forest Baskett, for his patient guidance and to Jeffry Barth for his helpful and encouraging remarks and for unknowingly starting me on this project by a presentation of his own work in this area. I would also like to thank Bernard Peuto for his cheerful criticism and prodding. Most of this work was supported by the United States Department of Energy under contract EY76C030515. I am also grateful for the support of Amdahl Corporation and the encouragement of my supervisor there, Kornel Spiro. Finally, I would like to thank my parents and grandparents for their support and encouragement during my years of study.ivNOTATION + * Used as set union and intersection as well as