Results 1 -
7 of
7
Efficient Context-Sensitive Pointer Analysis for C Programs
, 1995
"... This paper proposes an efficient technique for contextsensitive pointer analysis that is applicable to real C programs. For efficiency, we summarize the effects of procedures using partial transfer functions. A partial transfer function (PTF) describes the behavior of a procedure assuming that certa ..."
Abstract
-
Cited by 375 (9 self)
- Add to MetaCart
This paper proposes an efficient technique for contextsensitive pointer analysis that is applicable to real C programs. For efficiency, we summarize the effects of procedures using partial transfer functions. A partial transfer function (PTF) describes the behavior of a procedure assuming that certain alias relationships hold when it is called. We can reuse a PTF in many calling contexts as long as the aliases among the inputs to the procedure are the same. Our empirical results demonstrate that this technique is successful---a single PTF per procedure is usually sufficient to obtain completely context-sensitive results. Because many C programs use features such as type casts and pointer arithmetic to circumvent the high-level type system, our algorithm is based on a low-level representation of memory locations that safely handles all the features of C. We have implemented our algorithm in the SUIF compiler system and we show that it runs efficiently for a set of C benchmarks. 1 Introd...
A Schema for Interprocedural Modification Side-Effect Analysis With Pointer Aliasing
- In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation
, 2001
"... 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 MODC algorithms with ..."
Abstract
-
Cited by 126 (13 self)
- Add to MetaCart
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 MODC 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 [LR92]; 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 tradeoffs. This first comparative implementation of MODC analyses offers insight into the differences between flow-/context-sensitive and flow-/context-insensitive analyses. The analysis cost versus precision tradeoffs in side-effect information obtained is 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 MODC (FSAlias) for procedures and calls is in the range of 20% more precise than MODC (F IAlias); however, the performance was found to be at least an order of magnitude slower than MODC (F IAlias).
Interprocedural Aliasing In The Presence Of Pointers
, 1992
"... An Alias occurs at some program point during execution when two or more names exist for the same location. We've investigated the theoretical difficulty of determining the aliases of a program, developed an approximation algorithm for solving for aliases in C like languages, and explored the precisi ..."
Abstract
-
Cited by 56 (8 self)
- Add to MetaCart
An Alias occurs at some program point during execution when two or more names exist for the same location. We've investigated the theoretical difficulty of determining the aliases of a program, developed an approximation algorithm for solving for aliases in C like languages, and explored the precision (i.e., closeness of our approximate solution to the actual solution) and time behavior of this algorithm. Myers [Mye81] explored the theoretical difficulty of solving flow sensitive interprocedural data flow problems in the presence of aliasing. However, he did not make any claims about the difficulty of determining aliases. We isolate various programming language mechanisms that create aliases. The complexity of the alias problem (i.e., determining the aliases for a program) induced by each mechanism and their combinations is considered s...
Incremental analysis of side effects for C software systems
- PROCEEDINGS OF THE NINETEENTH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING
, 1997
"... Incremental static analysis seeks to efficiently update semantic information about an evolving software system, without recomputing "from scratch." Interprocedural modification side effect analysis (MOD) calculates the set of variables possibly modified by execution of a procedure or a statement. We ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
Incremental static analysis seeks to efficiently update semantic information about an evolving software system, without recomputing "from scratch." Interprocedural modification side effect analysis (MOD) calculates the set of variables possibly modified by execution of a procedure or a statement. We introduce a partial incrementalization of MOD for C systems using the hybrid method and present results of a study of 27 C programs, that predicts that our incremental MOD analysis will be substantially cheaper than exhaustive analysis for many program changes.
Incremental Algorithms and Empirical Comparison for Flow- and Context-sensitive Pointer Aliasing Analysis
- In Proceedings of the 21st International conference on Software Engineering
, 1998
"... Pointer aliasing analysis is used to determine if two object names containing dereferences and/or field selectors, (e.g., *p,q->t), may refer to the same location during execution. Such information is necessary for applications such as data-flow-based testers, program understanding tools, and debugg ..."
Abstract
-
Cited by 4 (0 self)
- Add to MetaCart
Pointer aliasing analysis is used to determine if two object names containing dereferences and/or field selectors, (e.g., *p,q->t), may refer to the same location during execution. Such information is necessary for applications such as data-flow-based testers, program understanding tools, and debuggers, but is expensive to calculate with acceptable precision. Incremental algorithms update data flow information after a program change rather than recomputing it from scratch, with the belief that the change impact will be limited. Two versions of a practical incremental pointer aliasing algorithm have been developed, based on Landi-Ryder flow- and context-sensitive alias analysis. Empirical results attest to the time savings over exhaustive analysis (a six-fold speedup on average), and the precision of the approximate solution obtained (on average same solution as exhaustive algorithm for 75% of the tests.)
Incremental Analysis of MOD Problem for C
, 1995
"... Incremental data flow analysis seeks to efficiently and precisely update data flow information after source code changes, based on the knowledge of the former solution and the changes, without re-computation from scratch. Interprocedural modification side effect analysis (i.e., MOD) finds the set of ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Incremental data flow analysis seeks to efficiently and precisely update data flow information after source code changes, based on the knowledge of the former solution and the changes, without re-computation from scratch. Interprocedural modification side effect analysis (i.e., MOD) finds the set of variables modified by execution of a statement. Computing MOD information for a language with general purpose pointers, like C, is very complicated and costly. We study the applicability of the hybrid algorithm [MR90] to incrementalize PMOD - a subproblem of the MOD problem for C. We also show how to update data flow information when non-structural or structural changes are made to the flow graph. 1. Introduction Information about the uses and definitions of data in programs is crucial to software testing, debugging and maintenance, especially of large software systems [Ryd89]. This information is also essential in program optimization and parallelization [ASU86]. Since a software system ev...
Differences in Algorithmic Parallelism in Control Flow and Call Multigraphs
- in Proceedings of the Seventh Annual Workshop on Languages and Compilers for Parallel Computing
, 1994
"... This paper describes our experiences with an implementation of the Interprocedural May Alias problem for Fortran. The disappointing speedups obtained led us to subsequent study of the effectiveness of our region partitioning methods on call multigraphs as compared to control flow graphs. We develope ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This paper describes our experiences with an implementation of the Interprocedural May Alias problem for Fortran. The disappointing speedups obtained led us to subsequent study of the effectiveness of our region partitioning methods on call multigraphs as compared to control flow graphs. We developed two metrics,

