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
Preview
Unable to display preview. Download preview PDF.
References
A.V. Aho, R. Sethi, and J.D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, 1985.
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.
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.
P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In ACM Symposium on Principles of Programming Languages, pages 269–282, 1979.
K.D. Cooper and K. Kennedy. Fast interprocedural alias analysis. In ACM Symposium on Principles of Programming Languages, pages 49–59, 1989.
K.D. Cooper. Analyzing aliases of reference formal parameters. In ACM Symposium on Principles of Programming Languages, pages 281–290, 1985.
R. Fagin, J.D. Ullman, G.M. Kuper, and M.Y. Vardi. Updating logical databases. Advances in Computing Research, 3:1–18, 1986.
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.
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.
G.A. Kildall. A unified approach to global program optimization. In ACM Symposium on Principles of Programming Languages, pages 194–206, 1973.
J.B. Kam and J.D. Ullman. Global data flow analysis and iterative algorithms. Journal of the ACM, 23(1):158–171, 1976.
J.W. Lloyd. Foundations of Logic Programming. Springer-Verlag, second edition, 1987.
E.W. Myers. A precise inter-procedural data flow algorithm. In ACM Symposium on Principles of Programming Languages, pages 219–230, 1981.
NIL3 Reference Manual. IBM T.J. Waston Research Center, 1987.
B.G. Ryder and M.C. Paul. Elimination algorithms for data flow analysis. ACM Computing Surveys, 18(3):277–316, 1986.
R. Schätz. Delete operations and horn formulas. In LNCS 385, 2nd Workshop on Computer Science Logic, pages 329–343, Springer-Verlag, 1988.
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.
S. Sagiv,, M. Rodeh, and R. Wilhelm. A note on pointer equalities vs. interprocedural aliases. 1990. In preparation.
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.
M.N Wegman and F.K. Zadeck. Constant propagation with conditional branches. In ACM Symposium on Principles of Programming Languages, 1985.
Author information
Authors and Affiliations
Editor information
Rights 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