<div>This is an updated version of the dependence-analysis patch, reflecting feedback from the walkthrough at Qualcomm a couple of weeks ago. There's more documentation, better handling of SCEVs, many corrections, better handling of symbolics by the GCD test, more special cases caught by the WeakCrossing test, more test cases, etc.</div>


<div><br></div><div><div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">It's a fairly complete implementation of the paper</span></div><div><br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">

<blockquote style="color:rgb(34,34,34);font-size:13px;margin:0px 0px 0px 40px;font-family:arial,sans-serif;padding:0px;border:none">Practical Dependence Testing<br>Gina Goff, Ken Kennedy, and Chau-Wen Tseng<br>PLDI 1991</blockquote>

<br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">It lacks the fancier MIV tests (it has only the RDIV test, the Delta test, and the GCD test) and cannot yet propagate constraints between coupled RDIV subscripts (discussed in Section 5.3.2 of the paper). I expect to add these in the future.</span><br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">

<br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">It's organized as a FunctionPass with a single entry point that supports testing for dependence between two instructions in a function. If there's no dependence, it returns null. If there's a dependence, it returns a pointer to a Dependence which can be queried about details (what kind of dependence, is it loop independent, direction and distance vector entries, etc). I haven't included every imaginable feature, but there's a good selection that should be adequate for supporting many loop transformations. Of course, it can be extended as necessary.</span><br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">

<br style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">Included in the patch file are many test cases, commented with C code showing the loops and array references.</span></div>

<div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><br></span></div></div><div>Thanks,</div><div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif">Preston</span></div>

<div><span style="color:rgb(34,34,34);font-size:13px;font-family:arial,sans-serif"><br>
</span></div>