  Usage of multiprocessor and multicore computers implies parallel programming.
Tools for preparing parallel programs include parallel languages and libraries
as well as parallelizing compilers and convertors that can perform automatic
parallelization. The basic approach for parallelism detection is analysis of
data dependencies and properties of program components, including data use and
predicates. In this article a suite of used data and predicates sets for
program components is proposed and an algorithm for computing these sets is
suggested. The algorithm is based on wave propagation on graphs with cycles and
labelling. This method allows analyzing complex program components, improving
data localization and thus providing enhanced data parallelism detection.
