diff options
author | John McCall <rjmccall@apple.com> | 2010-12-10 11:01:00 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-12-10 11:01:00 +0000 |
commit | 49f4e1cbd839da27ff4814b4ea6d85a79f786cbd (patch) | |
tree | 9ab7a1af57b1fc26ad1d0b8913ac7da554101ff3 /lib/Checker | |
parent | 55270e4bde91bd30d16086ae71f0f65caf3b8a51 (diff) |
It's kindof silly that ExtQuals has an ASTContext&, and we can use that
space better. Remove this reference. To make that work, change some APIs
(most importantly, getDesugaredType()) to take an ASTContext& if they
need to return a QualType. Simultaneously, diminish the need to return a
QualType by introducing some useful APIs on SplitQualType, which is
just a std::pair<const Type *, Qualifiers>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121478 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Checker')
-rw-r--r-- | lib/Checker/GRExprEngine.cpp | 4 | ||||
-rw-r--r-- | lib/Checker/MemRegion.cpp | 4 | ||||
-rw-r--r-- | lib/Checker/RegionStore.cpp | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/lib/Checker/GRExprEngine.cpp b/lib/Checker/GRExprEngine.cpp index e01f5d9f03..efe8fbf25c 100644 --- a/lib/Checker/GRExprEngine.cpp +++ b/lib/Checker/GRExprEngine.cpp @@ -1263,8 +1263,8 @@ void GRExprEngine::VisitLValue(const Expr* Ex, ExplodedNode* Pred, // NOTE: Do not use 'isAggregateType()' here as CXXRecordDecls that // are non-pod are not aggregates. - assert ((isa<RecordType>(Ex->getType().getDesugaredType()) || - isa<ArrayType>(Ex->getType().getDesugaredType())) && + assert ((Ex->getType()->isRecordType() || + Ex->getType()->isArrayType()) && "Other kinds of expressions with non-aggregate/union/class types" " do not have lvalues."); diff --git a/lib/Checker/MemRegion.cpp b/lib/Checker/MemRegion.cpp index 9babe3447f..b08a53ffe7 100644 --- a/lib/Checker/MemRegion.cpp +++ b/lib/Checker/MemRegion.cpp @@ -178,7 +178,7 @@ const StackFrameContext *VarRegion::getStackFrame() const { DefinedOrUnknownSVal DeclRegion::getExtent(SValBuilder &svalBuilder) const { ASTContext& Ctx = svalBuilder.getContext(); - QualType T = getDesugaredValueType(); + QualType T = getDesugaredValueType(Ctx); if (isa<VariableArrayType>(T)) return nonloc::SymbolVal(svalBuilder.getSymbolManager().getExtentSymbol(this)); @@ -196,7 +196,7 @@ DefinedOrUnknownSVal FieldRegion::getExtent(SValBuilder &svalBuilder) const { // A zero-length array at the end of a struct often stands for dynamically- // allocated extra memory. if (Extent.isZeroConstant()) { - QualType T = getDesugaredValueType(); + QualType T = getDesugaredValueType(svalBuilder.getContext()); if (isa<ConstantArrayType>(T)) return UnknownVal(); diff --git a/lib/Checker/RegionStore.cpp b/lib/Checker/RegionStore.cpp index cf0a444001..bc28f137c4 100644 --- a/lib/Checker/RegionStore.cpp +++ b/lib/Checker/RegionStore.cpp @@ -799,7 +799,7 @@ SVal RegionStoreManager::ArrayToPointer(Loc Array) { return UnknownVal(); // Strip off typedefs from the ArrayRegion's ValueType. - QualType T = ArrayR->getValueType().getDesugaredType(); + QualType T = ArrayR->getValueType().getDesugaredType(Ctx); ArrayType *AT = cast<ArrayType>(T); T = AT->getElementType(); |