From: Zhongxing Xu Date: Fri, 8 May 2009 02:00:55 +0000 (+0000) Subject: Replace getTypeWidth() with ASTContext::getTypeSize(). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e6536afb1bc606a54abe0c357c8a2e1b8fc6e4e0;p=clang Replace getTypeWidth() with ASTContext::getTypeSize(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71205 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index 74e2069833..ea42c465aa 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -312,45 +312,6 @@ StoreManager* clang::CreateRegionStoreManager(GRStateManager& StMgr) { return new RegionStoreManager(StMgr); } -// getTypeWidth - compute the width of the type. Should pass in -// canonical type. -static unsigned getTypeWidth(ASTContext& Ctx, QualType T) { - TargetInfo& Target = Ctx.Target; - QualType CanT = Ctx.getCanonicalType(T); - - if (CanT->isPointerType()) - return Target.getPointerWidth(0); - - if (CanT->isCharType()) - return Target.getCharWidth(); - - if (const BuiltinType *BT = dyn_cast(CanT)) { - switch (BT->getKind()) { - case BuiltinType::Char_U: - case BuiltinType::UChar: - case BuiltinType::Char_S: - case BuiltinType::SChar: - return Target.getCharWidth(); - - case BuiltinType::UShort: - case BuiltinType::Short: - return Target.getShortWidth(); - - case BuiltinType::UInt: - case BuiltinType::Int: - return Target.getIntWidth(); - - case BuiltinType::ULong: - case BuiltinType::Long: - return Target.getLongWidth(); - default: - assert(0 && "Unprocessed builtin type."); - } - } - - assert(0 && "Unprocessed type."); -} - SubRegionMap* RegionStoreManager::getSubRegionMap(const GRState *state) { RegionBindingsTy B = GetRegionBindings(state->getStore()); RegionStoreSubRegionMap *M = new RegionStoreSubRegionMap(); @@ -542,17 +503,17 @@ SVal RegionStoreManager::getSizeInElements(const GRState* St, return NonLoc::MakeVal(getBasicVals(), CAT->getSize(), false); } - // If the VarRegion is cast to other type, compute the size with respect to - // that type. GRStateRef state(St, StateMgr); const QualType* CastTy = state.get(VR); + // If the VarRegion is cast to other type, compute the size with respect to + // that type. if (CastTy) { QualType EleTy =cast(CastTy->getTypePtr())->getPointeeType(); QualType VarTy = VR->getRValueType(getContext()); - unsigned EleWidth = getTypeWidth(getContext(), EleTy); - unsigned VarWidth = getTypeWidth(getContext(), VarTy); - return NonLoc::MakeIntVal(getBasicVals(), VarWidth / EleWidth, false); + uint64_t EleSize = getContext().getTypeSize(EleTy); + uint64_t VarSize = getContext().getTypeSize(VarTy); + return NonLoc::MakeIntVal(getBasicVals(), VarSize / EleSize, false); } // Clients can use ordinary variables as if they were arrays. These