Combining Interprocedural Pointer Analysis and Conditional Constant Propagation

        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 inexecutable 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 resolve 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 that 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 analyses 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.

By: Anthony Pioli, Michael Hind

Published in: RC21432 in 1999

This Research Report is not available electronically. Please request a copy from the contact listed below. IBM employees should contact ITIRC for a copy.

Questions about this service can be mailed to reports@us.ibm.com .