diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-06-30 08:49:25 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2010-06-30 08:49:25 +0000 |
commit | ae8b17f1d5d303af53db5a4f4a375ea6b9356566 (patch) | |
tree | 79446e689d0e4851201829ffd1797fbbeeed9bd6 /lib/Frontend | |
parent | 37bdfe284ad365f753741d1d89c078c148b3f4af (diff) |
Support DependentSizedArrayType for PCH.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107267 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend')
-rw-r--r-- | lib/Frontend/PCHReader.cpp | 17 | ||||
-rw-r--r-- | lib/Frontend/PCHWriter.cpp | 6 |
2 files changed, 21 insertions, 2 deletions
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index a526fd6dc5..b5ddc86369 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -2226,6 +2226,23 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) { return Context->getDependentTemplateSpecializationType(Keyword, NNS, Name, Args.size(), Args.data()); } + + case pch::TYPE_DEPENDENT_SIZED_ARRAY: { + unsigned Idx = 0; + + // ArrayType + QualType ElementType = GetType(Record[Idx++]); + ArrayType::ArraySizeModifier ASM + = (ArrayType::ArraySizeModifier)Record[Idx++]; + unsigned IndexTypeQuals = Record[Idx++]; + + // DependentSizedArrayType + Expr *NumElts = ReadExpr(); + SourceRange Brackets = ReadSourceRange(Record, Idx); + + return Context->getDependentSizedArrayType(ElementType, NumElts, ASM, + IndexTypeQuals, Brackets); + } case pch::TYPE_TEMPLATE_SPECIALIZATION: { unsigned Idx = 0; diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp index d947f7250d..41815314d7 100644 --- a/lib/Frontend/PCHWriter.cpp +++ b/lib/Frontend/PCHWriter.cpp @@ -230,8 +230,10 @@ PCHTypeWriter::VisitTemplateSpecializationType( void PCHTypeWriter::VisitDependentSizedArrayType(const DependentSizedArrayType *T) { - // FIXME: Serialize this type (C++ only) - assert(false && "Cannot serialize dependent sized array types"); + VisitArrayType(T); + Writer.AddStmt(T->getSizeExpr()); + Writer.AddSourceRange(T->getBracketsRange(), Record); + Code = pch::TYPE_DEPENDENT_SIZED_ARRAY; } void |