diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-01-05 09:27:03 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2010-01-05 09:27:03 +0000 |
commit | 662ba69a15f201f34a702bf62fcfe957fc2824f0 (patch) | |
tree | ce6ac459cd421ce7f15951871ff3a9f87abeecb2 /clang/lib | |
parent | cd321a3544d2b17c5c40d054fab89ef7e83d855a (diff) | |
download | bcm5719-llvm-662ba69a15f201f34a702bf62fcfe957fc2824f0.tar.gz bcm5719-llvm-662ba69a15f201f34a702bf62fcfe957fc2824f0.zip |
Revert r92318. Instead fix the analyzer: do not call
ASTContext::hasSameUnqualifiedType() when one of the type is VariableArrayType.
llvm-svn: 92723
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/ASTContext.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Analysis/SValuator.cpp | 5 |
2 files changed, 3 insertions, 9 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index ad10aa38edb..fe962806091 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -2383,7 +2383,6 @@ QualType ASTContext::getUnqualifiedArrayType(QualType T, assert(!T.hasQualifiers() && "canonical array type has qualifiers!"); const ArrayType *AT = cast<ArrayType>(T); QualType Elt = AT->getElementType(); - assert(Elt.isCanonical()); QualType UnqualElt = getUnqualifiedArrayType(Elt, Quals); if (Elt == UnqualElt) return T; @@ -2397,12 +2396,6 @@ QualType ASTContext::getUnqualifiedArrayType(QualType T, return getIncompleteArrayType(UnqualElt, IAT->getSizeModifier(), 0); } - if (const VariableArrayType *VAT = dyn_cast<VariableArrayType>(T)) { - return getVariableArrayType(UnqualElt, VAT->getSizeExpr()->Retain(), - VAT->getSizeModifier(), 0, - SourceRange()); - } - const DependentSizedArrayType *DSAT = cast<DependentSizedArrayType>(T); return getDependentSizedArrayType(UnqualElt, DSAT->getSizeExpr()->Retain(), DSAT->getSizeModifier(), 0, diff --git a/clang/lib/Analysis/SValuator.cpp b/clang/lib/Analysis/SValuator.cpp index 49bc0c4c598..0e56026bb4c 100644 --- a/clang/lib/Analysis/SValuator.cpp +++ b/clang/lib/Analysis/SValuator.cpp @@ -62,8 +62,9 @@ SValuator::CastResult SValuator::EvalCast(SVal val, const GRState *state, ASTContext &C = ValMgr.getContext(); // For const casts, just propagate the value. - if (C.hasSameUnqualifiedType(castTy, originalTy)) - return CastResult(state, val); + if (!castTy->isVariableArrayType() && !originalTy->isVariableArrayType()) + if (C.hasSameUnqualifiedType(castTy, originalTy)) + return CastResult(state, val); // Check for casts from pointers to integers. if (castTy->isIntegerType() && Loc::IsLocType(originalTy)) |