Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/158511.158639acmconferencesArticle/Chapter ViewAbstractPublication PagespoplConference Proceedingsconference-collections
Article
Free access

Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects

Published: 01 March 1993 Publication History

Abstract

We present practical approximation methods for computing interprocedural aliases and side effects for a program written in a language that includes pointers, reference parameters and recursion. We present the following results: 1) An algorithm for flow-sensitive interprocedural alias analysis which is more precise and efficient than the best interprocedural method known. 2) An extension of traditional flow-insensitive alias analysis which accommodates pointers and provides a framework for a family of algorithms which trade off precision for efficiency. 3) An algorithm which correctly computes side effects in the presence of pointers. Pointers cannot be correctly handled by conventional methods for side effect analysis. 4) An alias naming technique which handles dynamically allocated objects and guarantees the correctness of data-flow analysis. 5) A compact representation based on transitive reduction which does not result in a loss of precision and improves precision in some case. 6) A method for intraprocedural alias analysis which is based on a sparse representation.

References

[1]
A. V. Aho, M. R. Garey, and J. D. Ullman. The transitive reduction of a directed graph. SIAM journal on Computing, 1(2):131-137, 1972.
[2]
A.V. Aho, R. Sethi, and J.D. Ullman. Compilers" Principles, Techniques, and Tools. Addison- Wesley, 1986.
[3]
Frances Allen, Michael Burke, Philippe Charles, Ron Cytron, and Jeanne Ferrante. An overview of the ptran analysis system for multiprocessing. Proceedings of the A CM 1987 International Conference on Supercomputin#, 1987. Also published in The Journal of Parallel and Distributed Computing, Oct., 1988, 5(5) pages 617-.640.
[4]
John Banning. An efficient way to find the side effects of procedure calls and the ~liases of variables. Conference Record of the Sizth A CM Symposium on Principles of Programming Languages, pages 29-41, January 1979.
[5]
Michael Burke. An interval-based approach to exhaustive and incremental interprocedural data-flow analysis. A CM Transactions on Programming Languages and Systems, 12(3):341-395, July 1990.
[6]
Michael Burke and Ron Cytron. Interprocedural dependence analysis and parallelization. Proceedings of the Sigplan '86 Symposium on Compiler Construction, 21(7):162-175, July 1986.
[7]
David R. Chase, Mark Wegman, and F. Kenneth Zadeck. Analysis of pointers and structures. Proceedings of ~he A CM SIGPLAN '90 Conference on Programming Language Design and Implementation, 25(6):296-310, June 1990.
[8]
Jong-Deok Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. Conference Record of ~he Eighteenth Annual A CM Symposium on Principles of Programming Languages, January 1991.
[9]
Keith D. Cooper and Ken Kennedy. Interprocedural side-effect analysis in linear time. Proceedings of the Sigplan '88 Conference on Programming Language Design and Implementation, 23(7):57- 66, July 1988. Atlanta,Georgia.
[10]
Keith D. Cooper and Ken Kennedy. Fast interprocedural alias analysis. Sizteenth A CM Symposium on Principles of Programming Languages, pages 49-59., January 11-13 1989. Austin, Texas.
[11]
Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. A CM Transactions on Programming Languages and Systems, October 1991.
[12]
Laurie J. Hendren and Alexandru Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed System, 1(1):35-47, January 1990.
[13]
S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation, 1989.
[14]
N. D. Jones and S. S. Muchnick. A flexible approach to interprocedural data flow analysis and programs with recursive data structures. Conference Record of the Ninth Annual A CM Symposium on Principles of Programming Languages, January 1982.
[15]
John B. Kam and Jeffrey D. Ullman. Global data flow analysis and iterative algorithms. JACM, 23,1:158-171, January 1976.
[16]
William Landi and Barbara G. Ryder. Pointerinduced aliasing: a problem classification. Conference Record of the Eighteenth Annual A CM Symposium on Principles of Programming Languages, pages 93-103, January 1991.
[17]
William Landi and Barbara G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 235-248, June 1992.
[18]
J. R. Larus and P. N. Hilfinger. Detecting conflicts between structure accesses. Proceedings of the A CM SIGPLAN '88 Conference on Programming Language Design and Implementation, 23(7):21- 34, July 1988.
[19]
Eugene W. Myers. A precise inter-procedural data flow algorithm. Conference Record of Eighth A CM Symposium on Princ@les of Programming Languages, 1981.
[20]
Barry K. Rosen. Data flow analysis for procedural languages. JACM, 26(2):322-344, April 1979.
[21]
C. Ruggieri and T. P. Murtagh. Lifetime analysis of dynamically allocated objects. Conference Record of Fifteenth A CM Symposium on Principles of Programming Languages, 1988.
[22]
Robert Tarjan. Fast algorithms for solving path problems. Journal of the Association for Computing Machinery, 28(3):594-614, 1981.

