summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2015-11-03 20:13:43 +0000
committerAdam Nemet <anemet@apple.com>2015-11-03 20:13:43 +0000
commit07bcdf3c682fc3537620d60279651c4ceab4746a (patch)
tree74da3bb98ca264774ffb525010ebc564b5295efd /include
parent26abcb32772f9d7a198612a9d1ac5f437a3f8da1 (diff)
[LAA] LLE 2/6: Fix a NoDep case that should be a Forward dependence
Summary: When the dependence distance in zero then we have a loop-independent dependence from the earlier to the later access. No current client of LAA uses forward dependences so other than potentially hitting the MaxDependences threshold earlier, this change shouldn't affect anything right now. This and the previous patch were tested together for compile-time regression. None found in LNT/SPEC. Reviewers: hfinkel Subscribers: rengolin, llvm-commits Differential Revision: http://reviews.llvm.org/D13255 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251973 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Analysis/LoopAccessAnalysis.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/include/llvm/Analysis/LoopAccessAnalysis.h b/include/llvm/Analysis/LoopAccessAnalysis.h
index 97a72b3d1cd..ea080bc7f87 100644
--- a/include/llvm/Analysis/LoopAccessAnalysis.h
+++ b/include/llvm/Analysis/LoopAccessAnalysis.h
@@ -136,6 +136,14 @@ public:
// We couldn't determine the direction or the distance.
Unknown,
// Lexically forward.
+ //
+ // FIXME: If we only have loop-independent forward dependences (e.g. a
+ // read and write of A[i]), LAA will locally deem the dependence "safe"
+ // without querying the MemoryDepChecker. Therefore we can miss
+ // enumerating loop-independent forward dependences in
+ // getInterestingDependences. Note that as soon as there are different
+ // indices used to access the same array, the MemoryDepChecker *is*
+ // queried and the dependence list is complete.
Forward,
// Forward, but if vectorized, is likely to prevent store-to-load
// forwarding.