5 research outputs found
A Correspondence between Two Approaches to Interprocedural Analysis in the Presence of Join
Many interprocedural static analyses perform a lossy join for
reasons of termination or efficiency. We study the relationship between
two predominant approaches to interprocedural analysis, the summary-
based (or functional) approach and the call-strings (or k-CFA) approach,
in the presence of a lossy join. Despite the use of radically different ways
to distinguish procedure contexts by these two approaches, we prove
that post-processing their results using a form of garbage collection ren-
ders them equivalent. Our result extends the classic result by Sharir and
Pnueli that showed the equivalence between these two approaches in the
setting of distributive analysis, wherein the join is lossless.
We also empirically compare these two approaches by applying them to a
pointer analysis that performs a lossy join. Our experiments on ten Java
programs of size 400K{900K bytecodes show that the summary-based
approach outperforms an optimized implementation of the k-CFA approach: the
k-CFA implementation does not scale beyond k=2, while the summary-based approach proves up to 46% more pointer analysis client queries than 2-CFA. The summary-based approach thus enables, via our equivalence result, to measure the precision of k-CFA with unbounded k, for the class of interprocedural analyses that perform a lossy join
Soundness of data flow analyses for weak memory models
Abstract. Modern multi-core microprocessors implement weak memory consistency models; programming for these architectures is a challenge. This paper solves a problem open for ten years, and originally posed by Rinard: we identify sufficient conditions for a data flow analysis to be sound w.r.t. weak memory models. We first identify a class of analyses that are sound, and provide a formal proof of soundness at the level of trace semantics. Then we discuss how analyses unsound with respect to weak memory models can be repaired via a fixed point iteration, and provide experimental data on the runtime overhead of this method.