Cited By

View all
  • (2024)Practical Verification of Smart Contracts using Memory SplittingProceedings of the ACM on Programming Languages10.1145/36897968:OOPSLA2(2402-2433)Online publication date: 8-Oct-2024
  • (2024)Structure-Sensitive Pointer Analysis for Multi-structure ObjectsProceedings of the 15th Asia-Pacific Symposium on Internetware10.1145/3671016.3671396(155-164)Online publication date: 24-Jul-2024
  • (2024)Field-sensitive program slicingJournal of Systems and Software10.1016/j.jss.2023.111939210(111939)Online publication date: Apr-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
March 1993
510 pages
ISBN:0897915607
DOI:10.1145/158511
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 March 1993

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

POPL93

Acceptance Rates

POPL '93 Paper Acceptance Rate 39 of 199 submissions, 20%;
Overall Acceptance Rate 824 of 4,130 submissions, 20%

Upcoming Conference

POPL '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)99
  • Downloads (Last 6 weeks)11
Reflects downloads up to 15 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Practical Verification of Smart Contracts using Memory SplittingProceedings of the ACM on Programming Languages10.1145/36897968:OOPSLA2(2402-2433)Online publication date: 8-Oct-2024
  • (2024)Structure-Sensitive Pointer Analysis for Multi-structure ObjectsProceedings of the 15th Asia-Pacific Symposium on Internetware10.1145/3671016.3671396(155-164)Online publication date: 24-Jul-2024
  • (2024)Field-sensitive program slicingJournal of Systems and Software10.1016/j.jss.2023.111939210(111939)Online publication date: Apr-2024
  • (2022)A Case for Precise, Fine-Grained Pointer Synthesis in High-Level SynthesisACM Transactions on Design Automation of Electronic Systems10.1145/349143027:4(1-26)Online publication date: 8-Mar-2022
  • (2021)Pointer-Based Divergence Analysis for OpenCL 2.0 ProgramsACM Transactions on Parallel Computing10.1145/34706448:4(1-23)Online publication date: 15-Oct-2021
  • (2020)Log++ logging for a cloud-native worldACM SIGPLAN Notices10.1145/3393673.327695253:8(25-36)Online publication date: 6-Apr-2020
  • (2020)Design and Implementation of an Escape Analysis in the Context of Safety-Critical Embedded SystemsACM Transactions on Embedded Computing Systems10.1145/337213319:1(1-20)Online publication date: 6-Feb-2020
  • (2020)Value-Flow-Based Demand-Driven Pointer Analysis for C and C++IEEE Transactions on Software Engineering10.1109/TSE.2018.286933646:8(812-835)Online publication date: 1-Aug-2020
  • (2019)AutoAlias: Automatic Variable-Precision Alias Analysis for Object-Oriented ProgramsSN Computer Science10.1007/s42979-019-0012-11:1Online publication date: 26-Jul-2019
  • (2018)Log++ logging for a cloud-native worldProceedings of the 14th ACM SIGPLAN International Symposium on Dynamic Languages10.1145/3276945.3276952(25-36)Online publication date: 24-Oct-2018
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media