We have recently developed a flow-sensitive algorithm to compute the
interprocedural definition-use chains of dynamic pointer-linked data structures. This
algorithm relates the statements that construct links of dynamic pointer-linked data
structures (i.e. definitions) to the statements that might traverse the structures via the
links (i.e. uses). The outcome of this computation provides the essential information for
program transformations and communication generations of data-parallel programs or
optimizations and parallelization of sequential programs with dynamic pointer-linked data
structures on parallel and distributed systems.
We have proposed a traversal-pattern-sensitive shape analysis approach to take
advantage of the availability of the definition-use information. It gathers the traversal
patterns of programs on dynamic pointer-linked data structures and then estimates the
possible shapes and connections of structures specified by traversal patterns. This
approach can simplify dependence analysis by using the knowledge of traversal patterns to
avoid gathering unnecessary alias and connection information. Furthermore, it can
facilitate dependence analysis algorithm to detect parallelism in programs even with
cyclic data structures. The dependence test algorithm presented in my dissertation first
performs conflict analysis by assuming that each unique path leads to a distinct storage
location, and then validates the result by taking the effects of aliases and connections
into account using traversal-pattern-sensitive shape analysis.