diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-05-08 02:12:59 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-05-08 02:12:59 +0000 |
commit | afc875c7667983c18778cf60a32f49a1e2cbe292 (patch) | |
tree | f55689a94e7504acc1cdb2ccb1a9e8fd706100ce /clang/lib/Analysis/RegionStore.cpp | |
parent | c0c074655de8f6f5719a116017db660051f98646 (diff) | |
download | bcm5719-llvm-afc875c7667983c18778cf60a32f49a1e2cbe292.tar.gz bcm5719-llvm-afc875c7667983c18778cf60a32f49a1e2cbe292.zip |
Replace the heuristic isSmallerThan with ASTContext::getTypeSize().
llvm-svn: 71206
Diffstat (limited to 'clang/lib/Analysis/RegionStore.cpp')
-rw-r--r-- | clang/lib/Analysis/RegionStore.cpp | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/clang/lib/Analysis/RegionStore.cpp b/clang/lib/Analysis/RegionStore.cpp index ea42c465aa5..32226af98f0 100644 --- a/clang/lib/Analysis/RegionStore.cpp +++ b/clang/lib/Analysis/RegionStore.cpp @@ -616,13 +616,6 @@ SVal RegionStoreManager::ArrayToPointer(Loc Array) { return loc::MemRegionVal(ER); } -static bool isSmallerThan(QualType T1, QualType T2) { - if (T1->isCharType()) - return true; - else - return false; -} - RegionStoreManager::CastResult RegionStoreManager::CastRegion(const GRState* state, const MemRegion* R, QualType CastToTy) { @@ -675,8 +668,11 @@ RegionStoreManager::CastRegion(const GRState* state, const MemRegion* R, // VarRegion. if (isa<VarRegion>(R) || isa<ElementRegion>(R) || isa<FieldRegion>(R) || isa<ObjCIvarRegion>(R) || isa<CompoundLiteralRegion>(R)) { - if (isSmallerThan(PointeeTy, - cast<TypedRegion>(R)->getRValueType(getContext()))) { + QualType ObjTy = cast<TypedRegion>(R)->getRValueType(getContext()); + uint64_t PointeeTySize = getContext().getTypeSize(PointeeTy); + uint64_t ObjTySize = getContext().getTypeSize(ObjTy); + + if (PointeeTySize > 0 && PointeeTySize < ObjTySize) { // Record the cast type of the region. state = setCastType(state, R, ToTy); |