summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2009-11-12 02:48:32 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2009-11-12 02:48:32 +0000
commit383c273966c20b029ee2f104ec7d6318c9968006 (patch)
tree4523b1b578f5a05af6ea9c5fa027fe75b657a0b5 /clang
parent495922cb6ae1008aa62b769ffa5c9f560a8c2ffc (diff)
downloadbcm5719-llvm-383c273966c20b029ee2f104ec7d6318c9968006.tar.gz
bcm5719-llvm-383c273966c20b029ee2f104ec7d6318c9968006.zip
Make StoreManager::getSizeInElements() always return DefinedOrUnknownSVal.
llvm-svn: 86932
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Analysis/PathSensitive/Store.h3
-rw-r--r--clang/lib/Analysis/ArrayBoundChecker.cpp5
-rw-r--r--clang/lib/Analysis/RegionStore.cpp7
-rw-r--r--clang/lib/Analysis/ReturnPointerRangeChecker.cpp5
4 files changed, 10 insertions, 10 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/Store.h b/clang/include/clang/Analysis/PathSensitive/Store.h
index 6ca2e9e9aa6..6c6804bc3f6 100644
--- a/clang/include/clang/Analysis/PathSensitive/Store.h
+++ b/clang/include/clang/Analysis/PathSensitive/Store.h
@@ -102,7 +102,8 @@ public:
virtual SVal getLValueElement(QualType elementType, SVal offset, SVal Base)=0;
// FIXME: Make out-of-line.
- virtual SVal getSizeInElements(const GRState *state, const MemRegion *region){
+ virtual DefinedOrUnknownSVal getSizeInElements(const GRState *state,
+ const MemRegion *region) {
return UnknownVal();
}
diff --git a/clang/lib/Analysis/ArrayBoundChecker.cpp b/clang/lib/Analysis/ArrayBoundChecker.cpp
index ae8e1149c50..34a5631edd3 100644
--- a/clang/lib/Analysis/ArrayBoundChecker.cpp
+++ b/clang/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/clang/lib/Analysis/RegionStore.cpp b/clang/lib/Analysis/RegionStore.cpp
index 91769cd447c..46cddd0da1b 100644
--- a/clang/lib/Analysis/RegionStore.cpp
+++ b/clang/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/clang/lib/Analysis/ReturnPointerRangeChecker.cpp b/clang/lib/Analysis/ReturnPointerRangeChecker.cpp
index 261081ebb41..f007d0e0d1a 100644
--- a/clang/lib/Analysis/ReturnPointerRangeChecker.cpp
+++ b/clang/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);
OpenPOWER on IntegriCloud