diff options
| author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-12-30 22:59:54 +0000 |
|---|---|---|
| committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-12-30 22:59:54 +0000 |
| commit | da3ddfce431677771295fc1c40865febce4b887b (patch) | |
| tree | 48c2dcafd8d6c60dd91be488e01e079cb00714dc /clang/lib/AST/ASTContext.cpp | |
| parent | d866c5a6786dffaf5000ff04777f4fbfd79997a5 (diff) | |
| download | bcm5719-llvm-da3ddfce431677771295fc1c40865febce4b887b.tar.gz bcm5719-llvm-da3ddfce431677771295fc1c40865febce4b887b.zip | |
The element type should also be canonicalized. Add a case for VariableArrayType.
llvm-svn: 92318
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index fe962806091..74e74e7aba0 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -2383,7 +2383,7 @@ QualType ASTContext::getUnqualifiedArrayType(QualType T, assert(!T.hasQualifiers() && "canonical array type has qualifiers!"); const ArrayType *AT = cast<ArrayType>(T); QualType Elt = AT->getElementType(); - QualType UnqualElt = getUnqualifiedArrayType(Elt, Quals); + QualType UnqualElt = getUnqualifiedArrayType(getCanonicalType(Elt), Quals); if (Elt == UnqualElt) return T; @@ -2396,6 +2396,12 @@ 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, |

