skip to main content
10.1145/567446.567455acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free Access

Interprocedural data flow analysis in the presence of pointers, procedure variables, and label variables

Published:28 January 1980Publication History

ABSTRACT

Interprocedural data flow analysis is complicated by the use of procedure and label variables in programs and by the presence of aliasing among variables. In this paper we present an algorithm for computing possible values for procedure and label variables, thus providing a call graph and a control flow graph. The algorithm also computes the possible aliasing relationships in the program being analyzed.We assume that control flow information is not available to the algorithm; hence, this type of analysis may be termed "flow-free analysis." Given this assumption, we demonstrate the correctness of the algorithm, in the sense that the information it produces is conservative, and show that it is as precise as possible in certain cases. We also show that the problem of determining possible values for procedure variables is P-space hard. This fact indicates that any algorithm which is precise in all cases must also run very slowly for some programs.

References

  1. Aho, A. V., Hopcroft, J. E., and Ullman, J. D. Design and Analysis of Computer Algorithms, Addison-Wesley, 1974, Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Aho, A. V. and Ullman, J. D. Principles of Compiler Design, Addison-Wesley, 1977. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Allen, F. E. Interprocedural Data Flow Analysis. Proceedings IFIP Congress 74, North Holland Publishing Company, Amsterdam, 398-402.Google ScholarGoogle Scholar
  4. Allen, F. E. and Cocke, J. A Program Data Flow Analysis Procedure. CACM 19, 3 (March 1976), 137-147. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Allen, F. E., et. al. The Experimental Compiling Systems Project. IBM Research Report RC6718, T.J. Watson Research Center, Yorktown Heights, N.Y. September 1977.Google ScholarGoogle Scholar
  6. Banning, J. P. A Method for Determining the Side Effects of Procedure Calls. Ph.D. Thesis, Stanford University. Report No. 213, Stanford Linear Accelerator Center (August 1978). Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Barth, J. Interprocedural Data Flow Analysis Based on Transitive Closure. Univ. of California at Berkeley, Computer Science Dept., Tech. Rep. UCB-CS-76-44, September 1976.Google ScholarGoogle Scholar
  8. Carter, J. L. Private Communication.Google ScholarGoogle Scholar
  9. Graham, S. L. and Wegman, M. A Fast and Usually Linear Algorithm for Global Flow Analysis. JACM 23, 1 (January 1976), 172-202. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Rosen, B. K. Data Flow Analysis for Procedural Languages. JACM 26, 2 (April 1979), 322-344. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Ryder, B. G. Constructing the Call Graph of a Program. IEEE Transactions on Software Engineering SE-5, 3 (May 1979), 216-226.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Spillman, T. C. Exposing Side-Effects in a PL/I Optimizing Compiler. Proceedings IFIP Conference 1971, North Holland Publishing Company, Amsterdam, 376-381.Google ScholarGoogle Scholar
  13. Walter, K. G. Recursion Analysis for Compiler Optimization. CACM 19, 9 (September 1976), 514-516. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Wegman, M. N., and Carter, J. L. New Classes and Applications of Hash Functions. Proceedings 20th Annual Symposium on Foundations of Computer Science (October 1979), 175-182.Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Weihl, W. E. Interprocedural Data Flow Analysis in the Presence of Pointers, Procedure Variables, and Label Variables. S.M. Thesis, Massachusetts Institute of Technology (to be published).Google ScholarGoogle Scholar
  16. Winklmann, K. A. A Theoretical Study of Some Aspects of Parameter Passing in ALGOL60 and in Similar Programming Languages. Ph.D. Thesis, Purdue University (August 1977). Google ScholarGoogle ScholarDigital LibraryDigital Library

Recommendations

Comments

Login options

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

Sign in
  • Published in

    cover image ACM Conferences
    POPL '80: Proceedings of the 7th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
    January 1980
    261 pages
    ISBN:0897910117
    DOI:10.1145/567446

    Copyright © 1980 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 28 January 1980

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • Article

    Acceptance Rates

    Overall Acceptance Rate824of4,130submissions,20%

    Upcoming Conference

    POPL '25

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader