aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/LoopAccessAnalysis.cpp
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2021-05-28 10:32:40 +0100
committerFlorian Hahn <flo@fhahn.com>2021-05-28 10:33:52 +0100
commitec1f6f7e3f92d806d0f7e4d687173a150102ec5d (patch)
tree8af25462ff2034735bc09880b1f8adeca162afae /llvm/lib/Analysis/LoopAccessAnalysis.cpp
parent690f5b7a0128a210093e9b217932743ad35b5c5a (diff)
downloadllvm-ec1f6f7e3f92d806d0f7e4d687173a150102ec5d.zip
llvm-ec1f6f7e3f92d806d0f7e4d687173a150102ec5d.tar.gz
llvm-ec1f6f7e3f92d806d0f7e4d687173a150102ec5d.tar.bz2
Revert "[LAA] Support pointer phis in loop by analyzing each incoming pointer."
This reverts commit 1ed7f8ede564c3b11da4fdca30c36ccbff422576. This change can cause loop-distribute to crash in some cases. Revert until I have more time to wrap up a fix. See PR50296, PR5028 and D102266.
Diffstat (limited to 'llvm/lib/Analysis/LoopAccessAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/LoopAccessAnalysis.cpp25
1 files changed, 2 insertions, 23 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index 3535058..3248b2a 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -1938,18 +1938,7 @@ void LoopAccessInfo::analyzeLoop(AAResults *AA, LoopInfo *LI,
if (blockNeedsPredication(ST->getParent(), TheLoop, DT))
Loc.AATags.TBAA = nullptr;
- // SCEV does not look through non-header PHIs inside the loop. Such phis
- // can be analyzed by adding separate accesses for each incoming pointer
- // value.
- auto *PN = dyn_cast<PHINode>(Loc.Ptr);
- if (PN && TheLoop->contains(PN->getParent()) &&
- PN->getParent() != TheLoop->getHeader()) {
- for (const Use &Inc : PN->incoming_values()) {
- MemoryLocation NewLoc = Loc.getWithNewPtr(Inc);
- Accesses.addStore(NewLoc);
- }
- } else
- Accesses.addStore(Loc);
+ Accesses.addStore(Loc);
}
}
@@ -1993,17 +1982,7 @@ void LoopAccessInfo::analyzeLoop(AAResults *AA, LoopInfo *LI,
if (blockNeedsPredication(LD->getParent(), TheLoop, DT))
Loc.AATags.TBAA = nullptr;
- // SCEV does not look through non-header PHIs inside the loop. Such phis can
- // be analyzed by adding separate accesses for each incoming pointer value.
- auto *PN = dyn_cast<PHINode>(Loc.Ptr);
- if (PN && TheLoop->contains(PN->getParent()) &&
- PN->getParent() != TheLoop->getHeader()) {
- for (const Use &Inc : PN->incoming_values()) {
- MemoryLocation NewLoc = Loc.getWithNewPtr(Inc);
- Accesses.addLoad(NewLoc, IsReadOnlyPtr);
- }
- } else
- Accesses.addLoad(Loc, IsReadOnlyPtr);
+ Accesses.addLoad(Loc, IsReadOnlyPtr);
}
// If we write (or read-write) to a single destination and there are no