From f50772a679fa1fab5c6c0ca6bcae6f8183889969 Mon Sep 17 00:00:00 2001 From: George Burgess IV Date: Sat, 22 Dec 2018 18:23:21 +0000 Subject: [PATCH] [Analysis] More LocationSize cleanup; NFC Keeping these patches super small so they're easily post-commit verifiable, as requested in D44748. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350008 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/MemoryLocation.h | 3 +++ lib/Analysis/BasicAliasAnalysis.cpp | 2 +- lib/Analysis/ScalarEvolutionAliasAnalysis.cpp | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/include/llvm/Analysis/MemoryLocation.h b/include/llvm/Analysis/MemoryLocation.h index cf839c5a1eb..83d4186a000 100644 --- a/include/llvm/Analysis/MemoryLocation.h +++ b/include/llvm/Analysis/MemoryLocation.h @@ -135,6 +135,9 @@ public: return (Value & ImpreciseBit) == 0; } + // Convenience method to check if this LocationSize's value is 0. + bool isZero() const { return hasValue() && getValue() == 0; } + bool operator==(const LocationSize &Other) const { return Value == Other.Value; } diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index 5bb85b49cb1..a425d93e031 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/lib/Analysis/BasicAliasAnalysis.cpp @@ -1644,7 +1644,7 @@ AliasResult BasicAAResult::aliasCheck(const Value *V1, LocationSize V1Size, const Value *O1, const Value *O2) { // If either of the memory references is empty, it doesn't matter what the // pointer values are. - if (V1Size == 0 || V2Size == 0) + if (V1Size.isZero() || V2Size.isZero()) return NoAlias; // Strip off any casts if they exist. diff --git a/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp b/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp index 61f625477ca..289d4f8ae49 100644 --- a/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp +++ b/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp @@ -27,7 +27,7 @@ AliasResult SCEVAAResult::alias(const MemoryLocation &LocA, // If either of the memory references is empty, it doesn't matter what the // pointer values are. This allows the code below to ignore this special // case. - if (LocA.Size == 0 || LocB.Size == 0) + if (LocA.Size.isZero() || LocB.Size.isZero()) return NoAlias; // This is SCEVAAResult. Get the SCEVs! @@ -82,10 +82,10 @@ AliasResult SCEVAAResult::alias(const MemoryLocation &LocA, Value *BO = GetBaseValue(BS); if ((AO && AO != LocA.Ptr) || (BO && BO != LocB.Ptr)) if (alias(MemoryLocation(AO ? AO : LocA.Ptr, - AO ? +MemoryLocation::UnknownSize : LocA.Size, + AO ? LocationSize::unknown() : LocA.Size, AO ? AAMDNodes() : LocA.AATags), MemoryLocation(BO ? BO : LocB.Ptr, - BO ? +MemoryLocation::UnknownSize : LocB.Size, + BO ? LocationSize::unknown() : LocB.Size, BO ? AAMDNodes() : LocB.AATags)) == NoAlias) return NoAlias; -- 2.50.1