Abstract
We present a new interprocedural modification side effects algorithm for C programs, that can discern side effects through general-purpose pointer usage. Ours is the first complete design and implementation of such an algorithm. Preliminary performance findings support the practicality of the technique, which is based on our previous approximation algorithm for pointer aliases [LR92]. Each indirect store through a pointer variable is found, on average, to correspond to a store into 1.2 locations. This indicates that our program-point-specific pointer aliasing information is quite precise when used to determine the effects of these stores.
- All74 F.E. Allen. Interprocedttral data flow analysis. In Proceedings of 1974 IFIP Congress, pages 398-402, Amsterdam, Holland, 1974. Institute of Electrical and Electronics Engineers, Inc., North Holland Publishing Company.Google Scholar
- ASU86 A.V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986. Google ScholarDigital Library
- Ban79 J. Barming. An efficient way to find the side effects of procedure calls and the aliases of variables. In Conference Record of the Sizth Annual A CM Symposium on Principles of Programming Languages, pages 29- 41, January 1979. Google ScholarDigital Library
- Ban88 Utpal Bemerjee. Dependence Analysis for Supercom. puting. Kluwer Academic Publishers, Norwell, MA, 1988. Google ScholarDigital Library
- Bar78 J.M. Barth. A practical interprocedural data flow analysis algorithm. Communications of the A CM, 21(9):724-736, 1978. Google ScholarDigital Library
- BC86 M. Burke and R. Cytron. l. nterprocedural depenodence analysis and parallelization. In Proceedings of the A CM SIGPLAN Symposium on Compiler Construction, pages 162-175, June 1986. SIGPLAN Norices, Vol 21, No 6. Google ScholarDigital Library
- Bur90 M. 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. Google ScholarDigital Library
- Cal88 D. Callahan. The program summary graph and flowsensitive interprocedural data flow analysis. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation, pages 47-56, June 1988. Google ScholarDigital Library
- CB Jong-Deok Choi and Michael Burke. personal communication.Google Scholar
- CBC93 Jong-Deok Choi, Michael Burke, and Paul Carird. Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects. In Conterence Record of the Twentieth Annual A CM Symposium on Principles of Programming Languages, pages 232-245, January 1993. Google ScholarDigital Library
- CK84 K. Cooper and K. Kennedy. Efficient computation of How insensitive interprocedural summary information. In Proceedings of the A CM SIGPLAN Symposium on Compiler Construction, pages 247-258, June 1984. SIGPLAN Notices, Vol 19, No 6. Google ScholarDigital Library
- CK87 K. Cooper and K. Kennedy. Complexity of interprocedural side-effect analysis. Computer Science Department Techx~ical Report TR87-61, Rice University, October 1987.Google Scholar
- Coo85 K. Cooper. Analyzing aliases of reference formal parameters. In Conference Record of the Twelfth Annual A CM Symposium on Principles of Programruing Languages, pages 281-290, January 1985, Google ScholarDigital Library
- Hec77 M.S. Hecht. Flow Analysis of Computer Programs. Elsevier North-Holland, 1977. Google ScholarDigital Library
- HRB88 Susan Horwitz, Thomas Reps, and David Binkley. Interprocedural slicing using dependence graphs. In Proceedings of the SIGPLAN '88 Conference on Protramming Language Design and Implementation, pages 35-46, June 1988. Google ScholarDigital Library
- JM82 N.D. Jones and S. S. Muclmick. A flexible approach to interprocedural data flow analysis and programs with recursive data structtwes. In Conference Record of the Ninth Annual A CM Symposium on Principles of Programming Languages, pages 66-74, January 1982. Google ScholarDigital Library
- LR91 W. Landi and B. G. Ryder. Pointer-induced aliasing: A problem classification. L-x Conference Record of the Eighteenth Annual A CM Symposium on Principles of Programming Languages, pages 93-103, January 1991. Google ScholarDigital Library
- LR92 W. Landi and B. O. 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. Google ScholarDigital Library
- LRZ93 W. Landi, B. G. Ryder, and S. Zhang. interprocedural modification side effect analysis with pointer alia.sing. Teclmical Report LCSR-TR-201, Laboratory for Computer Science Research Technical Report, March 1993. This report supersedes LCSI~ TR-195 and is an expansion of our ACM SIGPLAN PLDI'93 paper. Google ScholarDigital Library
- MLR+93 Thomas J. Marlowe, William Landi, Barbara G. Ryder, Jong-Deok Choi, Michael Burke, and Paul Carini. A cost-precision comparison of two flow sensitive interprocedural algorithnm for pointer-induced aliasing. Technical report, Laboratory for Computer Science Research Technical Report, March 1993. in preparation.Google Scholar
- OO84 K.J. Ottenstein and L. M. Ottenstein. The program dependence graph in a software development environment. In Proceedings of the A CM SIG. SOFT/$iGPLAN Software Engineering Symposium on Practical Software Development Environments, pages 177-184, May 1984. Google ScholarDigital Library
- OW91 T.J. Ostrand and E. Weyu~er. Data flow based test adequecy analysis for languages with pointers. In Proceedings of the 1991 Symposium on Software Testing, Analysis and Verification (TAV4), October 1991. Victoria, B.C., Canada. Google ScholarDigital Library
- PLR92 H.D. Pande, W. Landi, and B. G. Ryder. Interprocedural def-use associations in the presence of single level pointers. Laboratory for Computer Science Research Technical Report LCSR-TR-193, Department of Computer Science, Rutgers University, 1992. being revised for journal publication.Google Scholar
- PRL91 H. Pande, B. G. Ryder, and W. Landi. Interprocedural def-use associations for C programs. In Proceedings of the A CM SIGSOFT Conference on Testing, Analysis and Validation, pages 139-153, October 1991. Google ScholarDigital Library
- RM88 C. Ruggieri and T. Murtagh. Lifetime analysis of dynamically allocated objects. In Conference Record of the Fifteenth Annual A CM Symposium on Principles of Programming Languages, pages 285-293, January 1988. Google ScholarDigital Library
- RW82 S. Rapps and E. Weyuker. Data flow analysis techniques for program test data selection. In Proceedings of the Sixth International Conference on Software Engineering, pages 272-278, September 1982. Google ScholarDigital Library
- Ryd89 B.G. Ryder. Ismm: Incremental software maintenance manager. In Proceedings of the IEEE Computer Society Conference on Software Maintenance, pages 142-164, October 1989.Google ScholarCross Ref
- Spi71 T. Spillman. Exposing side effects in a PL-I optimizing compiler. In Proceedings of IFIPS Conference, pages TA-3-56:TA-3-62, 1971.Google Scholar
- Ven91 G.A. Venkatesh. The semantic approach to program slicing. In Proceedings of the SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 107-119, June 1991. Google ScholarDigital Library
- Wei84 Mark Weiser. Program slicing. IEEE Transac. tior~ on $oftwaro Engin~~rlng, SE-10(4):3~;2-357, July 1984.Google Scholar
- Wol89 Michael Wolfe. Optimizing Supercompilers for Supercomputers. The MIT Press, Cambridge, MA, 1989. Google ScholarDigital Library
Index Terms
- Interprocedural modification side effect analysis with pointer aliasing
Recommendations
A schema for interprocedural modification side-effect analysis with pointer aliasing
The first interprocedural modification side-effects analysis for C (MODC) that obtains better than worst-case precision on programs with general-purpose pointer usage is presented with empirical results. The analysis consists of an algorithm schema ...
Interprocedural pointer alias analysis
We present practical approximation methods for computing and representing interprocedural aliases for a program written in a language that includes pointers, reference parameters, and recursion. We present the following contributions: (1) a framework ...
Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects
POPL '93: Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languagesWe 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-...
Comments