aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2008-10-26 02:23:57 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2008-10-26 02:23:57 +0000
commit0b7e642397e973f32d11b6066ef4bbbde59d6668 (patch)
tree37bc4812e5e4b4284daf5d1df290db2127198193
parentd2f4e5ea6e980e48c292f5ca250e99377e3ee111 (diff)
Simplify ArrayToPointer conversion. Actually the only thing we need to do is to get the first element region. It is not necessary to care about the kind of the base array region.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58181 91177308-0d34-0410-b5e6-96231b3b80d8
-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) {