Abstract

The power of any parallelizing compiler is limited by its program analyzers. Finding the right for program analysis is crucial. The various existing data dependence abstractions can be viewed simply as approximations of the others. Moreover, data dependences have common structures, which can be exhibited by abstraction of the structure of run-time computations (the leading idea of abstract interpretation [1]). We apply the classical framework of abstract interpretation, defined in [2], to data dependence analysis. We show that data dependence abstractions (simple data dependence, dependence levels, direction vectors, distance vectors, iteration data dependence graph, expanded data dependence graph, statement data dependence graph) and data-flow dependence abstractions (defined in [3]) are abstract interpretations of the program semantics. The standard collecting semantics is defined from the small step operational trace semantics of a subset of a sequential imperative language. By successive Galois connection based abstractions, data dependences are designed as abstract semantics, that approximate the standard collecting semantics. Then the hierarchy of data dependences is constructed as a part of the lattice of abstract interpretations. The correspondence between concrete and abstract properties is established by a pair of functions that is a Galois connection. The Galois connection formalizes the loss of information of the process. Moreover, the composition of Galois connections is a Galois connection and this property allows for a compositional design of successive approximations. This formalization of the data dependence analysis corresponds to a shift from syntax, of which most of the existing data dependence analyses are based on, to semantics. This could allow the application of the achievements of the program analysis community to dependence analysis.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call