[LLVMdev] Dependence Analysis [was: Flow-Sensitive AA]

matthieu at illinois.edu matthieu at illinois.edu
Mon Aug 25 11:54:00 PDT 2008



>Polyhedral representations are powerful but somewhat expensive to  
>construct and simple dependence tests don't construct them.  Forcing  
>all dependence test results to go through them would be overkill.

   
>Also, many loop transforms, e.g., loop interchange, don't need the  
>polyhedral info, just direction vectors.  You could instead provide  
>both direction vectors and polyhedral info  through the interface,  
>with some way to check if either is available.

So far I see 3 ways of expressing dependencies:
- Loop level
- Direction vector
- Polyhedral representation

Polyhedral representation subsume direction vector and direction vector subsume loop level. We can as well:
- create a hierarchy of dependence type and implementing the logic for isa, cast and dyn_cast. 
- Provide some constructors to build a dependence type from a less precise one. This does not scale well with the number of type to maintain. But as long as there is few types (3 so far) this is maintainable.

>
>>
>> - Supporting delinearisation.
>
>
>I think this should be a separate pass.

I agree. It should be an analysis pass queried by the dependence analysis as a fall back whenever all the dependence tests from the other indexes were 
non-conclusive.

--Matthieu



More information about the llvm-dev mailing list