diff options
author | Nikita Popov <npopov@redhat.com> | 2022-12-09 16:17:45 +0100 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2022-12-09 16:17:45 +0100 |
commit | cc1e2bb4d44c6a47705faff52fc62e83917998d0 (patch) | |
tree | 05bf4983e1cc731ee44a166931eef76da68b9e7f /llvm/lib/Analysis/BasicAliasAnalysis.cpp | |
parent | fe9e442c57f3b50ec7ad5f01e191745aa3156b4e (diff) | |
download | llvm-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.cpp | 4 |
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 |