Combining Interprocedural Pointer Analysis and Conditional Constant Propagation
Abstract: "The information computed by a pointer alias analysis can be used to improve the precision of subsequent analyses, such as conditional constant propagation. Conditional constant propagation can, in turn, discover unexecutable code, which can improve the precision of pointer analysis. This improved alias precision, in turn, may increase the effectiveness of the conditional constant propagation, and so on. One way to resolved [sic] this mutual dependence between conditional constant propagation and pointer alias analysis is to iterate over the two analyses until a fixed point is reached. In addition to raising efficiency concerns, the resulting precision may also not be optimal, i.e., a more tightly coupled analysis can have better precision for both alias analysis and conditional constant propagation than iterating over the two analyses. In this work we explore three combinations of pointer alias analysis and conditional constant propagation: a one-pass-over-analyses approach, an iterate-over-analyses approach, and a new algorithm that synthesizes pointer alias analysis and conditional constant propagation. We empirically demonstrate the efficiency and precision of these three approaches on a benchmark suite of 21 C programs ranging in size from 200 - 4,600 LOC."