Code restructuring compilers rely heavily on program analysis techniques to automatically detect data dependences between program statements. Dependences between statement instances in the iteration space of a loop nest impose ordering constraints that must be preserved in order to produce valid optimized, vectorized, and parallelized loop nests. This paper evaluates a new approach for fast and accurate nonlinear array dependence testing using Chains of Recurrences (CRs). A flow-sensitive loop analysis algorithm is presented for constructing the CR forms of array index expressions. Unlike other approaches, the CR forms are directly integrated into a standard dependence test to solve nonlinear CR-based dependence equations. To study the coverage and performance of the proposed CR-based enhancements of a standard test, we chose the inexact Banerjee test. We implemented a new CR-based Banerjee test in the Polaris compiler and compared the results to the Omega test and Range test on a se...
Johnnie Birch, Robert A. van Engelen, Kyle A. Gall