ABSTRACT
We present a simple method for partitioning a dataflow analysis problem into a series of related subproblems. We use type information (either declared by the programmer, or computed via nonstandard type inference) to conservatively approximate analysis-time data dependences between program quantities. This dependence information frees us from the need to model all program quantities simultaneously in a single, monolithic analysis. Instead, we can model quantities in any order, or even in parallel, so long as we respect the dependences. Our approach is independent of the means used to solve the subproblems, and enables the wider application of existing sparse approaches previously restricted to "separable" dataflow problems. Preliminary experiments applying our technique to flow-sensitive points-to analysis of C programs have achieved storage savings of 1.3-7.2x over existing methods.
- CC77.P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings o,f the Fourth Annual A CM Symposium on Principles of Programming Languages, pages 238- 252, Los Angeles, January 1977. Google ScholarDigital Library
- CCF91.J.-D. Choi, R. Cytron, and J. Ferrante. Automatic construction of sparse data flow evaluation graphs. In Proceedings of the Eighteenth Annual ACM Symposium on Principles of Programming Languages, pages 55-66. ACM Press, January 1991. Google ScholarDigital Library
- CFR+91.R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Efficiently computing static single assignment form and the control dependence graph. A CM Transactions on Programming Languages and Systems, 13(4):451-490, October 1991. Google ScholarDigital Library
- CWZ90.D.R. Chase, M. Wegman, and F. K. Zadeck. Analysis of pointers and structures. In Proceedings of the SIGPLAN '90 Conference on Programming Language Design and Implementation, pages 296-310, White Plains, NY, June 20-22, 1990. Google ScholarDigital Library
- Deu94.A. Deutsch. lnterprocedural may-alias analysis for pointers: Beyond k-limiting. In Proceedings of the SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 230-239. ACM Press, 1994. Google ScholarDigital Library
- DGS94.E. Duesterwald, R. Gupta, and M. L. Sofia. Reducing the cost of data flow analysis by congruence partitioning. In CC '94: Fifth International Conference on Compiler Construction, pages 357-373, April 1994. Google ScholarDigital Library
- DRZ92.D.M. Dhamdhere, B. K. Rosen, and F. K. Zadeck. How to analyze large programs efficiently and informatively. In Proceedings o} the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 212-223. ACM Press, June 1992. Google ScholarDigital Library
- Hen91.F. Henglein. Efficient type inference for higher-order binding-time analysis. In Functional Programming and Computer Architecture, pages 448-472, 1991. Google ScholarDigital Library
- Hen92.F. Henglein. Global tagging optimization by type inference. In Proceedings of The Conference on LISP and Functional Programming, pages 205-215, 1992. Google ScholarDigital Library
- HH92.L.J. Hendren and J. Hummel. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proceedings of the SIGPLAN '92 Conference on Programmin9 Language Design and implementation, pages 249-260. ACM Press, June 1992. Google ScholarDigital Library
- JP90.M. Jourdan and D. Parigot. Techniques for improving grammar flow analysis. In 3rd European Symposium on Programming, number 432 in Lecture Notes in Computer Science, pages 240-255. Berlin: Springer- Verlag, 1990. Google ScholarDigital Library
- JPP94.R. Johnson, D. Pearson, and K. Pingali. The program structure tree: Computing control regions in linear time. In Proceedings of the SIGPLAN '94 Conference on Programming Language Design and Implementation, pages 171-185, Orlando, Florida, June 20-24, 1994. ACM Press. Google ScholarDigital Library
- LR91.W. Landi and B. G. Ryder. Pointer-induced aliasing: A problem classification. In Proceedings of the Eighteenth Annual A CM Symposium on Principles of Programming Languages, pages 93-103. ACM Press, January 1991. Google ScholarDigital Library
- LR92.W. Landi and B. G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Proceedings of the SIGPLAN '92 Conference on Programming Language Design and Implementation, pages 235-248. ACM Press, June 1992. Google ScholarDigital Library
- LRF94.Y.-f. Lee, B. G. Ryder, and M. E. Fiuczynski. Region analysis: A parallel elimination method for data flow analysis. In International Conference on Computer Languages, pages 31-42. IEEE Computer Society, May 1994.Google Scholar
- OJ95.R. O'Callahan and D. Jackson. Detecting shared representations using type inference. Technical Report CMU-CS-95-202, School of Computer Science, Carnegie-Mellon University, September 1995.Google Scholar
- OJ96.R. O'Callahan and D. Jackson. Practical program understanding with type inference. Technical Report CMU-CS-96-130, School of Computer Science, Carnegie-Mellon University, May 1996.Google Scholar
- RHS95.T. Reps, S. Horwitz, and M. Sagiv. Precise interprocedural dataflow analysis via graph reachability. In Proceedings 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 49-61, January 1995. Google ScholarDigital Library
- Ruf95a.E. Ruf. Context-insensitive alias analysis reconsidered. In Proceedings of the SIGPLAN '95 Conference on Programming Language Design and Implementation, pages 13-22, June 1995. Google ScholarDigital Library
- Ruf95b.E. Ruf. Optimizing sparse representations for dataflow analysis. In A CM SIGPLAN Workshop on Intermediate Representations (IR'95), pages 50-61, January 1995. Proceedings published as ACM SIG- PLAN Notices 30(3), March 1995. Google ScholarDigital Library
- Ste95.B. Steensgaard. Sparse functional stores for imperative programs. In ACM SIGPLAN Workshop on Intermediate Representations (IR'95), pages 62-70, January 1995. Proceedings published as ACM SIG- PLAN Notices 30(3), March 1995. Google ScholarDigital Library
- Ste96a.B. Steensgaard. Points-to analysis by type inference of programs with structures and unions. In International Conference on Compiler Construction, number 1060 in Lecture Notes in Computer Science, pages 136-150, April 1996. Google ScholarDigital Library
- Ste96b.B. Steensgaard. Points-to analysis in almost linear time. In Proceedings #3rd ACM SIGPLAN- SIGACT Symposium on Principles of Programming Languages, pages 32-41, January 1996. Google ScholarDigital Library
- WCES94.D. Weise, R. F. Crew, M. Ernst, and B. Steensgaard. Value dependence graphs: Representation without taxation. Technical Report MSR-TR-94-03, Microsoft Research, Redmond, WA, April 13, 1994.Google ScholarDigital Library
- WL95.R.P. Wilson and M. S. Lam. Efficient contextsensitive pointer analysis for C programs. In Proceedings of the SIGPLAN '95 Conference on Programming Language Design and Implementation. ACM Press, June 1995. Google ScholarDigital Library
- ZRL96a.S. Zhang, B. G. Ryder, and W. Landi. Program decomposition for pointer aliasing: A step towards practical analyses. In Fourth Symposium on the Foundations of Software Engineering (FSE$), October 1996. Google ScholarDigital Library
- ZRL96b.S. Zhang, B. G. Ryder, and W. Landi. Program decomposition for pointer-induced alia.sing analysis. Technical Report LCSR-TR-259, Laboratory for Computer Science, Rutgers University, March 1996.Google Scholar
Index Terms
- Partitioning dataflow analyses using types
Recommendations
Composing dataflow analyses and transformations
Dataflow analyses can have mutually beneficial interactions. Previous efforts to exploit these interactions have either (1) iteratively performed each individual analysis until no further improvements are discovered or (2) developed "super-analyses" ...
Practical escape analyses: how good are they?
VEE '07: Proceedings of the 3rd international conference on Virtual execution environmentsA key analysis developed for the compilation of parallel programs is thread escape analysis (hereafter referred to as escape analysis), which determines what objects are accessed in more than one thread, and which references within a program are ...
Comments