A schema for interprocedural modification side-effect analysis with pointer aliasing
- 1 March 2001
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 23 (2) , 105-186
- https://doi.org/10.1145/383043.381532
Abstract
The first interprocedural modification side-effects analysis for C (MOD C ) 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 corresponding to a family of MOD C algorithms with two independent phases: one for determining pointer-induced aliases and a subsequent one for propagating interprocedural side effects. These MOD C algorithms are parameterized by the aliasing method used. The empirical results compare the performance of two dissimilar MOD C algorithms: MOD C ( FSAlias ) uses a flow-sensitive, calling-context-sensitive interprocedural alias analysis; MOD C ( FIAlias uses a flow-insensitive, calling-context-insensitive alias analysis which is much faster, but less accurate. These two algorithms were profiled on 45 programs ranging in size from 250 to 30,000 lines of C code, and the results demonstrate dramatically the possible cost-precision trade-offs. This first comparative implementation of MOD C analyses offers insight into the differences between flow-/context-sensitive and flow-/context-insensitive analyses. The analysis cost versus precision trade-offs in side-effect information obtained are reported. The results show surprisingly that the precision of flow-sensitive side-effect analysis is not always prohibitive in cost, and that the precision of flow-insensitive analysis is substantially better than worst-case estimates and seems sufficient for certain applications. On average MOD C ( FSAlias ) for procedures and calls is in the range of 20% more precise than MOD C ( FIAlias ); however, the performance was found to be at least an order of magnitude slower than MOD C ( FIAlias ).Keywords
This publication has 79 references indexed in Scilit:
- Interprocedural pointer alias analysisACM Transactions on Programming Languages and Systems, 1999
- More experience with data flow testingIEEE Transactions on Software Engineering, 1993
- Pointer-induced aliasingACM SIGPLAN Notices, 1993
- An experimental comparison of the effectiveness of branch testing and data flow testingIEEE Transactions on Software Engineering, 1993
- A critical analysis of incremental iterative data flow analysis algorithmsIEEE Transactions on Software Engineering, 1990
- An interval-based approach to exhaustive and incremental interprocedural data-flow analysisACM Transactions on Programming Languages and Systems, 1990
- An incremental version of iterative data flow analysisIEEE Transactions on Software Engineering, 1989
- Incremental data-flow analysis algorithmsACM Transactions on Programming Languages and Systems, 1988
- Efficient computation of flow insensitive interprocedural summary informationACM SIGPLAN Notices, 1984
- A practical interprocedural data flow analysis algorithmCommunications of the ACM, 1978