diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-11-12 02:48:32 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-11-12 02:48:32 +0000 |
commit | e884ff88baa1bd61db273baf107862a2110058ed (patch) | |
tree | d0bde46a6ec417d39c913f8327c59654c03f5193 /lib | |
parent | a29e6b87bd53c883cb8ee62178879136a32e270e (diff) |
Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86932 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/ArrayBoundChecker.cpp | 5 | ||||
-rw-r--r-- | lib/Analysis/RegionStore.cpp | 7 | ||||
-rw-r--r-- | lib/Analysis/ReturnPointerRangeChecker.cpp | 5 |
3 files changed, 8 insertions, 9 deletions
diff --git a/lib/Analysis/ArrayBoundChecker.cpp b/lib/Analysis/ArrayBoundChecker.cpp index ae8e1149c5..34a5631edd 100644 --- a/lib/Analysis/ArrayBoundChecker.cpp +++ b/lib/Analysis/ArrayBoundChecker.cpp @@ -56,9 +56,8 @@ void ArrayBoundChecker::VisitLocation(CheckerContext &C, const Stmt *S, SVal l){ const GRState *state = C.getState(); // Get the size of the array. - SVal NumVal = C.getStoreManager().getSizeInElements(state, - ER->getSuperRegion()); - DefinedOrUnknownSVal &NumElements = cast<DefinedOrUnknownSVal>(NumVal); + DefinedOrUnknownSVal NumElements + = C.getStoreManager().getSizeInElements(state, ER->getSuperRegion()); const GRState *StInBound = state->AssumeInBound(Idx, NumElements, true); const GRState *StOutBound = state->AssumeInBound(Idx, NumElements, false); diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index 91769cd447..46cddd0da1 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -360,7 +360,8 @@ public: //===------------------------------------------------------------------===// const GRState *setExtent(const GRState *state, const MemRegion* R, SVal Extent); - SVal getSizeInElements(const GRState *state, const MemRegion* R); + DefinedOrUnknownSVal getSizeInElements(const GRState *state, + const MemRegion* R); //===------------------------------------------------------------------===// // Utility methods. @@ -696,8 +697,8 @@ SVal RegionStoreManager::getLValueElement(QualType elementType, SVal Offset, // Extents for regions. //===----------------------------------------------------------------------===// -SVal RegionStoreManager::getSizeInElements(const GRState *state, - const MemRegion *R) { +DefinedOrUnknownSVal RegionStoreManager::getSizeInElements(const GRState *state, + const MemRegion *R) { switch (R->getKind()) { case MemRegion::MemSpaceRegionKind: diff --git a/lib/Analysis/ReturnPointerRangeChecker.cpp b/lib/Analysis/ReturnPointerRangeChecker.cpp index 261081ebb4..f007d0e0d1 100644 --- a/lib/Analysis/ReturnPointerRangeChecker.cpp +++ b/lib/Analysis/ReturnPointerRangeChecker.cpp @@ -64,9 +64,8 @@ void ReturnPointerRangeChecker::PreVisitReturnStmt(CheckerContext &C, // FIXME: All of this out-of-bounds checking should eventually be refactored // into a common place. - SVal NumVal = C.getStoreManager().getSizeInElements(state, - ER->getSuperRegion()); - DefinedOrUnknownSVal &NumElements = cast<DefinedOrUnknownSVal>(NumVal); + DefinedOrUnknownSVal NumElements + = C.getStoreManager().getSizeInElements(state, ER->getSuperRegion()); const GRState *StInBound = state->AssumeInBound(Idx, NumElements, true); const GRState *StOutBound = state->AssumeInBound(Idx, NumElements, false); |