aboutsummaryrefslogtreecommitdiff
path: root/lib/Checker
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-12-10 11:01:00 +0000
committerJohn McCall <rjmccall@apple.com>2010-12-10 11:01:00 +0000
commit49f4e1cbd839da27ff4814b4ea6d85a79f786cbd (patch)
tree9ab7a1af57b1fc26ad1d0b8913ac7da554101ff3 /lib/Checker
parent55270e4bde91bd30d16086ae71f0f65caf3b8a51 (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.cpp4
-rw-r--r--lib/Checker/MemRegion.cpp4
-rw-r--r--lib/Checker/RegionStore.cpp2
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();