Compile-time non-concurrency analysis of parallel programs improves
execution efficiency by detecting possible data race conditions within
program barriers. Subroutines are modeled with control flow graphs and
region trees having plural nodes related by edges that represent the
hierarchical loop structure and construct relationship of statements.
Phase partitioning of the control flow graph allows analysis of statement
relationships with programming semantics, such as those of the OpenMP
language, that define permitted operations and execution orders.