Abstract
It is generally agreed that there is a difference between practical and impractical compile-time analyses, although there is no consensus on the interpretation of these terms. This extended abstract presents the author's personal opinion of what makes an analysis practical for real-world problems. In the talk summarized in this abstract, practical, scalable compile-time analysis is defined and steps the community needs to take toward developing such analyses are discussed. Examples in interprocedural analysis of C and C++ from the PROLANGS research group are used for illustration.
This research was supported, in part, by funds from NSF grants GER90-2362 and CCR95-01761.
See http://www.prolangs.rutgers.edu
Preview
Unable to display preview. Download preview PDF.
References
F. E. Allen. A basis for program optimization. In Proceedings of 1971 IFIP Congress, pages 385–390. Institute of Electrical and Electronics Engineers, Inc., North Holland Publishing Company, Amsterdam, Holland, 1971.
Michael Burke, Paul Carini, Jong-Dock Choi, and Michael Hind. Flow-insensitive interprocedural alias analysis in the presence of pointers. In Proceedings of the 7th International Workshop on Languages and Compilers for Parallel Computing, pages 234–250. Springer-Verlag, August 1994.
M. Burke. An interval-based approach to exhaustive and incremental interprocedural data flow analysis. ACM Transactions on Programming Languages and Systems, 12(3):341–395, July 1990.
P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixed points. In Conference Record of the Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, January 1977.
Jong-Dock Choi, Ron Cytron, and Jeanne Ferrante. Automatic construction of sparse data flow evaluation graphs. In Conference Record of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 55–66, January 1991.
K. Cooper and K. Kennedy. Efficient computation of flow insensitive interprocedural summary information. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pages 247–258, June 1984. SIGPLAN Notices, Vol 19, No 6.
M. D. Carroll and B. G. Ryder. Incremental data flow analysis via dominator and attribute updates. In Conference Record of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pages 274–284, January 1988.
Ramkrishna Chatterjee and Barbara G Ryder. Scalable flow-sensitive type inference for statically typed object-oriented languages. Department of Computer Science Technical Report DCS-TR-259, Rutgers University, July 1997.
Evelyn Duesterwald, Rajiv Gupta, and Mary Lou Soffa. Demand-driven computation of interprocedural data flow. In Conference Record of the Twenty-second Annual ACM Symposium on Principles of Programming Languages, January 1995.
Mary Jean Harrold and Greg Rothermel. Separate computation of alias information for reuse. IEEE Transactions on Software Engineering, 22(7), July 1996.
W. Landi and B. G. Ryder. Pointer-induced aliasing: A problem classification. In Conference Record of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 93–103, January 1991.
W. Landi and B. G. Ryder. A safe approximation algorithm for interprocedural pointer aliasing. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 235–248, June 1992.
W. Landi, B. G. Ryder, and S. Zhang. Interprocedural modification side effect analysis with pointer aliasing. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation, pages 56–67, June 1993.
W. Landi, B. G. Ryder, S. Zhang, P. Stocks, and R. Altucher. A comparison of flow sensitive and insensitive modification side effects analyses for C systems. Technical report, July 1997. Available as Department of Computer Science Technical Report, Rutgers University, see http://www.prolangs.rutgers.edu.
T. J. Marlowe and B. G. Ryder. An efficient hybrid algorithm for incremental data flow analysis. In Conference Record of the Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 184–196, January 1990.
T. J. Marlowe and B. G. Ryder. Properties of data flow frameworks: A unified model. Acta Informatica, 28:121–163, 1990.
L. Pollock and M. Soffa. An incremental version of iterative data flow analysis. IEEE Transactions on Software Engineering, 15(12), December 1989.
T. Reps. Solving demand versions of interprocedural analysis problems. In Proceedings of the Fifth International Conference on Compiler Construction, pages 389–403, April 1994. Appeared as Lecture Notes in Computer Science, Vol 786.
B. G. Ryder and M. C. Paull. Incremental data flow analysis algorithms. ACM Transactions on Programming Languages and Systems, 10(1):1–50, January 1988.
Marc Shapiro and Susan Horwitz. Fast and accurate flow-insensitive points-to analysis. In Conference Record of the Twenty-fourth Annual ACM Symposium on Principles of Programming Languages, pages 1–14, January 1997.
Bjarne Steensgaard. Points-to analysis in almost linear time. In Conference Record of the Twenty-second Annual ACM Symposium on Principles of Programming Languages, pages 32–41, 1995.
Frank Tip. A survey of program slicing technques. Journal of Programming Languages, 3(3):121–189, 1996.
Daniel Weise, Roger F. Crew, Michael Ernst, and Bjarne Steensgaard. Value dependence graphs: Representation without taxation. In Conference Record of the Twenty-first Annual ACM Symposium on Principles of Programming Languages, pages 297–310, 1994.
W. E. Weihl. Interprocedural data flow analysis in the presence of pointers, procedure variables and label variables. In Conference Record of the Seventh Annual ACM Symposium on Principles of Programming Languages, pages 83–94, January 1980.
J. Yur, B. G. Ryder, W. Landi, and P. Stocks. Incremental analysis of side effects for c software systems. In Proceedings of the Fourth International Conference on Software Engineering, pages 422–432, May 1997.
F. K. Zadeck. Incremental data flow analysis in a structured program editor. In Proceedings of the ACM SIGPLAN Symposium on Compiler Construction, pages 132–143, June 1984. SIGPLAN Notices, Vol 19, No 6.
Sean Zhang, Barbara G. Ryder, and William Landi. Program decomposition for pointer aliasing: A step towards practical analyses. In Proceedings of the 4th Symposium on the Foundations of Software Engineering, October 1996.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1997 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Ryder, B.G. (1997). Practical compile-time analysis. In: Van Hentenryck, P. (eds) Static Analysis. SAS 1997. Lecture Notes in Computer Science, vol 1302. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0032762
Download citation
DOI: https://doi.org/10.1007/BFb0032762
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-63468-3
Online ISBN: 978-3-540-69576-9
eBook Packages: Springer Book Archive