From 9ff2b13aee0f89d23ef4820218f9b88bb5e5c1c1 Mon Sep 17 00:00:00 2001 From: Ken Dyck Date: Mon, 24 Jan 2011 01:55:39 +0000 Subject: [PATCH] Use CharUnits for the offset amount of RegionRawOffset. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124093 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/StaticAnalyzer/PathSensitive/MemRegion.h | 7 ++++--- lib/StaticAnalyzer/MemRegion.cpp | 4 ++-- lib/StaticAnalyzer/RegionStore.cpp | 2 +- lib/StaticAnalyzer/SimpleSValBuilder.cpp | 4 ++-- lib/StaticAnalyzer/Store.cpp | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/clang/StaticAnalyzer/PathSensitive/MemRegion.h b/include/clang/StaticAnalyzer/PathSensitive/MemRegion.h index 6e5790456c..e18e681e77 100644 --- a/include/clang/StaticAnalyzer/PathSensitive/MemRegion.h +++ b/include/clang/StaticAnalyzer/PathSensitive/MemRegion.h @@ -16,6 +16,7 @@ #ifndef LLVM_CLANG_GR_MEMREGION_H #define LLVM_CLANG_GR_MEMREGION_H +#include "clang/AST/CharUnits.h" #include "clang/AST/Decl.h" #include "clang/AST/DeclObjC.h" #include "clang/StaticAnalyzer/PathSensitive/SVals.h" @@ -778,14 +779,14 @@ private: friend class ElementRegion; const MemRegion *Region; - int64_t Offset; + CharUnits Offset; - RegionRawOffset(const MemRegion* reg, int64_t offset = 0) + RegionRawOffset(const MemRegion* reg, CharUnits offset = CharUnits::Zero()) : Region(reg), Offset(offset) {} public: // FIXME: Eventually support symbolic offsets. - int64_t getByteOffset() const { return Offset; } + CharUnits getOffset() const { return Offset; } const MemRegion *getRegion() const { return Region; } void dumpToStream(llvm::raw_ostream& os) const; diff --git a/lib/StaticAnalyzer/MemRegion.cpp b/lib/StaticAnalyzer/MemRegion.cpp index d3d72b51a7..eca7619d3f 100644 --- a/lib/StaticAnalyzer/MemRegion.cpp +++ b/lib/StaticAnalyzer/MemRegion.cpp @@ -469,7 +469,7 @@ void RegionRawOffset::dump() const { } void RegionRawOffset::dumpToStream(llvm::raw_ostream& os) const { - os << "raw_offset{" << getRegion() << ',' << getByteOffset() << '}'; + os << "raw_offset{" << getRegion() << ',' << getOffset().getQuantity() << '}'; } void StaticGlobalSpaceRegion::dumpToStream(llvm::raw_ostream &os) const { @@ -855,7 +855,7 @@ RegionRawOffset ElementRegion::getAsArrayOffset() const { } assert(superR && "super region cannot be NULL"); - return RegionRawOffset(superR, offset.getQuantity()); + return RegionRawOffset(superR, offset); } RegionOffset MemRegion::getAsOffset() const { diff --git a/lib/StaticAnalyzer/RegionStore.cpp b/lib/StaticAnalyzer/RegionStore.cpp index 3c048064f6..986278e628 100644 --- a/lib/StaticAnalyzer/RegionStore.cpp +++ b/lib/StaticAnalyzer/RegionStore.cpp @@ -86,7 +86,7 @@ BindingKey BindingKey::Make(const MemRegion *R, Kind k) { // FIXME: There are some ElementRegions for which we cannot compute // raw offsets yet, including regions with symbolic offsets. These will be // ignored by the store. - return BindingKey(O.getRegion(), O.getByteOffset(), k); + return BindingKey(O.getRegion(), O.getOffset().getQuantity(), k); } return BindingKey(R, 0, k); diff --git a/lib/StaticAnalyzer/SimpleSValBuilder.cpp b/lib/StaticAnalyzer/SimpleSValBuilder.cpp index a6432121f5..6c65da4635 100644 --- a/lib/StaticAnalyzer/SimpleSValBuilder.cpp +++ b/lib/StaticAnalyzer/SimpleSValBuilder.cpp @@ -724,8 +724,8 @@ SVal SimpleSValBuilder::evalBinOpLL(const GRState *state, if (LeftOffset.getRegion() != NULL && LeftOffset.getRegion() == RightOffset.getRegion()) { - int64_t left = LeftOffset.getByteOffset(); - int64_t right = RightOffset.getByteOffset(); + CharUnits left = LeftOffset.getOffset(); + CharUnits right = RightOffset.getOffset(); switch (op) { default: diff --git a/lib/StaticAnalyzer/Store.cpp b/lib/StaticAnalyzer/Store.cpp index d162eed247..fa671a3bb0 100644 --- a/lib/StaticAnalyzer/Store.cpp +++ b/lib/StaticAnalyzer/Store.cpp @@ -147,7 +147,7 @@ const MemRegion *StoreManager::CastRegion(const MemRegion *R, QualType CastToTy) if (!baseR) return NULL; - CharUnits off = CharUnits::fromQuantity(rawOff.getByteOffset()); + CharUnits off = rawOff.getOffset(); if (off.isZero()) { // Edge case: we are at 0 bytes off the beginning of baseR. We -- 2.40.0