Author: Nikita Popov Date: 2020-12-25T18:29:20+01:00 New Revision: c795dd19265d80e835ea1137f19f73624d7983e4
URL: https://github.com/llvm/llvm-project/commit/c795dd19265d80e835ea1137f19f73624d7983e4 DIFF: https://github.com/llvm/llvm-project/commit/c795dd19265d80e835ea1137f19f73624d7983e4.diff LOG: [BasicAA] Pass AC/DT to isKnownNonEqual() This allows us to handle assumes etc in the recursive isKnownNonZero() checks. 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 2dca64447fde..f9275daf1224 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -1291,7 +1291,7 @@ AliasResult BasicAAResult::aliasGEP( const VariableGEPIndex &Var1 = DecompGEP1.VarIndices[1]; if (Var0.Scale == -Var1.Scale && Var0.ZExtBits == Var1.ZExtBits && Var0.SExtBits == Var1.SExtBits && VisitedPhiBBs.empty() && - isKnownNonEqual(Var0.V, Var1.V, DL)) + isKnownNonEqual(Var0.V, Var1.V, DL, &AC, /* CxtI */ nullptr, DT)) MinAbsVarIndex = Var0.Scale.abs(); } diff --git a/llvm/test/Analysis/BasicAA/sequential-gep.ll b/llvm/test/Analysis/BasicAA/sequential-gep.ll index e5b744ba6bf8..d7a1af024cec 100644 --- a/llvm/test/Analysis/BasicAA/sequential-gep.ll +++ b/llvm/test/Analysis/BasicAA/sequential-gep.ll @@ -110,6 +110,17 @@ define void @add_non_zero_with_offset(i32* %p, i32 %addend, i32* %q) { ret void } +; CHECK-LABEL: Function: add_non_zero_assume +; CHECK: NoAlias: i32* %gep1, i32* %gep2 +define void @add_non_zero_assume(i32* %p, i32 %addend, i32 %knownnonzero) { + %cmp = icmp ne i32 %knownnonzero, 0 + call void @llvm.assume(i1 %cmp) + %add = add i32 %addend, %knownnonzero + %gep1 = getelementptr i32, i32* %p, i32 %addend + %gep2 = getelementptr i32, i32* %p, i32 %add + ret void +} + ; CHECK-LABEL: non_zero_index_simple ; CHECK: NoAlias: i32* %gep, i32* %p ; CHECK: NoAlias: i16* %gep.16, i32* %p _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits