aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/RegionStore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis/RegionStore.cpp')
-rw-r--r--lib/Analysis/RegionStore.cpp34
1 files changed, 5 insertions, 29 deletions
diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp
index eabe462cc7..84f543ede4 100644
--- a/lib/Analysis/RegionStore.cpp
+++ b/lib/Analysis/RegionStore.cpp
@@ -197,35 +197,11 @@ SVal RegionStoreManager::ArrayToPointer(SVal Array) {
const MemRegion* ArrayR = cast<loc::MemRegionVal>(&Array)->getRegion();
BasicValueFactory& BasicVals = StateMgr.getBasicVals();
- if (const StringRegion* StringR = dyn_cast<StringRegion>(ArrayR)) {
- // FIXME: Find a better way to get bit width.
- nonloc::ConcreteInt Idx(BasicVals.getValue(0, 32, false));
- ElementRegion* ER = MRMgr.getElementRegion(Idx, ArrayR);
-
- return loc::MemRegionVal(ER);
- }
-
- const Decl* D = cast<DeclRegion>(ArrayR)->getDecl();
-
- QualType ArrayTy;
- if (const VarDecl* VD = dyn_cast<VarDecl>(D))
- ArrayTy = VD->getType();
- else if (const FieldDecl* FD = dyn_cast<FieldDecl>(D))
- ArrayTy = FD->getType();
- else
- assert(0 && "unknown decl");
-
- if (const ConstantArrayType* CAT =
- dyn_cast<ConstantArrayType>(ArrayTy.getTypePtr())) {
-
- nonloc::ConcreteInt Idx(BasicVals.getValue(0, CAT->getSize().getBitWidth(),
- false));
- ElementRegion* ER = MRMgr.getElementRegion(Idx, ArrayR);
-
- return loc::MemRegionVal(ER);
- }
-
- return Array;
+ // FIXME: Find a better way to get bit width.
+ nonloc::ConcreteInt Idx(BasicVals.getValue(0, 32, false));
+ ElementRegion* ER = MRMgr.getElementRegion(Idx, ArrayR);
+
+ return loc::MemRegionVal(ER);
}
SVal RegionStoreManager::Retrieve(Store S, Loc L, QualType T) {