diff options
-rw-r--r-- | include/clang/AST/Type.h | 3 | ||||
-rw-r--r-- | lib/Frontend/PCHReader.cpp | 5 |
2 files changed, 7 insertions, 1 deletions
diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h index e540f945b1..b9cac64171 100644 --- a/include/clang/AST/Type.h +++ b/include/clang/AST/Type.h @@ -2544,6 +2544,9 @@ class InjectedClassNameType : public Type { friend class ASTContext; // ASTContext creates these. friend class TagDecl; // TagDecl mutilates the Decl + friend class PCHReader; // FIXME: ASTContext::getInjectedClassNameType is not + // currently suitable for PCH reading, too much + // interdependencies. InjectedClassNameType(CXXRecordDecl *D, QualType TST) : Type(InjectedClassName, QualType(), true), Decl(D), InjectedType(TST) { diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index ecd95057cb..5941ec0a25 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -2197,7 +2197,10 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) { case pch::TYPE_INJECTED_CLASS_NAME: { CXXRecordDecl *D = cast<CXXRecordDecl>(GetDecl(Record[0])); QualType TST = GetType(Record[1]); // probably derivable - return Context->getInjectedClassNameType(D, TST); + // FIXME: ASTContext::getInjectedClassNameType is not currently suitable + // for PCH reading, too much interdependencies. + return + QualType(new (*Context, TypeAlignment) InjectedClassNameType(D, TST), 0); } case pch::TYPE_TEMPLATE_TYPE_PARM: { |