Nice! On Aug 10, 2010, at 11:10 PM, Zhongxing Xu wrote:
> Author: zhongxingxu > Date: Wed Aug 11 01:10:55 2010 > New Revision: 110784 > > URL: http://llvm.org/viewvc/llvm-project?rev=110784&view=rev > Log: > MemRegion can refer to ASTContext without external help. > > Modified: > cfe/trunk/include/clang/Checker/PathSensitive/MemRegion.h > cfe/trunk/lib/Checker/AdjustedReturnValueChecker.cpp > cfe/trunk/lib/Checker/ArrayBoundChecker.cpp > cfe/trunk/lib/Checker/BasicObjCFoundationChecks.cpp > cfe/trunk/lib/Checker/BasicStore.cpp > cfe/trunk/lib/Checker/BugReporterVisitors.cpp > cfe/trunk/lib/Checker/CStringChecker.cpp > cfe/trunk/lib/Checker/CallAndMessageChecker.cpp > cfe/trunk/lib/Checker/FlatStore.cpp > cfe/trunk/lib/Checker/GRExprEngine.cpp > cfe/trunk/lib/Checker/GRState.cpp > cfe/trunk/lib/Checker/MemRegion.cpp > cfe/trunk/lib/Checker/OSAtomicChecker.cpp > cfe/trunk/lib/Checker/RegionStore.cpp > cfe/trunk/lib/Checker/ReturnPointerRangeChecker.cpp > cfe/trunk/lib/Checker/Store.cpp > cfe/trunk/lib/Checker/SymbolManager.cpp > cfe/trunk/lib/Checker/ValueManager.cpp > > Modified: cfe/trunk/include/clang/Checker/PathSensitive/MemRegion.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Checker/PathSensitive/MemRegion.h?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Checker/PathSensitive/MemRegion.h (original) > +++ cfe/trunk/include/clang/Checker/PathSensitive/MemRegion.h Wed Aug 11 > 01:10:55 2010 > @@ -349,24 +349,24 @@ > TypedRegion(const MemRegion* sReg, Kind k) : SubRegion(sReg, k) {} > > public: > - virtual QualType getValueType(ASTContext &C) const = 0; > + virtual QualType getValueType() const = 0; > > - virtual QualType getLocationType(ASTContext& C) const { > + virtual QualType getLocationType() const { > // FIXME: We can possibly optimize this later to cache this value. > - return C.getPointerType(getValueType(C)); > + return getContext().getPointerType(getValueType()); > } > > - QualType getDesugaredValueType(ASTContext& C) const { > - QualType T = getValueType(C); > + QualType getDesugaredValueType() const { > + QualType T = getValueType(); > return T.getTypePtr() ? T.getDesugaredType() : T; > } > > - QualType getDesugaredLocationType(ASTContext& C) const { > - return getLocationType(C).getDesugaredType(); > + QualType getDesugaredLocationType() const { > + return getLocationType().getDesugaredType(); > } > > bool isBoundable() const { > - return !getValueType(getContext()).isNull(); > + return !getValueType().isNull(); > } > > static bool classof(const MemRegion* R) { > @@ -380,9 +380,8 @@ > protected: > CodeTextRegion(const MemRegion *sreg, Kind k) : TypedRegion(sreg, k) {} > public: > - QualType getValueType(ASTContext &C) const { > - // Do not get the object type of a CodeTextRegion. > - assert(0); > + QualType getValueType() const { > + assert(0 && "Do not get the object type of a CodeTextRegion."); > return QualType(); > } > > @@ -401,8 +400,8 @@ > FunctionTextRegion(const FunctionDecl* fd, const MemRegion* sreg) > : CodeTextRegion(sreg, FunctionTextRegionKind), FD(fd) {} > > - QualType getLocationType(ASTContext &C) const { > - return C.getPointerType(FD->getType()); > + QualType getLocationType() const { > + return getContext().getPointerType(FD->getType()); > } > > const FunctionDecl *getDecl() const { > @@ -440,7 +439,7 @@ > : CodeTextRegion(sreg, BlockTextRegionKind), BD(bd), AC(ac), locTy(lTy) {} > > public: > - QualType getLocationType(ASTContext &C) const { > + QualType getLocationType() const { > return locTy; > } > > @@ -577,7 +576,7 @@ > > const StringLiteral* getStringLiteral() const { return Str; } > > - QualType getValueType(ASTContext& C) const { > + QualType getValueType() const { > return Str->getType(); > } > > @@ -611,8 +610,8 @@ > const CompoundLiteralExpr* CL, > const MemRegion* superRegion); > public: > - QualType getValueType(ASTContext& C) const { > - return C.getCanonicalType(CL->getType()); > + QualType getValueType() const { > + return CL->getType(); > } > > bool isBoundable() const { return !CL->isFileScope(); } > @@ -669,9 +668,9 @@ > > const StackFrameContext *getStackFrame() const; > > - QualType getValueType(ASTContext& C) const { > + QualType getValueType() const { > // FIXME: We can cache this if needed. > - return C.getCanonicalType(getDecl()->getType()); > + return getDecl()->getType(); > } > > void dumpToStream(llvm::raw_ostream& os) const; > @@ -697,7 +696,7 @@ > void Profile(llvm::FoldingSetNodeID &ID) const; > > public: > - QualType getValueType(ASTContext &C) const { > + QualType getValueType() const { > return QualType(ThisPointerTy, 0); > } > > @@ -723,9 +722,9 @@ > > const FieldDecl* getDecl() const { return cast<FieldDecl>(D); } > > - QualType getValueType(ASTContext& C) const { > + QualType getValueType() const { > // FIXME: We can cache this if needed. > - return C.getCanonicalType(getDecl()->getType()); > + return getDecl()->getType(); > } > > DefinedOrUnknownSVal getExtent(ValueManager& ValMgr) const; > @@ -754,7 +753,7 @@ > > public: > const ObjCIvarDecl* getDecl() const { return cast<ObjCIvarDecl>(D); } > - QualType getValueType(ASTContext&) const { return getDecl()->getType(); } > + QualType getValueType() const { return getDecl()->getType(); } > > void dumpToStream(llvm::raw_ostream& os) const; > > @@ -808,7 +807,7 @@ > > SVal getIndex() const { return Index; } > > - QualType getValueType(ASTContext&) const { > + QualType getValueType() const { > return ElementType; > } > > @@ -840,7 +839,7 @@ > Expr const *E, const MemRegion *sReg); > > public: > - QualType getValueType(ASTContext& C) const { > + QualType getValueType() const { > return Ex->getType(); > } > > > Modified: cfe/trunk/lib/Checker/AdjustedReturnValueChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/AdjustedReturnValueChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/AdjustedReturnValueChecker.cpp (original) > +++ cfe/trunk/lib/Checker/AdjustedReturnValueChecker.cpp Wed Aug 11 01:10:55 > 2010 > @@ -70,8 +70,7 @@ > } > else if (const BlockDataRegion *BD = dyn_cast<BlockDataRegion>(callee)) { > const BlockTextRegion *BR = BD->getCodeRegion(); > - const BlockPointerType *BT = > - BR->getLocationType(C.getASTContext())->getAs<BlockPointerType>(); > + const BlockPointerType > *BT=BR->getLocationType()->getAs<BlockPointerType>(); > const FunctionType *FT = BT->getPointeeType()->getAs<FunctionType>(); > actualResultTy = FT->getResultType(); > } > > Modified: cfe/trunk/lib/Checker/ArrayBoundChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/ArrayBoundChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/ArrayBoundChecker.cpp (original) > +++ cfe/trunk/lib/Checker/ArrayBoundChecker.cpp Wed Aug 11 01:10:55 2010 > @@ -58,7 +58,7 @@ > // Get the size of the array. > DefinedOrUnknownSVal NumElements > = C.getStoreManager().getSizeInElements(state, ER->getSuperRegion(), > - > ER->getValueType(C.getASTContext())); > + ER->getValueType()); > > const GRState *StInBound = state->AssumeInBound(Idx, NumElements, true); > const GRState *StOutBound = state->AssumeInBound(Idx, NumElements, false); > > Modified: cfe/trunk/lib/Checker/BasicObjCFoundationChecks.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/BasicObjCFoundationChecks.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/BasicObjCFoundationChecks.cpp (original) > +++ cfe/trunk/lib/Checker/BasicObjCFoundationChecks.cpp Wed Aug 11 01:10:55 > 2010 > @@ -358,7 +358,7 @@ > if (!R) > return false; > > - QualType T = Ctx.getCanonicalType(R->getValueType(Ctx)); > + QualType T = Ctx.getCanonicalType(R->getValueType()); > > // FIXME: If the pointee isn't an integer type, should we flag a warning? > // People can do weird stuff with pointers. > > Modified: cfe/trunk/lib/Checker/BasicStore.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/BasicStore.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/BasicStore.cpp (original) > +++ cfe/trunk/lib/Checker/BasicStore.cpp Wed Aug 11 01:10:55 2010 > @@ -236,7 +236,7 @@ > if (isa<Loc>(V) || isa<nonloc::LocAsInteger>(V)) > if (const ElementRegion *ER = dyn_cast<ElementRegion>(R)) { > // FIXME: Should check for index 0. > - QualType T = ER->getLocationType(C); > + QualType T = ER->getLocationType(); > > if (isHigherOrderRawPtr(T, C)) > R = ER->getSuperRegion(); > @@ -249,7 +249,7 @@ > > // Do not bind to arrays. We need to explicitly check for this so that > // we do not encounter any weirdness of trying to load/store from arrays. > - if (TyR->isBoundable() && TyR->getValueType(C)->isArrayType()) > + if (TyR->isBoundable() && TyR->getValueType()->isArrayType()) > return store; > > if (nonloc::LocAsInteger *X = dyn_cast<nonloc::LocAsInteger>(&V)) { > @@ -259,7 +259,7 @@ > // a pointer. We may wish to flag a type error here if the types > // are incompatible. This may also cause lots of breakage > // elsewhere. Food for thought. > - if (TyR->isBoundable() && Loc::IsLocType(TyR->getValueType(C))) > + if (TyR->isBoundable() && Loc::IsLocType(TyR->getValueType())) > V = X->getLoc(); > } > > @@ -580,7 +580,7 @@ > } > } > > - QualType T = cast<TypedRegion>(R)->getValueType(R->getContext()); > + QualType T = cast<TypedRegion>(R)->getValueType(); > SVal V = ValMgr.getConjuredSymbolVal(R, E, T, Count); > return Bind(store, loc::MemRegionVal(R), V); > } > > Modified: cfe/trunk/lib/Checker/BugReporterVisitors.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/BugReporterVisitors.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/BugReporterVisitors.cpp (original) > +++ cfe/trunk/lib/Checker/BugReporterVisitors.cpp Wed Aug 11 01:10:55 2010 > @@ -143,10 +143,9 @@ > > if (isa<loc::ConcreteInt>(V)) { > bool b = false; > - ASTContext &C = BRC.getASTContext(); > if (R->isBoundable()) { > if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { > - if (TR->getValueType(C)->isObjCObjectPointerType()) { > + if (TR->getValueType()->isObjCObjectPointerType()) { > os << "initialized to nil"; > b = true; > } > @@ -174,10 +173,9 @@ > if (os.str().empty()) { > if (isa<loc::ConcreteInt>(V)) { > bool b = false; > - ASTContext &C = BRC.getASTContext(); > if (R->isBoundable()) { > if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { > - if (TR->getValueType(C)->isObjCObjectPointerType()) { > + if (TR->getValueType()->isObjCObjectPointerType()) { > os << "nil object reference stored to "; > b = true; > } > > Modified: cfe/trunk/lib/Checker/CStringChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/CStringChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/CStringChecker.cpp (original) > +++ cfe/trunk/lib/Checker/CStringChecker.cpp Wed Aug 11 01:10:55 2010 > @@ -145,7 +145,7 @@ > if (!ER) > return state; > > - assert(ER->getValueType(C.getASTContext()) == C.getASTContext().CharTy && > + assert(ER->getValueType() == C.getASTContext().CharTy && > "CheckLocation should only be called with char* ElementRegions"); > > // Get the size of the array. > @@ -518,20 +518,16 @@ > return true; > case MemRegion::CXXThisRegionKind: > case MemRegion::CXXObjectRegionKind: > - os << "a C++ object of type " > - << TR->getValueType(Ctx).getAsString(); > + os << "a C++ object of type " << TR->getValueType().getAsString(); > return true; > case MemRegion::VarRegionKind: > - os << "a variable of type" > - << TR->getValueType(Ctx).getAsString(); > + os << "a variable of type" << TR->getValueType().getAsString(); > return true; > case MemRegion::FieldRegionKind: > - os << "a field of type " > - << TR->getValueType(Ctx).getAsString(); > + os << "a field of type " << TR->getValueType().getAsString(); > return true; > case MemRegion::ObjCIvarRegionKind: > - os << "an instance variable of type " > - << TR->getValueType(Ctx).getAsString(); > + os << "an instance variable of type " << > TR->getValueType().getAsString(); > return true; > default: > return false; > > Modified: cfe/trunk/lib/Checker/CallAndMessageChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/CallAndMessageChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/CallAndMessageChecker.cpp (original) > +++ cfe/trunk/lib/Checker/CallAndMessageChecker.cpp Wed Aug 11 01:10:55 2010 > @@ -114,7 +114,7 @@ > : C(c), StoreMgr(storeMgr), MrMgr(mrMgr), store(s) {} > > bool Find(const TypedRegion *R) { > - QualType T = R->getValueType(C); > + QualType T = R->getValueType(); > if (const RecordType *RT = T->getAsStructureType()) { > const RecordDecl *RD = RT->getDecl()->getDefinition(); > assert(RD && "Referred record has no definition"); > > Modified: cfe/trunk/lib/Checker/FlatStore.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/FlatStore.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/FlatStore.cpp (original) > +++ cfe/trunk/lib/Checker/FlatStore.cpp Wed Aug 11 01:10:55 2010 > @@ -175,7 +175,7 @@ > FlatStoreManager::RegionToInterval(const MemRegion *R) { > switch (R->getKind()) { > case MemRegion::VarRegionKind: { > - QualType T = cast<VarRegion>(R)->getValueType(Ctx); > + QualType T = cast<VarRegion>(R)->getValueType(); > int64_t Size = Ctx.getTypeSize(T); > return RegionInterval(R, 0, Size-1); > } > @@ -188,7 +188,7 @@ > if (!Offset.getRegion()) > return RegionInterval(0, 0, 0); > int64_t Start = Offset.getOffset(); > - int64_t Size = Ctx.getTypeSize(cast<TypedRegion>(R)->getValueType(Ctx)); > + int64_t Size = Ctx.getTypeSize(cast<TypedRegion>(R)->getValueType()); > return RegionInterval(Offset.getRegion(), Start, Start+Size); > } > > > Modified: cfe/trunk/lib/Checker/GRExprEngine.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/GRExprEngine.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/GRExprEngine.cpp (original) > +++ cfe/trunk/lib/Checker/GRExprEngine.cpp Wed Aug 11 01:10:55 2010 > @@ -1830,7 +1830,7 @@ > if (const TypedRegion *TR = > dyn_cast_or_null<TypedRegion>(location.getAsRegion())) { > > - QualType ValTy = TR->getValueType(getContext()); > + QualType ValTy = TR->getValueType(); > if (const ReferenceType *RT = ValTy->getAs<ReferenceType>()) { > static int loadReferenceTag = 0; > ExplodedNodeSet Tmp; > @@ -2246,7 +2246,7 @@ > // FIXME: The proper thing to do is to really iterate over the > // container. We will do this with dispatch logic to the store. > // For now, just 'conjure' up a symbolic value. > - QualType T = R->getValueType(getContext()); > + QualType T = R->getValueType(); > assert(Loc::IsLocType(T)); > unsigned Count = Builder->getCurrentBlockCount(); > SymbolRef Sym = SymMgr.getConjuredSymbol(elem, T, Count); > > Modified: cfe/trunk/lib/Checker/GRState.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/GRState.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/GRState.cpp (original) > +++ cfe/trunk/lib/Checker/GRState.cpp Wed Aug 11 01:10:55 2010 > @@ -88,7 +88,7 @@ > return UnknownVal(); > > if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { > - QualType T = TR->getValueType(getStateManager().getContext()); > + QualType T = TR->getValueType(); > if (Loc::IsLocType(T) || T->isIntegerType()) > return getSVal(R); > } > > Modified: cfe/trunk/lib/Checker/MemRegion.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/MemRegion.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/MemRegion.cpp (original) > +++ cfe/trunk/lib/Checker/MemRegion.cpp Wed Aug 11 01:10:55 2010 > @@ -178,7 +178,7 @@ > > DefinedOrUnknownSVal DeclRegion::getExtent(ValueManager& ValMgr) const { > ASTContext& Ctx = ValMgr.getContext(); > - QualType T = getDesugaredValueType(Ctx); > + QualType T = getDesugaredValueType(); > > if (isa<VariableArrayType>(T)) > return nonloc::SymbolVal(ValMgr.getSymbolManager().getExtentSymbol(this)); > @@ -196,8 +196,7 @@ > // A zero-length array at the end of a struct often stands for dynamically- > // allocated extra memory. > if (Extent.isZeroConstant()) { > - ASTContext& Ctx = ValMgr.getContext(); > - QualType T = getDesugaredValueType(Ctx); > + QualType T = getDesugaredValueType(); > > if (isa<ConstantArrayType>(T)) > return UnknownVal(); > @@ -846,7 +845,7 @@ > goto Finish; > case ElementRegionKind: { > const ElementRegion *ER = cast<ElementRegion>(R); > - QualType EleTy = ER->getValueType(getContext()); > + QualType EleTy = ER->getValueType(); > > if (!IsCompleteType(getContext(), EleTy)) > return RegionOffset(0); > > Modified: cfe/trunk/lib/Checker/OSAtomicChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/OSAtomicChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/OSAtomicChecker.cpp (original) > +++ cfe/trunk/lib/Checker/OSAtomicChecker.cpp Wed Aug 11 01:10:55 2010 > @@ -110,7 +110,7 @@ > QualType LoadTy; > if (const TypedRegion *TR = > dyn_cast_or_null<TypedRegion>(location.getAsRegion())) { > - LoadTy = TR->getValueType(Ctx); > + LoadTy = TR->getValueType(); > } > Engine.EvalLoad(Tmp, theValueExpr, C.getPredecessor(), > state, location, OSAtomicLoadTag, LoadTy); > @@ -158,7 +158,7 @@ > // Handle implicit value casts. > if (const TypedRegion *R = > dyn_cast_or_null<TypedRegion>(location.getAsRegion())) { > - val = > SVator.EvalCast(val,R->getValueType(Ctx),newValueExpr->getType()); > + val = SVator.EvalCast(val,R->getValueType(), > newValueExpr->getType()); > } > > Engine.EvalStore(TmpStore, NULL, theValueExpr, N, > > Modified: cfe/trunk/lib/Checker/RegionStore.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/RegionStore.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/RegionStore.cpp (original) > +++ cfe/trunk/lib/Checker/RegionStore.cpp Wed Aug 11 01:10:55 2010 > @@ -663,7 +663,7 @@ > return; > > const TypedRegion *TR = cast<TypedRegion>(baseR); > - QualType T = TR->getValueType(Ctx); > + QualType T = TR->getValueType(); > > // Invalidate the binding. > if (const RecordType *RT = T->getAsStructureType()) { > @@ -774,7 +774,7 @@ > return UnknownVal(); > > // Strip off typedefs from the ArrayRegion's ValueType. > - QualType T = ArrayR->getValueType(getContext()).getDesugaredType(); > + QualType T = ArrayR->getValueType().getDesugaredType(); > ArrayType *AT = cast<ArrayType>(T); > T = AT->getElementType(); > > @@ -915,7 +915,7 @@ > const MemRegion *R) { > if (R->isBoundable()) > if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) > - if (TR->getValueType(getContext())->isUnionType()) > + if (TR->getValueType()->isUnionType()) > return UnknownVal(); > > if (const SVal *V = Lookup(B, R, BindingKey::Default)) > @@ -983,7 +983,7 @@ > // FIXME: Perhaps this method should just take a 'const MemRegion*' argument > // instead of 'Loc', and have the other Loc cases handled at a higher > level. > const TypedRegion *R = cast<TypedRegion>(MR); > - QualType RTy = R->getValueType(getContext()); > + QualType RTy = R->getValueType(); > > // FIXME: We should eventually handle funny addressing. e.g.: > // > @@ -1115,7 +1115,7 @@ > // FIXME: Handle loads from strings where the literal is treated as > // an integer, e.g., *((unsigned int*)"hello") > ASTContext &Ctx = getContext(); > - QualType T = > Ctx.getAsArrayType(StrR->getValueType(Ctx))->getElementType(); > + QualType T = Ctx.getAsArrayType(StrR->getValueType())->getElementType(); > if (T != Ctx.getCanonicalType(R->getElementType())) > return UnknownVal(); > > @@ -1141,7 +1141,7 @@ > // FIXME: This is a hack, and doesn't do anything really intelligent yet. > const RegionRawOffset &O = R->getAsArrayOffset(); > if (const TypedRegion *baseR = > dyn_cast_or_null<TypedRegion>(O.getRegion())) { > - QualType baseT = baseR->getValueType(Ctx); > + QualType baseT = baseR->getValueType(); > if (baseT->isScalarType()) { > QualType elemT = R->getElementType(); > if (elemT->isScalarType()) { > @@ -1171,7 +1171,7 @@ > if (const Optional<SVal> &V = getDirectBinding(B, R)) > return *V; > > - QualType Ty = R->getValueType(getContext()); > + QualType Ty = R->getValueType(); > return RetrieveFieldOrElementCommon(store, R, Ty, R->getSuperRegion()); > } > > @@ -1238,7 +1238,7 @@ > // Currently we don't reason specially about Clang-style vectors. Check > // if superR is a vector and if so return Unknown. > if (const TypedRegion *typedSuperR = dyn_cast<TypedRegion>(superR)) { > - if (typedSuperR->getValueType(getContext())->isVectorType()) > + if (typedSuperR->getValueType()->isVectorType()) > return UnknownVal(); > } > } > @@ -1323,21 +1323,18 @@ > } > > SVal RegionStoreManager::RetrieveLazySymbol(const TypedRegion *R) { > - > - QualType valTy = R->getValueType(getContext()); > - > // All other values are symbolic. > return ValMgr.getRegionValueSymbolVal(R); > } > > SVal RegionStoreManager::RetrieveStruct(Store store, const TypedRegion* R) { > - QualType T = R->getValueType(getContext()); > + QualType T = R->getValueType(); > assert(T->isStructureOrClassType()); > return ValMgr.makeLazyCompoundVal(store, R); > } > > SVal RegionStoreManager::RetrieveArray(Store store, const TypedRegion * R) { > - assert(isa<ConstantArrayType>(R->getValueType(getContext()))); > + assert(isa<ConstantArrayType>(R->getValueType())); > return ValMgr.makeLazyCompoundVal(store, R); > } > > @@ -1362,7 +1359,7 @@ > > // Check if the region is a struct region. > if (const TypedRegion* TR = dyn_cast<TypedRegion>(R)) > - if (TR->getValueType(getContext())->isStructureOrClassType()) > + if (TR->getValueType()->isStructureOrClassType()) > return BindStruct(store, TR, V); > > // Special case: the current region represents a cast and it and the super > @@ -1375,8 +1372,8 @@ > if (const TypedRegion *superR = > dyn_cast<TypedRegion>(ER->getSuperRegion())) { > ASTContext &Ctx = getContext(); > - QualType superTy = superR->getValueType(Ctx); > - QualType erTy = ER->getValueType(Ctx); > + QualType superTy = superR->getValueType(); > + QualType erTy = ER->getValueType(); > > if (IsAnyPointerOrIntptr(superTy, Ctx) && > IsAnyPointerOrIntptr(erTy, Ctx)) { > @@ -1458,8 +1455,7 @@ > SVal Init) { > > ASTContext &Ctx = getContext(); > - const ArrayType *AT = > - cast<ArrayType>(Ctx.getCanonicalType(R->getValueType(Ctx))); > + const ArrayType *AT > =cast<ArrayType>(Ctx.getCanonicalType(R->getValueType())); > QualType ElementTy = AT->getElementType(); > Optional<uint64_t> Size; > > @@ -1517,7 +1513,7 @@ > if (!Features.supportsFields()) > return store; > > - QualType T = R->getValueType(getContext()); > + QualType T = R->getValueType(); > assert(T->isStructureOrClassType()); > > const RecordType* RT = T->getAs<RecordType>(); > > Modified: cfe/trunk/lib/Checker/ReturnPointerRangeChecker.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/ReturnPointerRangeChecker.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/ReturnPointerRangeChecker.cpp (original) > +++ cfe/trunk/lib/Checker/ReturnPointerRangeChecker.cpp Wed Aug 11 01:10:55 > 2010 > @@ -66,7 +66,7 @@ > > DefinedOrUnknownSVal NumElements > = C.getStoreManager().getSizeInElements(state, ER->getSuperRegion(), > - > ER->getValueType(C.getASTContext())); > + ER->getValueType()); > > const GRState *StInBound = state->AssumeInBound(Idx, NumElements, true); > const GRState *StOutBound = state->AssumeInBound(Idx, NumElements, false); > > Modified: cfe/trunk/lib/Checker/Store.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/Store.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/Store.cpp (original) > +++ cfe/trunk/lib/Checker/Store.cpp Wed Aug 11 01:10:55 2010 > @@ -83,7 +83,7 @@ > // Handle casts from compatible types. > if (R->isBoundable()) > if (const TypedRegion *TR = dyn_cast<TypedRegion>(R)) { > - QualType ObjTy = Ctx.getCanonicalType(TR->getValueType(Ctx)); > + QualType ObjTy = Ctx.getCanonicalType(TR->getValueType()); > if (CanonPointeeTy == ObjTy) > return R; > } > @@ -159,7 +159,7 @@ > // check to see if type we are casting to is the same as the base > // region. If so, just return the base region. > if (const TypedRegion *TR = dyn_cast<TypedRegion>(baseR)) { > - QualType ObjTy = Ctx.getCanonicalType(TR->getValueType(Ctx)); > + QualType ObjTy = Ctx.getCanonicalType(TR->getValueType()); > QualType CanonPointeeTy = Ctx.getCanonicalType(PointeeTy); > if (CanonPointeeTy == ObjTy) > return baseR; > @@ -222,7 +222,7 @@ > > if (performTestOnly) { > // Automatically translate references to pointers. > - QualType T = R->getValueType(Ctx); > + QualType T = R->getValueType(); > if (const ReferenceType *RT = T->getAs<ReferenceType>()) > T = Ctx.getPointerType(RT->getPointeeType()); > > > Modified: cfe/trunk/lib/Checker/SymbolManager.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/SymbolManager.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/SymbolManager.cpp (original) > +++ cfe/trunk/lib/Checker/SymbolManager.cpp Wed Aug 11 01:10:55 2010 > @@ -191,7 +191,7 @@ > } > > QualType SymbolDerived::getType(ASTContext& Ctx) const { > - return R->getValueType(Ctx); > + return R->getValueType(); > } > > QualType SymbolExtent::getType(ASTContext& Ctx) const { > @@ -199,7 +199,7 @@ > } > > QualType SymbolRegionValue::getType(ASTContext& C) const { > - return R->getValueType(C); > + return R->getValueType(); > } > > SymbolManager::~SymbolManager() {} > > Modified: cfe/trunk/lib/Checker/ValueManager.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Checker/ValueManager.cpp?rev=110784&r1=110783&r2=110784&view=diff > ============================================================================== > --- cfe/trunk/lib/Checker/ValueManager.cpp (original) > +++ cfe/trunk/lib/Checker/ValueManager.cpp Wed Aug 11 01:10:55 2010 > @@ -72,7 +72,7 @@ > > DefinedOrUnknownSVal > ValueManager::getRegionValueSymbolVal(const TypedRegion* R) { > - QualType T = R->getValueType(SymMgr.getContext()); > + QualType T = R->getValueType(); > > if (!SymbolManager::canSymbolicate(T)) > return UnknownVal(); > @@ -121,7 +121,7 @@ > DefinedOrUnknownSVal > ValueManager::getDerivedRegionValueSymbolVal(SymbolRef parentSymbol, > const TypedRegion *R) { > - QualType T = R->getValueType(R->getContext()); > + QualType T = R->getValueType(); > > if (!SymbolManager::canSymbolicate(T)) > return UnknownVal(); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
