diff options
-rw-r--r-- | llvm/include/llvm/Analysis/MemoryLocation.h | 3 | ||||
-rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp | 6 |
3 files changed, 7 insertions, 4 deletions
diff --git a/llvm/include/llvm/Analysis/MemoryLocation.h b/llvm/include/llvm/Analysis/MemoryLocation.h index cf839c5a1eb..83d4186a000 100644 --- a/llvm/include/llvm/Analysis/MemoryLocation.h +++ b/llvm/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/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 5bb85b49cb1..a425d93e031 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/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/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp b/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp index 61f625477ca..289d4f8ae49 100644 --- a/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp +++ b/llvm/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; |