diff options
-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)) |