aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/BasicAliasAnalysis.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2022-12-09 16:17:45 +0100
committerNikita Popov <npopov@redhat.com>2022-12-09 16:17:45 +0100
commitcc1e2bb4d44c6a47705faff52fc62e83917998d0 (patch)
tree05bf4983e1cc731ee44a166931eef76da68b9e7f /llvm/lib/Analysis/BasicAliasAnalysis.cpp
parentfe9e442c57f3b50ec7ad5f01e191745aa3156b4e (diff)
downloadllvm-cc1e2bb4d44c6a47705faff52fc62e83917998d0.zip
llvm-cc1e2bb4d44c6a47705faff52fc62e83917998d0.tar.gz
llvm-cc1e2bb4d44c6a47705faff52fc62e83917998d0.tar.bz2
[BasicAA] Handle phi with itself as incoming value
We can skip such incoming values. This was already done by PhiValues if present, but we can also do this without the additional analysis.
Diffstat (limited to 'llvm/lib/Analysis/BasicAliasAnalysis.cpp')
-rw-r--r--llvm/lib/Analysis/BasicAliasAnalysis.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 2b552bf..6aad258 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -1360,6 +1360,10 @@ AliasResult BasicAAResult::aliasPHI(const PHINode *PN, LocationSize PNSize,
SmallPtrSet<Value *, 4> UniqueSrc;
Value *OnePhi = nullptr;
for (Value *PV1 : PN->incoming_values()) {
+ // Skip the phi itself being the incoming value.
+ if (PV1 == PN)
+ continue;
+
if (isa<PHINode>(PV1)) {
if (OnePhi && OnePhi != PV1) {
// To control potential compile time explosion, we choose to be