[llvm] a3614a3 - [BasicAA] Pass context instruction to isKnownNonZero()
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 25 04:02:10 PST 2020
Author: Nikita Popov
Date: 2020-12-25T12:58:19+01:00
New Revision: a3614a31c46a41b76fd6a6c6b30b353bc4131b94
URL: https://github.com/llvm/llvm-project/commit/a3614a31c46a41b76fd6a6c6b30b353bc4131b94
DIFF: https://github.com/llvm/llvm-project/commit/a3614a31c46a41b76fd6a6c6b30b353bc4131b94.diff
LOG: [BasicAA] Pass context instruction to isKnownNonZero()
This allows us to handle additional cases like assumes.
Added:
Modified:
llvm/lib/Analysis/BasicAliasAnalysis.cpp
llvm/test/Analysis/BasicAA/sequential-gep.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
index 4a30e075af0a..2dca64447fde 100644
--- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp
+++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp
@@ -1280,7 +1280,7 @@ AliasResult BasicAAResult::aliasGEP(
if (DecompGEP1.VarIndices.size() == 1) {
// VarIndex = Scale*V. If V != 0 then abs(VarIndex) >= abs(Scale).
const VariableGEPIndex &Var = DecompGEP1.VarIndices[0];
- if (isKnownNonZero(Var.V, DL))
+ if (isKnownNonZero(Var.V, DL, 0, &AC, Var.CxtI, DT))
MinAbsVarIndex = Var.Scale.abs();
} else if (DecompGEP1.VarIndices.size() == 2) {
// VarIndex = Scale*V0 + (-Scale)*V1.
diff --git a/llvm/test/Analysis/BasicAA/sequential-gep.ll b/llvm/test/Analysis/BasicAA/sequential-gep.ll
index b6e84fa97138..e5b744ba6bf8 100644
--- a/llvm/test/Analysis/BasicAA/sequential-gep.ll
+++ b/llvm/test/Analysis/BasicAA/sequential-gep.ll
@@ -135,4 +135,15 @@ define void @non_zero_index_with_offset(i32* %p, i32* %q) {
ret void
}
+; CHECK-LABEL: non_zero_index_assume
+; CHECK: NoAlias: i32* %gep, i32* %p
+define void @non_zero_index_assume(i32* %p, i32 %knownnonzero) {
+ %cmp = icmp ne i32 %knownnonzero, 0
+ call void @llvm.assume(i1 %cmp)
+ %gep = getelementptr i32, i32* %p, i32 %knownnonzero
+ ret void
+}
+
+declare void @llvm.assume(i1)
+
!0 = !{ i32 1, i32 5 }
More information about the llvm-commits
mailing list