
In this paper we address the problem of detecting carried data dependences on loops or recursive functions for codes that create and traverse dynamic data structures. We propose a data dependence detection test based on a new conflict analysis algorithm. This algorithm requires two pieces of information: i) abstract shape graphs that represent the state of the heap at the code section under analysis and ii) path expressions that collect the traversing information for each statement. Our algorithm projects the path expressions on the shape graphs and checks over the graph if one of the sites reached by a write statement matches one of the sites reached by another statement on a different iteration, in which case a conflict between the two statements is reported. The proposed approach may improve other previous works by some orders of magnitude.