Skip to main content

A logic-based approach to data flow analysis problems

  • Abstract Interpretation
  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 456))

Abstract

A new uniform formalism for tracking static properties of programs is presented. The formalism annotates each point in a program with static assertions, i.e., assertions which hold independently of the specific execution path leading to this point.

The novel idea is to use Horn clauses to specify the consistent environments and the meaning of program operations.

The abstract interpretation technique is used for finding conservative approximations to the static assertions and to analyze the accuracy of the approximation.

The formalism is used to specify and solve the problem of tracking pointer equality and allocations in Pascal-like languages. It is shown that the solutions are optimal under some natural assumptions.

Preliminary version

This is a preview of subscription content, log in via an institution.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A.V. Aho, R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, 1985.

    Google Scholar 

  2. J.P. Banning. An efficient way to find the side effects of procedure calls and the aliases of variables. In ACM Symposium on Principles of Programming Languages, pages 29–41, 1979.

    Google Scholar 

  3. P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction of approximation of fixed points. In ACM Symposium on Principles of Programming Languages, pages 238–252, 1977.

    Google Scholar 

  4. P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In ACM Symposium on Principles of Programming Languages, pages 269–282, 1979.

    Google Scholar 

  5. K.D. Cooper and K. Kennedy. Fast interprocedural alias analysis. In ACM Symposium on Principles of Programming Languages, pages 49–59, 1989.

    Google Scholar 

  6. K.D. Cooper. Analyzing aliases of reference formal parameters. In ACM Symposium on Principles of Programming Languages, pages 281–290, 1985.

    Google Scholar 

  7. R. Fagin, J.D. Ullman, G.M. Kuper, and M.Y. Vardi. Updating logical databases. Advances in Computing Research, 3:1–18, 1986.

    Google Scholar 

  8. R. Fagin, J.D. Ullman, and M.Y. Vardi. On the semantics of updates in databases. In ACM Symposium on Principles of Database Systems, pages 352–365, 1983.

    Google Scholar 

  9. S.L. Graham and M. Wegman. A fast and usually linear algorithm for data flow analysis. Journal of the ACM, 23(1):172–202, 1976.

    Google Scholar 

  10. G.A. Kildall. A unified approach to global program optimization. In ACM Symposium on Principles of Programming Languages, pages 194–206, 1973.

    Google Scholar 

  11. J.B. Kam and J.D. Ullman. Global data flow analysis and iterative algorithms. Journal of the ACM, 23(1):158–171, 1976.

    Google Scholar 

  12. J.W. Lloyd. Foundations of Logic Programming. Springer-Verlag, second edition, 1987.

    Google Scholar 

  13. E.W. Myers. A precise inter-procedural data flow algorithm. In ACM Symposium on Principles of Programming Languages, pages 219–230, 1981.

    Google Scholar 

  14. NIL3 Reference Manual. IBM T.J. Waston Research Center, 1987.

    Google Scholar 

  15. B.G. Ryder and M.C. Paul. Elimination algorithms for data flow analysis. ACM Computing Surveys, 18(3):277–316, 1986.

    Google Scholar 

  16. R. Schätz. Delete operations and horn formulas. In LNCS 385, 2nd Workshop on Computer Science Logic, pages 329–343, Springer-Verlag, 1988.

    Google Scholar 

  17. M. Sharir and A. Pnueli. Two approaches to interprocedural data flow analysis. In S.S. Muchnick and N.D. Jones, editors, Program Flow Analysis: Theory and Applications, chapter 6, pages 189–233, Prentice-Hall, 1981.

    Google Scholar 

  18. S. Sagiv,, M. Rodeh, and R. Wilhelm. A note on pointer equalities vs. interprocedural aliases. 1990. In preparation.

    Google Scholar 

  19. R.E. Strom and S. Yemini. Typestate: a programming language concept for enhancing software reliability. IEEE Transactions on Software Engineering, SE-12(1):157–171, 1986.

    Google Scholar 

  20. M.N Wegman and F.K. Zadeck. Constant propagation with conditional branches. In ACM Symposium on Principles of Programming Languages, 1985.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Pierre Deransart Jan Maluszyński

Rights and permissions

Reprints and permissions

Copyright information

© 1990 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Sagiv, S., Francez, N., Rodeh, M., Wilhelm, R. (1990). A logic-based approach to data flow analysis problems. In: Deransart, P., Maluszyński, J. (eds) Programming Language Implementation and Logic Programming. PLILP 1990. Lecture Notes in Computer Science, vol 456. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0024190

Download citation

  • DOI: https://doi.org/10.1007/BFb0024190

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-53010-7

  • Online ISBN: 978-3-540-46298-9

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics