skip to main content
article
Free Access

Precise and efficient integration of interprocedural alias information into data-flow analysis

Published:01 March 1992Publication History
Skip Abstract Section

Abstract

Data-flow analysis is a basis for program optimization and parallelizing transformations. The mechanism of passing reference parameters at call sites generates interprocedural aliases which complicate this analysis. Solutions have been developed for efficiently computing interprocedural aliases. However, factoring the computed aliases into data-flow information has been mostly overlooked, although improper factoring results in imprecise (conservative) data-flow information. In this document, we describe a mechanism which, in factoring in interprocedural aliases, computes data-flow information more precisely and with less time and space overhead than previous approaches.

References

  1. 1 AHO, A. V., SETHI, R., AND ULLMAN, J.D. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, Mass., 1986. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. 2 BANNINa, J. An efficient way to find the side effects of procedure calls and the aliases of variables. In Conference Record of the Sixth ACM Symposium on Principles of Programming Languages (San Antonio, Tex., Jan. 29-31, 1979), pp. 29-41. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. 3 BANNING, J. A method for determining the side effects of procedure calls. Ph.D. dissertation, Stanford Univ., 1978. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. 4 BURKE, M. An interval-based approach to exhaustive and incremental interprocedural data-flow analysis. ACM Trans. Program. Lang. Syst. 12, 3 (July 1990), 341-395. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. 5 CHOI, J.-D., CYTRON, R., AND FERRANTE, J. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the ~ighteenth Annual A CM Symposium on Principles of Programming Languages (Orlando, Fla., Jan. 21-23, 1991), pp. 55-66. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. 6 COOPER, K., AND KENNEDY, K. Efficient computation of flow insensitive interprocedural summary information. In Proceedings of the SIGPLAN 84 Symposium on Compiler Construction. SIGPLAN Not. 19, 6 (June 1984), 247-258 Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. 7 COOPER, K. D., AND KENNEDY, K. Fast interprocedural alias analysis. In Sixteenth A CM Symposium on Principles of Programming Languages (Austin, Tex., Jan. 11-13 1989), pp. 49-59. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. 8 COOPER, K. D., AND KENNEDY, K. Interprocedural side-effect analysis in linear time. in Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation (June 22-24), SIGPLAN Notices 23, 7 (July 1988), pp. 57-66. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. 9 COOPER, K. D., KENNEDY, K., AND TORCZON, L. The impact of interprocedural analysis and optimization in the rn programming environment. ACM Trans. Program. Lang. Syst. 8, 4 (Oct. 1986), 491-523. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. 10 CYTRON, n., FERRANTE, J., ROSEN, B. K., WEGMAN, M. N., AND ZADECK, F.K. An efficient method for computing static single assignment form. in Sixteenth Annual A CM Symposium on Principles of Programming Languages (Austin, Texas, Jan. 11-13, 1989), pp. 25-35. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. 11 MYERS, E.W. A precise inter-procedural data flow algorithm. In Conference Record Eighth ACM Symposium on Principles of Programming Languages (Jan. 26- 28, 1981), pp. 219-230. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Precise and efficient integration of interprocedural alias information into data-flow analysis

    Recommendations

    Reviews

    William M. Waite

    Dataflow analysis is used to gather information about where variables have their values set and used, in order to decide how to optimize a program. When two or more symbols can refer to the same variable, those symbols are called aliases for the variable. Aliases must be accounted for in dataflow analysis in order to obtain correct information about the variables actually being set and used. One way in which an alias can be created for a variable is when that variable is passed by reference to a procedure: if the variable passed is also a global variable of the procedure, then the name of the reference parameter and the name of the global variable refer to the same variable. Interprocedural analysis is required to detect this kind of alias. Burke and Choi review current interprocedural alias analysis techniques and show that the standard technique is conservative, sometimes deciding that two symbols are aliases for a variable when they are not. (A conservative decision precludes some optimizations but does not lead to incorrect code.) They point out a modification to sharpen the decision procedure and explain how it can be implemented without altering the time complexity of the analysis algorithm. This paper will be useful for people engaged in code optimization. It is to the point without being cryptic, and provides enough information to implement the technique.

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!