[LoopAccesses 2/3] Allow querying of interesting dependences
authorAdam Nemet <anemet@apple.com>
Tue, 10 Mar 2015 17:40:37 +0000 (17:40 +0000)
committerAdam Nemet <anemet@apple.com>
Tue, 10 Mar 2015 17:40:37 +0000 (17:40 +0000)
commit7063c7e0844bbd2e59ef639dd4b88907b2520aa9
tree1cbcadc44bf86947d32224a1b0a2d5206817a9b3
parent0ddb48c2f8da0937c47c08bfb5ba58c47edf3bce
[LoopAccesses 2/3] Allow querying of interesting dependences

Gather an array of interesting dependences rather than just failing
after the first unsafe one and regarding the loop unsafe.  Loop
Distribution needs to be able to collect all dependences in order to
isolate the dependence cycles into their own partition.

Since the dependence checking algorithm is quadratic in terms of
accesses sharing the same underlying pointer, I am applying a cut-off
threshold (MaxInterestingDependence).  Exceeding that, the logic reverts
back to the original approach deeming the loop unsafe upon encountering
the first unsafe dependence.

The main idea of the patch is to split isDepedent from directly
answering the question whether the dep is safe for vectorization to
return a dependence type which then gets mapped to old boolean result
using Dependence::isSafeForVectorization.

Tested that this was compile-time neutral on SpecINT2006 LTO bitcode
inputs.  No assembly change on the testsuite including external.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231806 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Analysis/LoopAccessAnalysis.h
lib/Analysis/LoopAccessAnalysis.cpp