[llvm] cc1e2bb - [BasicAA] Handle phi with itself as incoming value
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 9 07:20:08 PST 2022
Author: Nikita Popov
Date: 2022-12-09T16:17:45+01:00
New Revision: cc1e2bb4d44c6a47705faff52fc62e83917998d0
URL: https://github.com/llvm/llvm-project/commit/cc1e2bb4d44c6a47705faff52fc62e83917998d0
DIFF: https://github.com/llvm/llvm-project/commit/cc1e2bb4d44c6a47705faff52fc62e83917998d0.diff
LOG: [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.
Added:
Modified:
llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/test/Analysis/BasicAA/recphi.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 2b552bf97406..6aad2581e06a 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
diff --git a/llvm/test/Analysis/BasicAA/recphi.ll b/llvm/test/Analysis/BasicAA/recphi.ll
index 4d2fa3997539..3bf621f07222 100644
--- a/llvm/test/Analysis/BasicAA/recphi.ll
+++ b/llvm/test/Analysis/BasicAA/recphi.ll
@@ -413,8 +413,7 @@ exit:
ret void
}
-; NO-PHI-VALUES: MayAlias: i8* %a, i8* %phi
-; PHI-VALUES: MustAlias: i8* %a, i8* %phi
+; CHECK: MustAlias: i8* %a, i8* %phi
define void @phi_contains_self() {
entry:
%a = alloca i32
More information about the llvm-commits
mailing list