diff options
| -rw-r--r-- | clang/include/clang/Serialization/ASTReader.h | 8 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReader.cpp | 354 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 162 | ||||
| -rw-r--r-- | clang/lib/Serialization/ASTReaderStmt.cpp | 106 | 
4 files changed, 298 insertions, 332 deletions
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h index e7019f311d5..4d38a666f73 100644 --- a/clang/include/clang/Serialization/ASTReader.h +++ b/clang/include/clang/Serialization/ASTReader.h @@ -233,7 +233,7 @@ private:    Preprocessor *PP;    /// \brief The AST context into which we'll read the AST files. -  ASTContext *Context; +  ASTContext &Context;    /// \brief The AST consumer.    ASTConsumer *Consumer; @@ -752,8 +752,8 @@ public:    /// \brief Set the Preprocessor to use.    void setPreprocessor(Preprocessor &pp); -  /// \brief Sets and initializes the given Context. -  void InitializeContext(ASTContext &Context); +  /// \brief Initializes the ASTContext +  void InitializeContext();    /// \brief Add in-memory (virtual file) buffer.    void addInMemoryBuffer(StringRef &FileName, llvm::MemoryBuffer *Buffer) { @@ -1267,7 +1267,7 @@ public:    }    /// \brief Retrieve the AST context that this AST reader supplements. -  ASTContext *getContext() { return Context; } +  ASTContext &getContext() { return Context; }    // \brief Contains declarations that were loaded before we have    // access to a Sema object. diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 55dd213286b..f0b06259a7c 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -498,7 +498,7 @@ ASTSelectorLookupTrait::ReadKeyDataLength(const unsigned char*& d) {  ASTSelectorLookupTrait::internal_key_type   ASTSelectorLookupTrait::ReadKey(const unsigned char* d, unsigned) {    using namespace clang::io; -  SelectorTable &SelTable = Reader.getContext()->Selectors; +  SelectorTable &SelTable = Reader.getContext().Selectors;    unsigned N = ReadUnalignedLE16(d);    IdentifierInfo *FirstII      = Reader.getLocalIdentifier(F, ReadUnalignedLE32(d)); @@ -632,7 +632,6 @@ IdentifierInfo *ASTIdentifierLookupTrait::ReadData(const internal_key_type& k,    // Read all of the declarations visible at global scope with this    // name. -  if (Reader.getContext() == 0) return II;    if (DataLen > 0) {      SmallVector<uint32_t, 4> DeclIDs;      for (; DataLen > 0; DataLen -= 4) @@ -706,7 +705,7 @@ ASTDeclContextNameLookupTrait::GetInternalKey(  ASTDeclContextNameLookupTrait::external_key_type   ASTDeclContextNameLookupTrait::GetExternalKey(                                            const internal_key_type& Key) const { -  ASTContext *Context = Reader.getContext(); +  ASTContext &Context = Reader.getContext();    switch (Key.Kind) {    case DeclarationName::Identifier:      return DeclarationName((IdentifierInfo*)Key.Data); @@ -717,23 +716,23 @@ ASTDeclContextNameLookupTrait::GetExternalKey(      return DeclarationName(Selector(Key.Data));    case DeclarationName::CXXConstructorName: -    return Context->DeclarationNames.getCXXConstructorName( -             Context->getCanonicalType(Reader.getLocalType(F, Key.Data))); +    return Context.DeclarationNames.getCXXConstructorName( +             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));    case DeclarationName::CXXDestructorName: -    return Context->DeclarationNames.getCXXDestructorName( -             Context->getCanonicalType(Reader.getLocalType(F, Key.Data))); +    return Context.DeclarationNames.getCXXDestructorName( +             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));    case DeclarationName::CXXConversionFunctionName: -    return Context->DeclarationNames.getCXXConversionFunctionName( -             Context->getCanonicalType(Reader.getLocalType(F, Key.Data))); +    return Context.DeclarationNames.getCXXConversionFunctionName( +             Context.getCanonicalType(Reader.getLocalType(F, Key.Data)));    case DeclarationName::CXXOperatorName: -    return Context->DeclarationNames.getCXXOperatorName( +    return Context.DeclarationNames.getCXXOperatorName(                                         (OverloadedOperatorKind)Key.Data);    case DeclarationName::CXXLiteralOperatorName: -    return Context->DeclarationNames.getCXXLiteralOperatorName( +    return Context.DeclarationNames.getCXXLiteralOperatorName(                                                     (IdentifierInfo*)Key.Data);    case DeclarationName::CXXUsingDirective: @@ -1934,14 +1933,12 @@ ASTReader::ReadASTBlock(Module &F) {      }      case TU_UPDATE_LEXICAL: { -      DeclContext *TU = Context ? Context->getTranslationUnitDecl() : 0; +      DeclContext *TU = Context.getTranslationUnitDecl();        DeclContextInfo &Info = F.DeclContextInfos[TU];        Info.LexicalDecls = reinterpret_cast<const KindDeclIDPair *>(BlobStart);        Info.NumLexicalDecls           = static_cast<unsigned int>(BlobLen / sizeof(KindDeclIDPair)); -      if (TU) -        TU->setHasExternalLexicalStorage(true); - +      TU->setHasExternalLexicalStorage(true);        break;      } @@ -1952,8 +1949,8 @@ ASTReader::ReadASTBlock(Module &F) {                          (const unsigned char *)BlobStart + Record[Idx++],                          (const unsigned char *)BlobStart,                          ASTDeclContextNameLookupTrait(*this, F)); -      if (ID == PREDEF_DECL_TRANSLATION_UNIT_ID && Context) { // Is it the TU? -        DeclContext *TU = Context->getTranslationUnitDecl(); +      if (ID == PREDEF_DECL_TRANSLATION_UNIT_ID) { // Is it the TU? +        DeclContext *TU = Context.getTranslationUnitDecl();          F.DeclContextInfos[TU].NameLookupTableData = Table;          TU->setHasExternalVisibleStorage(true);        } else @@ -2635,8 +2632,7 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName,      }    } -  if (Context) -    InitializeContext(*Context); +  InitializeContext();    if (DeserializationListener)      DeserializationListener->ReaderInitialized(this); @@ -2797,59 +2793,38 @@ void ASTReader::setPreprocessor(Preprocessor &pp) {    PP->getHeaderSearchInfo().SetExternalSource(this);  } -void ASTReader::InitializeContext(ASTContext &Ctx) { -  Context = &Ctx; -  assert(Context && "Passed null context!"); -   +void ASTReader::InitializeContext() {    assert(PP && "Forgot to set Preprocessor ?");    PP->getIdentifierTable().setExternalIdentifierLookup(this);    PP->setExternalSource(this); -  // If we have any update blocks for the TU waiting, we have to add -  // them before we deserialize anything. -  TranslationUnitDecl *TU = Ctx.getTranslationUnitDecl(); -  for (ModuleIterator M = ModuleMgr.begin(), MEnd = ModuleMgr.end();  -       M != MEnd; ++M) { -    Module::DeclContextInfosMap::iterator DCU -      = (*M)->DeclContextInfos.find(0); -    if (DCU != (*M)->DeclContextInfos.end()) { -      // Insertion could invalidate map, so grab value first. -      DeclContextInfo Info = DCU->second; -      (*M)->DeclContextInfos.erase(DCU); -      (*M)->DeclContextInfos[TU] = Info; -       -      if (Info.NumLexicalDecls) -        TU->setHasExternalLexicalStorage(); -      if (Info.NameLookupTableData) -        TU->setHasExternalVisibleStorage(); -    } -  } -      // If there's a listener, notify them that we "read" the translation unit.    if (DeserializationListener) -    DeserializationListener->DeclRead(PREDEF_DECL_TRANSLATION_UNIT_ID, TU); +    DeserializationListener->DeclRead(PREDEF_DECL_TRANSLATION_UNIT_ID,  +                                      Context.getTranslationUnitDecl());    // Make sure we load the declaration update records for the translation unit,    // if there are any. -  loadDeclUpdateRecords(PREDEF_DECL_TRANSLATION_UNIT_ID, TU); +  loadDeclUpdateRecords(PREDEF_DECL_TRANSLATION_UNIT_ID,  +                        Context.getTranslationUnitDecl());    // FIXME: Find a better way to deal with collisions between these    // built-in types. Right now, we just ignore the problem.    // Load the special types. -  if (Context->getBuiltinVaListType().isNull()) { -    Context->setBuiltinVaListType( +  if (Context.getBuiltinVaListType().isNull()) { +    Context.setBuiltinVaListType(        GetType(SpecialTypes[SPECIAL_TYPE_BUILTIN_VA_LIST]));    }    if (unsigned Proto = SpecialTypes[SPECIAL_TYPE_OBJC_PROTOCOL]) { -    if (Context->ObjCProtoType.isNull()) -      Context->ObjCProtoType = GetType(Proto); +    if (Context.ObjCProtoType.isNull()) +      Context.ObjCProtoType = GetType(Proto);    }    if (unsigned String = SpecialTypes[SPECIAL_TYPE_CF_CONSTANT_STRING]) { -    if (!Context->CFConstantStringTypeDecl) -      Context->setCFConstantStringType(GetType(String)); +    if (!Context.CFConstantStringTypeDecl) +      Context.setCFConstantStringType(GetType(String));    }    if (unsigned File = SpecialTypes[SPECIAL_TYPE_FILE]) { @@ -2859,16 +2834,16 @@ void ASTReader::InitializeContext(ASTContext &Ctx) {        return;      } -    if (!Context->FILEDecl) { +    if (!Context.FILEDecl) {        if (const TypedefType *Typedef = FileType->getAs<TypedefType>()) -        Context->setFILEDecl(Typedef->getDecl()); +        Context.setFILEDecl(Typedef->getDecl());        else {          const TagType *Tag = FileType->getAs<TagType>();          if (!Tag) {            Error("Invalid FILE type in AST file");            return;          } -        Context->setFILEDecl(Tag->getDecl()); +        Context.setFILEDecl(Tag->getDecl());        }      }    } @@ -2880,16 +2855,16 @@ void ASTReader::InitializeContext(ASTContext &Ctx) {        return;      } -    if (!Context->jmp_bufDecl) { +    if (!Context.jmp_bufDecl) {        if (const TypedefType *Typedef = Jmp_bufType->getAs<TypedefType>()) -        Context->setjmp_bufDecl(Typedef->getDecl()); +        Context.setjmp_bufDecl(Typedef->getDecl());        else {          const TagType *Tag = Jmp_bufType->getAs<TagType>();          if (!Tag) {            Error("Invalid jmp_buf type in AST file");            return;          } -        Context->setjmp_bufDecl(Tag->getDecl()); +        Context.setjmp_bufDecl(Tag->getDecl());        }      }    } @@ -2901,41 +2876,41 @@ void ASTReader::InitializeContext(ASTContext &Ctx) {        return;      } -    if (!Context->sigjmp_bufDecl) { +    if (!Context.sigjmp_bufDecl) {        if (const TypedefType *Typedef = Sigjmp_bufType->getAs<TypedefType>()) -        Context->setsigjmp_bufDecl(Typedef->getDecl()); +        Context.setsigjmp_bufDecl(Typedef->getDecl());        else {          const TagType *Tag = Sigjmp_bufType->getAs<TagType>();          assert(Tag && "Invalid sigjmp_buf type in AST file"); -        Context->setsigjmp_bufDecl(Tag->getDecl()); +        Context.setsigjmp_bufDecl(Tag->getDecl());        }      }    }    if (unsigned ObjCIdRedef          = SpecialTypes[SPECIAL_TYPE_OBJC_ID_REDEFINITION]) { -    if (Context->ObjCIdRedefinitionType.isNull()) -      Context->ObjCIdRedefinitionType = GetType(ObjCIdRedef); +    if (Context.ObjCIdRedefinitionType.isNull()) +      Context.ObjCIdRedefinitionType = GetType(ObjCIdRedef);    }    if (unsigned ObjCClassRedef          = SpecialTypes[SPECIAL_TYPE_OBJC_CLASS_REDEFINITION]) { -    if (Context->ObjCClassRedefinitionType.isNull()) -      Context->ObjCClassRedefinitionType = GetType(ObjCClassRedef); +    if (Context.ObjCClassRedefinitionType.isNull()) +      Context.ObjCClassRedefinitionType = GetType(ObjCClassRedef);    }    if (unsigned ObjCSelRedef          = SpecialTypes[SPECIAL_TYPE_OBJC_SEL_REDEFINITION]) { -    if (Context->ObjCSelRedefinitionType.isNull()) -      Context->ObjCSelRedefinitionType = GetType(ObjCSelRedef); +    if (Context.ObjCSelRedefinitionType.isNull()) +      Context.ObjCSelRedefinitionType = GetType(ObjCSelRedef);    } -  ReadPragmaDiagnosticMappings(Context->getDiagnostics()); +  ReadPragmaDiagnosticMappings(Context.getDiagnostics());    // If there were any CUDA special declarations, deserialize them.    if (!CUDASpecialDeclRefs.empty()) {      assert(CUDASpecialDeclRefs.size() == 1 && "More decl refs than expected!"); -    Context->setcudaConfigureCallDecl( +    Context.setcudaConfigureCallDecl(                             cast<FunctionDecl>(GetDecl(CUDASpecialDeclRefs[0])));    }  } @@ -3271,7 +3246,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      }      QualType Base = readType(*Loc.F, Record, Idx);      Qualifiers Quals = Qualifiers::fromOpaqueValue(Record[Idx++]); -    return Context->getQualifiedType(Base, Quals); +    return Context.getQualifiedType(Base, Quals);    }    case TYPE_COMPLEX: { @@ -3280,7 +3255,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType ElemType = readType(*Loc.F, Record, Idx); -    return Context->getComplexType(ElemType); +    return Context.getComplexType(ElemType);    }    case TYPE_POINTER: { @@ -3289,7 +3264,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType PointeeType = readType(*Loc.F, Record, Idx); -    return Context->getPointerType(PointeeType); +    return Context.getPointerType(PointeeType);    }    case TYPE_BLOCK_POINTER: { @@ -3298,7 +3273,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType PointeeType = readType(*Loc.F, Record, Idx); -    return Context->getBlockPointerType(PointeeType); +    return Context.getBlockPointerType(PointeeType);    }    case TYPE_LVALUE_REFERENCE: { @@ -3307,7 +3282,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType PointeeType = readType(*Loc.F, Record, Idx); -    return Context->getLValueReferenceType(PointeeType, Record[1]); +    return Context.getLValueReferenceType(PointeeType, Record[1]);    }    case TYPE_RVALUE_REFERENCE: { @@ -3316,7 +3291,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType PointeeType = readType(*Loc.F, Record, Idx); -    return Context->getRValueReferenceType(PointeeType); +    return Context.getRValueReferenceType(PointeeType);    }    case TYPE_MEMBER_POINTER: { @@ -3329,7 +3304,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      if (PointeeType.isNull() || ClassType.isNull())        return QualType(); -    return Context->getMemberPointerType(PointeeType, ClassType.getTypePtr()); +    return Context.getMemberPointerType(PointeeType, ClassType.getTypePtr());    }    case TYPE_CONSTANT_ARRAY: { @@ -3338,7 +3313,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      unsigned IndexTypeQuals = Record[2];      unsigned Idx = 3;      llvm::APInt Size = ReadAPInt(Record, Idx); -    return Context->getConstantArrayType(ElementType, Size, +    return Context.getConstantArrayType(ElementType, Size,                                           ASM, IndexTypeQuals);    } @@ -3346,7 +3321,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType ElementType = readType(*Loc.F, Record, Idx);      ArrayType::ArraySizeModifier ASM = (ArrayType::ArraySizeModifier)Record[1];      unsigned IndexTypeQuals = Record[2]; -    return Context->getIncompleteArrayType(ElementType, ASM, IndexTypeQuals); +    return Context.getIncompleteArrayType(ElementType, ASM, IndexTypeQuals);    }    case TYPE_VARIABLE_ARRAY: { @@ -3355,7 +3330,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      unsigned IndexTypeQuals = Record[2];      SourceLocation LBLoc = ReadSourceLocation(*Loc.F, Record[3]);      SourceLocation RBLoc = ReadSourceLocation(*Loc.F, Record[4]); -    return Context->getVariableArrayType(ElementType, ReadExpr(*Loc.F), +    return Context.getVariableArrayType(ElementType, ReadExpr(*Loc.F),                                           ASM, IndexTypeQuals,                                           SourceRange(LBLoc, RBLoc));    } @@ -3369,7 +3344,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType ElementType = readType(*Loc.F, Record, Idx);      unsigned NumElements = Record[1];      unsigned VecKind = Record[2]; -    return Context->getVectorType(ElementType, NumElements, +    return Context.getVectorType(ElementType, NumElements,                                    (VectorType::VectorKind)VecKind);    } @@ -3381,7 +3356,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType ElementType = readType(*Loc.F, Record, Idx);      unsigned NumElements = Record[1]; -    return Context->getExtVectorType(ElementType, NumElements); +    return Context.getExtVectorType(ElementType, NumElements);    }    case TYPE_FUNCTION_NO_PROTO: { @@ -3392,7 +3367,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType ResultType = readType(*Loc.F, Record, Idx);      FunctionType::ExtInfo Info(Record[1], Record[2], Record[3],                                 (CallingConv)Record[4], Record[5]); -    return Context->getFunctionNoProtoType(ResultType, Info); +    return Context.getFunctionNoProtoType(ResultType, Info);    }    case TYPE_FUNCTION_PROTO: { @@ -3426,13 +3401,13 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      } else if (EST == EST_ComputedNoexcept) {        EPI.NoexceptExpr = ReadExpr(*Loc.F);      } -    return Context->getFunctionType(ResultType, ParamTypes.data(), NumParams, +    return Context.getFunctionType(ResultType, ParamTypes.data(), NumParams,                                      EPI);    }    case TYPE_UNRESOLVED_USING: {      unsigned Idx = 0; -    return Context->getTypeDeclType( +    return Context.getTypeDeclType(                    ReadDeclAs<UnresolvedUsingTypenameDecl>(*Loc.F, Record, Idx));    } @@ -3445,12 +3420,12 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      TypedefNameDecl *Decl = ReadDeclAs<TypedefNameDecl>(*Loc.F, Record, Idx);      QualType Canonical = readType(*Loc.F, Record, Idx);      if (!Canonical.isNull()) -      Canonical = Context->getCanonicalType(Canonical); -    return Context->getTypedefType(Decl, Canonical); +      Canonical = Context.getCanonicalType(Canonical); +    return Context.getTypedefType(Decl, Canonical);    }    case TYPE_TYPEOF_EXPR: -    return Context->getTypeOfExprType(ReadExpr(*Loc.F)); +    return Context.getTypeOfExprType(ReadExpr(*Loc.F));    case TYPE_TYPEOF: {      if (Record.size() != 1) { @@ -3458,21 +3433,21 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType UnderlyingType = readType(*Loc.F, Record, Idx); -    return Context->getTypeOfType(UnderlyingType); +    return Context.getTypeOfType(UnderlyingType);    }    case TYPE_DECLTYPE: -    return Context->getDecltypeType(ReadExpr(*Loc.F)); +    return Context.getDecltypeType(ReadExpr(*Loc.F));    case TYPE_UNARY_TRANSFORM: {      QualType BaseType = readType(*Loc.F, Record, Idx);      QualType UnderlyingType = readType(*Loc.F, Record, Idx);      UnaryTransformType::UTTKind UKind = (UnaryTransformType::UTTKind)Record[2]; -    return Context->getUnaryTransformType(BaseType, UnderlyingType, UKind); +    return Context.getUnaryTransformType(BaseType, UnderlyingType, UKind);    }    case TYPE_AUTO: -    return Context->getAutoType(readType(*Loc.F, Record, Idx)); +    return Context.getAutoType(readType(*Loc.F, Record, Idx));    case TYPE_RECORD: {      if (Record.size() != 2) { @@ -3482,7 +3457,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      unsigned Idx = 0;      bool IsDependent = Record[Idx++];      QualType T -      = Context->getRecordType(ReadDeclAs<RecordDecl>(*Loc.F, Record, Idx)); +      = Context.getRecordType(ReadDeclAs<RecordDecl>(*Loc.F, Record, Idx));      const_cast<Type*>(T.getTypePtr())->setDependent(IsDependent);      return T;    } @@ -3495,7 +3470,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      unsigned Idx = 0;      bool IsDependent = Record[Idx++];      QualType T -      = Context->getEnumType(ReadDeclAs<EnumDecl>(*Loc.F, Record, Idx)); +      = Context.getEnumType(ReadDeclAs<EnumDecl>(*Loc.F, Record, Idx));      const_cast<Type*>(T.getTypePtr())->setDependent(IsDependent);      return T;    } @@ -3508,7 +3483,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType modifiedType = readType(*Loc.F, Record, Idx);      QualType equivalentType = readType(*Loc.F, Record, Idx);      AttributedType::Kind kind = static_cast<AttributedType::Kind>(Record[2]); -    return Context->getAttributedType(kind, modifiedType, equivalentType); +    return Context.getAttributedType(kind, modifiedType, equivalentType);    }    case TYPE_PAREN: { @@ -3517,7 +3492,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {        return QualType();      }      QualType InnerType = readType(*Loc.F, Record, Idx); -    return Context->getParenType(InnerType); +    return Context.getParenType(InnerType);    }    case TYPE_PACK_EXPANSION: { @@ -3531,7 +3506,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      llvm::Optional<unsigned> NumExpansions;      if (Record[1])        NumExpansions = Record[1] - 1; -    return Context->getPackExpansionType(Pattern, NumExpansions); +    return Context.getPackExpansionType(Pattern, NumExpansions);    }    case TYPE_ELABORATED: { @@ -3539,14 +3514,14 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      ElaboratedTypeKeyword Keyword = (ElaboratedTypeKeyword)Record[Idx++];      NestedNameSpecifier *NNS = ReadNestedNameSpecifier(*Loc.F, Record, Idx);      QualType NamedType = readType(*Loc.F, Record, Idx); -    return Context->getElaboratedType(Keyword, NNS, NamedType); +    return Context.getElaboratedType(Keyword, NNS, NamedType);    }    case TYPE_OBJC_INTERFACE: {      unsigned Idx = 0;      ObjCInterfaceDecl *ItfD        = ReadDeclAs<ObjCInterfaceDecl>(*Loc.F, Record, Idx); -    return Context->getObjCInterfaceType(ItfD); +    return Context.getObjCInterfaceType(ItfD);    }    case TYPE_OBJC_OBJECT: { @@ -3556,13 +3531,13 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      SmallVector<ObjCProtocolDecl*, 4> Protos;      for (unsigned I = 0; I != NumProtos; ++I)        Protos.push_back(ReadDeclAs<ObjCProtocolDecl>(*Loc.F, Record, Idx)); -    return Context->getObjCObjectType(Base, Protos.data(), NumProtos); +    return Context.getObjCObjectType(Base, Protos.data(), NumProtos);    }    case TYPE_OBJC_OBJECT_POINTER: {      unsigned Idx = 0;      QualType Pointee = readType(*Loc.F, Record, Idx); -    return Context->getObjCObjectPointerType(Pointee); +    return Context.getObjCObjectPointerType(Pointee);    }    case TYPE_SUBST_TEMPLATE_TYPE_PARM: { @@ -3570,7 +3545,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType Parm = readType(*Loc.F, Record, Idx);      QualType Replacement = readType(*Loc.F, Record, Idx);      return -      Context->getSubstTemplateTypeParmType(cast<TemplateTypeParmType>(Parm), +      Context.getSubstTemplateTypeParmType(cast<TemplateTypeParmType>(Parm),                                              Replacement);    } @@ -3578,7 +3553,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      unsigned Idx = 0;      QualType Parm = readType(*Loc.F, Record, Idx);      TemplateArgument ArgPack = ReadTemplateArgument(*Loc.F, Record, Idx); -    return Context->getSubstTemplateTypeParmPackType( +    return Context.getSubstTemplateTypeParmPackType(                                                 cast<TemplateTypeParmType>(Parm),                                                       ArgPack);    } @@ -3589,7 +3564,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      // FIXME: ASTContext::getInjectedClassNameType is not currently suitable      // for AST reading, too much interdependencies.      return -      QualType(new (*Context, TypeAlignment) InjectedClassNameType(D, TST), 0); +      QualType(new (Context, TypeAlignment) InjectedClassNameType(D, TST), 0);    }    case TYPE_TEMPLATE_TYPE_PARM: { @@ -3599,7 +3574,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      bool Pack = Record[Idx++];      TemplateTypeParmDecl *D        = ReadDeclAs<TemplateTypeParmDecl>(*Loc.F, Record, Idx); -    return Context->getTemplateTypeParmType(Depth, Index, Pack, D); +    return Context.getTemplateTypeParmType(Depth, Index, Pack, D);    }    case TYPE_DEPENDENT_NAME: { @@ -3609,8 +3584,8 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      const IdentifierInfo *Name = this->GetIdentifierInfo(*Loc.F, Record, Idx);      QualType Canon = readType(*Loc.F, Record, Idx);      if (!Canon.isNull()) -      Canon = Context->getCanonicalType(Canon); -    return Context->getDependentNameType(Keyword, NNS, Name, Canon); +      Canon = Context.getCanonicalType(Canon); +    return Context.getDependentNameType(Keyword, NNS, Name, Canon);    }    case TYPE_DEPENDENT_TEMPLATE_SPECIALIZATION: { @@ -3623,7 +3598,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      Args.reserve(NumArgs);      while (NumArgs--)        Args.push_back(ReadTemplateArgument(*Loc.F, Record, Idx)); -    return Context->getDependentTemplateSpecializationType(Keyword, NNS, Name, +    return Context.getDependentTemplateSpecializationType(Keyword, NNS, Name,                                                        Args.size(), Args.data());    } @@ -3640,7 +3615,7 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      Expr *NumElts = ReadExpr(*Loc.F);      SourceRange Brackets = ReadSourceRange(*Loc.F, Record, Idx); -    return Context->getDependentSizedArrayType(ElementType, NumElts, ASM, +    return Context.getDependentSizedArrayType(ElementType, NumElts, ASM,                                                 IndexTypeQuals, Brackets);    } @@ -3653,10 +3628,10 @@ QualType ASTReader::readTypeRecord(unsigned Index) {      QualType Underlying = readType(*Loc.F, Record, Idx);      QualType T;      if (Underlying.isNull()) -      T = Context->getCanonicalTemplateSpecializationType(Name, Args.data(), +      T = Context.getCanonicalTemplateSpecializationType(Name, Args.data(),                                                            Args.size());      else -      T = Context->getTemplateSpecializationType(Name, Args.data(), +      T = Context.getTemplateSpecializationType(Name, Args.data(),                                                   Args.size(), Underlying);      const_cast<Type*>(T.getTypePtr())->setDependent(IsDependent);      return T; @@ -3903,7 +3878,7 @@ TypeSourceInfo *ASTReader::GetTypeSourceInfo(Module &F,    if (InfoTy.isNull())      return 0; -  TypeSourceInfo *TInfo = getContext()->CreateTypeSourceInfo(InfoTy); +  TypeSourceInfo *TInfo = getContext().CreateTypeSourceInfo(InfoTy);    TypeLocReader TLR(*this, F, Record, Idx);    for (TypeLoc TL = TInfo->getTypeLoc(); !TL.isNull(); TL = TL.getNextTypeLoc())      TLR.Visit(TL); @@ -3918,45 +3893,45 @@ QualType ASTReader::GetType(TypeID ID) {      QualType T;      switch ((PredefinedTypeIDs)Index) {      case PREDEF_TYPE_NULL_ID: return QualType(); -    case PREDEF_TYPE_VOID_ID: T = Context->VoidTy; break; -    case PREDEF_TYPE_BOOL_ID: T = Context->BoolTy; break; +    case PREDEF_TYPE_VOID_ID: T = Context.VoidTy; break; +    case PREDEF_TYPE_BOOL_ID: T = Context.BoolTy; break;      case PREDEF_TYPE_CHAR_U_ID:      case PREDEF_TYPE_CHAR_S_ID:        // FIXME: Check that the signedness of CharTy is correct! -      T = Context->CharTy; +      T = Context.CharTy;        break; -    case PREDEF_TYPE_UCHAR_ID:      T = Context->UnsignedCharTy;     break; -    case PREDEF_TYPE_USHORT_ID:     T = Context->UnsignedShortTy;    break; -    case PREDEF_TYPE_UINT_ID:       T = Context->UnsignedIntTy;      break; -    case PREDEF_TYPE_ULONG_ID:      T = Context->UnsignedLongTy;     break; -    case PREDEF_TYPE_ULONGLONG_ID:  T = Context->UnsignedLongLongTy; break; -    case PREDEF_TYPE_UINT128_ID:    T = Context->UnsignedInt128Ty;   break; -    case PREDEF_TYPE_SCHAR_ID:      T = Context->SignedCharTy;       break; -    case PREDEF_TYPE_WCHAR_ID:      T = Context->WCharTy;            break; -    case PREDEF_TYPE_SHORT_ID:      T = Context->ShortTy;            break; -    case PREDEF_TYPE_INT_ID:        T = Context->IntTy;              break; -    case PREDEF_TYPE_LONG_ID:       T = Context->LongTy;             break; -    case PREDEF_TYPE_LONGLONG_ID:   T = Context->LongLongTy;         break; -    case PREDEF_TYPE_INT128_ID:     T = Context->Int128Ty;           break; -    case PREDEF_TYPE_FLOAT_ID:      T = Context->FloatTy;            break; -    case PREDEF_TYPE_DOUBLE_ID:     T = Context->DoubleTy;           break; -    case PREDEF_TYPE_LONGDOUBLE_ID: T = Context->LongDoubleTy;       break; -    case PREDEF_TYPE_OVERLOAD_ID:   T = Context->OverloadTy;         break; -    case PREDEF_TYPE_BOUND_MEMBER:  T = Context->BoundMemberTy;      break; -    case PREDEF_TYPE_DEPENDENT_ID:  T = Context->DependentTy;        break; -    case PREDEF_TYPE_UNKNOWN_ANY:   T = Context->UnknownAnyTy;       break; -    case PREDEF_TYPE_NULLPTR_ID:    T = Context->NullPtrTy;          break; -    case PREDEF_TYPE_CHAR16_ID:     T = Context->Char16Ty;           break; -    case PREDEF_TYPE_CHAR32_ID:     T = Context->Char32Ty;           break; -    case PREDEF_TYPE_OBJC_ID:       T = Context->ObjCBuiltinIdTy;    break; -    case PREDEF_TYPE_OBJC_CLASS:    T = Context->ObjCBuiltinClassTy; break; -    case PREDEF_TYPE_OBJC_SEL:      T = Context->ObjCBuiltinSelTy;   break; -    case PREDEF_TYPE_AUTO_DEDUCT:   T = Context->getAutoDeductType(); break; +    case PREDEF_TYPE_UCHAR_ID:      T = Context.UnsignedCharTy;     break; +    case PREDEF_TYPE_USHORT_ID:     T = Context.UnsignedShortTy;    break; +    case PREDEF_TYPE_UINT_ID:       T = Context.UnsignedIntTy;      break; +    case PREDEF_TYPE_ULONG_ID:      T = Context.UnsignedLongTy;     break; +    case PREDEF_TYPE_ULONGLONG_ID:  T = Context.UnsignedLongLongTy; break; +    case PREDEF_TYPE_UINT128_ID:    T = Context.UnsignedInt128Ty;   break; +    case PREDEF_TYPE_SCHAR_ID:      T = Context.SignedCharTy;       break; +    case PREDEF_TYPE_WCHAR_ID:      T = Context.WCharTy;            break; +    case PREDEF_TYPE_SHORT_ID:      T = Context.ShortTy;            break; +    case PREDEF_TYPE_INT_ID:        T = Context.IntTy;              break; +    case PREDEF_TYPE_LONG_ID:       T = Context.LongTy;             break; +    case PREDEF_TYPE_LONGLONG_ID:   T = Context.LongLongTy;         break; +    case PREDEF_TYPE_INT128_ID:     T = Context.Int128Ty;           break; +    case PREDEF_TYPE_FLOAT_ID:      T = Context.FloatTy;            break; +    case PREDEF_TYPE_DOUBLE_ID:     T = Context.DoubleTy;           break; +    case PREDEF_TYPE_LONGDOUBLE_ID: T = Context.LongDoubleTy;       break; +    case PREDEF_TYPE_OVERLOAD_ID:   T = Context.OverloadTy;         break; +    case PREDEF_TYPE_BOUND_MEMBER:  T = Context.BoundMemberTy;      break; +    case PREDEF_TYPE_DEPENDENT_ID:  T = Context.DependentTy;        break; +    case PREDEF_TYPE_UNKNOWN_ANY:   T = Context.UnknownAnyTy;       break; +    case PREDEF_TYPE_NULLPTR_ID:    T = Context.NullPtrTy;          break; +    case PREDEF_TYPE_CHAR16_ID:     T = Context.Char16Ty;           break; +    case PREDEF_TYPE_CHAR32_ID:     T = Context.Char32Ty;           break; +    case PREDEF_TYPE_OBJC_ID:       T = Context.ObjCBuiltinIdTy;    break; +    case PREDEF_TYPE_OBJC_CLASS:    T = Context.ObjCBuiltinClassTy; break; +    case PREDEF_TYPE_OBJC_SEL:      T = Context.ObjCBuiltinSelTy;   break; +    case PREDEF_TYPE_AUTO_DEDUCT:   T = Context.getAutoDeductType(); break;      case PREDEF_TYPE_AUTO_RREF_DEDUCT:  -      T = Context->getAutoRRefDeductType();  +      T = Context.getAutoRRefDeductType();         break;      } @@ -4077,7 +4052,7 @@ CXXBaseSpecifier *ASTReader::GetExternalCXXBaseSpecifiers(uint64_t Offset) {    unsigned Idx = 0;    unsigned NumBases = Record[Idx++]; -  void *Mem = Context->Allocate(sizeof(CXXBaseSpecifier) * NumBases); +  void *Mem = Context.Allocate(sizeof(CXXBaseSpecifier) * NumBases);    CXXBaseSpecifier *Bases = new (Mem) CXXBaseSpecifier [NumBases];    for (unsigned I = 0; I != NumBases; ++I)      Bases[I] = ReadCXXBaseSpecifier(*Loc.F, Record, Idx); @@ -4110,32 +4085,25 @@ Decl *ASTReader::GetDecl(DeclID ID) {        return 0;      case PREDEF_DECL_TRANSLATION_UNIT_ID: -      assert(Context && "No context available?"); -      return Context->getTranslationUnitDecl(); +      return Context.getTranslationUnitDecl();      case PREDEF_DECL_OBJC_ID_ID: -      assert(Context && "No context available?"); -      return Context->getObjCIdDecl(); +      return Context.getObjCIdDecl();      case PREDEF_DECL_OBJC_SEL_ID: -      assert(Context && "No context available?"); -      return Context->getObjCSelDecl(); +      return Context.getObjCSelDecl();      case PREDEF_DECL_OBJC_CLASS_ID: -      assert(Context && "No context available?"); -      return Context->getObjCClassDecl(); +      return Context.getObjCClassDecl();      case PREDEF_DECL_INT_128_ID: -      assert(Context && "No context available?"); -      return Context->getInt128Decl(); +      return Context.getInt128Decl();      case PREDEF_DECL_UNSIGNED_INT_128_ID: -      assert(Context && "No context available?"); -      return Context->getUInt128Decl(); +      return Context.getUInt128Decl();      case PREDEF_DECL_OBJC_INSTANCETYPE_ID: -      assert(Context && "No context available?"); -      return Context->getObjCInstanceTypeDecl(); +      return Context.getObjCInstanceTypeDecl();      }      return 0; @@ -4981,23 +4949,23 @@ ASTReader::ReadDeclarationName(Module &F,      return DeclarationName(ReadSelector(F, Record, Idx));    case DeclarationName::CXXConstructorName: -    return Context->DeclarationNames.getCXXConstructorName( -                          Context->getCanonicalType(readType(F, Record, Idx))); +    return Context.DeclarationNames.getCXXConstructorName( +                          Context.getCanonicalType(readType(F, Record, Idx)));    case DeclarationName::CXXDestructorName: -    return Context->DeclarationNames.getCXXDestructorName( -                          Context->getCanonicalType(readType(F, Record, Idx))); +    return Context.DeclarationNames.getCXXDestructorName( +                          Context.getCanonicalType(readType(F, Record, Idx)));    case DeclarationName::CXXConversionFunctionName: -    return Context->DeclarationNames.getCXXConversionFunctionName( -                          Context->getCanonicalType(readType(F, Record, Idx))); +    return Context.DeclarationNames.getCXXConversionFunctionName( +                          Context.getCanonicalType(readType(F, Record, Idx)));    case DeclarationName::CXXOperatorName: -    return Context->DeclarationNames.getCXXOperatorName( +    return Context.DeclarationNames.getCXXOperatorName(                                         (OverloadedOperatorKind)Record[Idx++]);    case DeclarationName::CXXLiteralOperatorName: -    return Context->DeclarationNames.getCXXLiteralOperatorName( +    return Context.DeclarationNames.getCXXLiteralOperatorName(                                         GetIdentifierInfo(F, Record, Idx));    case DeclarationName::CXXUsingDirective: @@ -5056,7 +5024,7 @@ void ASTReader::ReadQualifierInfo(Module &F, QualifierInfo &Info,    unsigned NumTPLists = Record[Idx++];    Info.NumTemplParamLists = NumTPLists;    if (NumTPLists) { -    Info.TemplParamLists = new (*Context) TemplateParameterList*[NumTPLists]; +    Info.TemplParamLists = new (Context) TemplateParameterList*[NumTPLists];      for (unsigned i=0; i != NumTPLists; ++i)        Info.TemplParamLists[i] = ReadTemplateParameterList(F, Record, Idx);    } @@ -5076,23 +5044,23 @@ ASTReader::ReadTemplateName(Module &F, const RecordData &Record,      while (size--)        Decls.addDecl(ReadDeclAs<NamedDecl>(F, Record, Idx)); -    return Context->getOverloadedTemplateName(Decls.begin(), Decls.end()); +    return Context.getOverloadedTemplateName(Decls.begin(), Decls.end());    }    case TemplateName::QualifiedTemplate: {      NestedNameSpecifier *NNS = ReadNestedNameSpecifier(F, Record, Idx);      bool hasTemplKeyword = Record[Idx++];      TemplateDecl *Template = ReadDeclAs<TemplateDecl>(F, Record, Idx); -    return Context->getQualifiedTemplateName(NNS, hasTemplKeyword, Template); +    return Context.getQualifiedTemplateName(NNS, hasTemplKeyword, Template);    }    case TemplateName::DependentTemplate: {      NestedNameSpecifier *NNS = ReadNestedNameSpecifier(F, Record, Idx);      if (Record[Idx++])  // isIdentifier -      return Context->getDependentTemplateName(NNS, +      return Context.getDependentTemplateName(NNS,                                                 GetIdentifierInfo(F, Record,                                                                    Idx)); -    return Context->getDependentTemplateName(NNS, +    return Context.getDependentTemplateName(NNS,                                           (OverloadedOperatorKind)Record[Idx++]);    } @@ -5101,7 +5069,7 @@ ASTReader::ReadTemplateName(Module &F, const RecordData &Record,        = ReadDeclAs<TemplateTemplateParmDecl>(F, Record, Idx);      if (!param) return TemplateName();      TemplateName replacement = ReadTemplateName(F, Record, Idx); -    return Context->getSubstTemplateTemplateParm(param, replacement); +    return Context.getSubstTemplateTemplateParm(param, replacement);    }    case TemplateName::SubstTemplateTemplateParmPack: { @@ -5114,7 +5082,7 @@ ASTReader::ReadTemplateName(Module &F, const RecordData &Record,      if (ArgPack.getKind() != TemplateArgument::Pack)        return TemplateName(); -    return Context->getSubstTemplateTemplateParmPack(Param, ArgPack); +    return Context.getSubstTemplateTemplateParmPack(Param, ArgPack);    }    } @@ -5151,7 +5119,7 @@ ASTReader::ReadTemplateArgument(Module &F,      return TemplateArgument(ReadExpr(F));    case TemplateArgument::Pack: {      unsigned NumArgs = Record[Idx++]; -    TemplateArgument *Args = new (*Context) TemplateArgument[NumArgs]; +    TemplateArgument *Args = new (Context) TemplateArgument[NumArgs];      for (unsigned I = 0; I != NumArgs; ++I)        Args[I] = ReadTemplateArgument(F, Record, Idx);      return TemplateArgument(Args, NumArgs); @@ -5176,7 +5144,7 @@ ASTReader::ReadTemplateParameterList(Module &F,      Params.push_back(ReadDeclAs<NamedDecl>(F, Record, Idx));    TemplateParameterList* TemplateParams = -    TemplateParameterList::Create(*Context, TemplateLoc, LAngleLoc, +    TemplateParameterList::Create(Context, TemplateLoc, LAngleLoc,                                    Params.data(), Params.size(), RAngleLoc);    return TemplateParams;  } @@ -5225,10 +5193,8 @@ ASTReader::ReadCXXCtorInitializers(Module &F, const RecordData &Record,    CXXCtorInitializer **CtorInitializers = 0;    unsigned NumInitializers = Record[Idx++];    if (NumInitializers) { -    ASTContext &C = *getContext(); -      CtorInitializers -        = new (C) CXXCtorInitializer*[NumInitializers]; +        = new (Context) CXXCtorInitializer*[NumInitializers];      for (unsigned i=0; i != NumInitializers; ++i) {        TypeSourceInfo *BaseClassInfo = 0;        bool IsBaseVirtual = false; @@ -5274,22 +5240,22 @@ ASTReader::ReadCXXCtorInitializers(Module &F, const RecordData &Record,        CXXCtorInitializer *BOMInit;        if (Type == CTOR_INITIALIZER_BASE) { -        BOMInit = new (C) CXXCtorInitializer(C, BaseClassInfo, IsBaseVirtual, +        BOMInit = new (Context) CXXCtorInitializer(Context, BaseClassInfo, IsBaseVirtual,                                               LParenLoc, Init, RParenLoc,                                               MemberOrEllipsisLoc);        } else if (Type == CTOR_INITIALIZER_DELEGATING) { -        BOMInit = new (C) CXXCtorInitializer(C, MemberOrEllipsisLoc, LParenLoc, +        BOMInit = new (Context) CXXCtorInitializer(Context, MemberOrEllipsisLoc, LParenLoc,                                               Target, Init, RParenLoc);        } else if (IsWritten) {          if (Member) -          BOMInit = new (C) CXXCtorInitializer(C, Member, MemberOrEllipsisLoc, +          BOMInit = new (Context) CXXCtorInitializer(Context, Member, MemberOrEllipsisLoc,                                                 LParenLoc, Init, RParenLoc);          else  -          BOMInit = new (C) CXXCtorInitializer(C, IndirectMember, +          BOMInit = new (Context) CXXCtorInitializer(Context, IndirectMember,                                                 MemberOrEllipsisLoc, LParenLoc,                                                 Init, RParenLoc);        } else { -        BOMInit = CXXCtorInitializer::Create(C, Member, MemberOrEllipsisLoc, +        BOMInit = CXXCtorInitializer::Create(Context, Member, MemberOrEllipsisLoc,                                               LParenLoc, Init, RParenLoc,                                               Indices.data(), Indices.size());        } @@ -5314,19 +5280,19 @@ ASTReader::ReadNestedNameSpecifier(Module &F,      switch (Kind) {      case NestedNameSpecifier::Identifier: {        IdentifierInfo *II = GetIdentifierInfo(F, Record, Idx); -      NNS = NestedNameSpecifier::Create(*Context, Prev, II); +      NNS = NestedNameSpecifier::Create(Context, Prev, II);        break;      }      case NestedNameSpecifier::Namespace: {        NamespaceDecl *NS = ReadDeclAs<NamespaceDecl>(F, Record, Idx); -      NNS = NestedNameSpecifier::Create(*Context, Prev, NS); +      NNS = NestedNameSpecifier::Create(Context, Prev, NS);        break;      }      case NestedNameSpecifier::NamespaceAlias: {        NamespaceAliasDecl *Alias =ReadDeclAs<NamespaceAliasDecl>(F, Record, Idx); -      NNS = NestedNameSpecifier::Create(*Context, Prev, Alias); +      NNS = NestedNameSpecifier::Create(Context, Prev, Alias);        break;      } @@ -5337,12 +5303,12 @@ ASTReader::ReadNestedNameSpecifier(Module &F,          return 0;        bool Template = Record[Idx++]; -      NNS = NestedNameSpecifier::Create(*Context, Prev, Template, T); +      NNS = NestedNameSpecifier::Create(Context, Prev, Template, T);        break;      }      case NestedNameSpecifier::Global: { -      NNS = NestedNameSpecifier::GlobalSpecifier(*Context); +      NNS = NestedNameSpecifier::GlobalSpecifier(Context);        // No associated value, and there can't be a prefix.        break;      } @@ -5364,21 +5330,21 @@ ASTReader::ReadNestedNameSpecifierLoc(Module &F, const RecordData &Record,      case NestedNameSpecifier::Identifier: {        IdentifierInfo *II = GetIdentifierInfo(F, Record, Idx);              SourceRange Range = ReadSourceRange(F, Record, Idx); -      Builder.Extend(*Context, II, Range.getBegin(), Range.getEnd()); +      Builder.Extend(Context, II, Range.getBegin(), Range.getEnd());        break;      }      case NestedNameSpecifier::Namespace: {        NamespaceDecl *NS = ReadDeclAs<NamespaceDecl>(F, Record, Idx);        SourceRange Range = ReadSourceRange(F, Record, Idx); -      Builder.Extend(*Context, NS, Range.getBegin(), Range.getEnd()); +      Builder.Extend(Context, NS, Range.getBegin(), Range.getEnd());        break;      }      case NestedNameSpecifier::NamespaceAlias: {        NamespaceAliasDecl *Alias =ReadDeclAs<NamespaceAliasDecl>(F, Record, Idx);        SourceRange Range = ReadSourceRange(F, Record, Idx); -      Builder.Extend(*Context, Alias, Range.getBegin(), Range.getEnd()); +      Builder.Extend(Context, Alias, Range.getBegin(), Range.getEnd());        break;      } @@ -5391,7 +5357,7 @@ ASTReader::ReadNestedNameSpecifierLoc(Module &F, const RecordData &Record,        SourceLocation ColonColonLoc = ReadSourceLocation(F, Record, Idx);        // FIXME: 'template' keyword location not saved anywhere, so we fake it. -      Builder.Extend(*Context,  +      Builder.Extend(Context,                        Template? T->getTypeLoc().getBeginLoc() : SourceLocation(),                       T->getTypeLoc(), ColonColonLoc);        break; @@ -5399,13 +5365,13 @@ ASTReader::ReadNestedNameSpecifierLoc(Module &F, const RecordData &Record,      case NestedNameSpecifier::Global: {        SourceLocation ColonColonLoc = ReadSourceLocation(F, Record, Idx); -      Builder.MakeGlobal(*Context, ColonColonLoc); +      Builder.MakeGlobal(Context, ColonColonLoc);        break;      }      }    } -  return Builder.getWithLocInContext(*Context); +  return Builder.getWithLocInContext(Context);  }  SourceRange @@ -5460,7 +5426,7 @@ CXXTemporary *ASTReader::ReadCXXTemporary(Module &F,                                            const RecordData &Record,                                            unsigned &Idx) {    CXXDestructorDecl *Decl = ReadDeclAs<CXXDestructorDecl>(F, Record, Idx); -  return CXXTemporary::Create(*Context, Decl); +  return CXXTemporary::Create(Context, Decl);  }  DiagnosticBuilder ASTReader::Diag(unsigned DiagID) { @@ -5530,7 +5496,7 @@ ASTReader::ASTReader(Preprocessor &PP, ASTContext &Context,                       bool DisableStatCache)    : Listener(new PCHValidator(PP, *this)), DeserializationListener(0),      SourceMgr(PP.getSourceManager()), FileMgr(PP.getFileManager()), -    Diags(PP.getDiagnostics()), SemaObj(0), PP(&PP), Context(&Context), +    Diags(PP.getDiagnostics()), SemaObj(0), PP(&PP), Context(Context),      Consumer(0), ModuleMgr(FileMgr.getFileSystemOptions()),      RelocatablePCH(false), isysroot(isysroot),      DisableValidation(DisableValidation), diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 1abf0d39eed..c584181a4cb 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -231,7 +231,7 @@ void ASTDeclReader::VisitDecl(Decl *D) {      // unit DeclContext as a placeholder.      DeclContextIDForTemplateParmDecl = ReadDeclID(Record, Idx);      LexicalDeclContextIDForTemplateParmDecl = ReadDeclID(Record, Idx); -    D->setDeclContext(Reader.getContext()->getTranslationUnitDecl());  +    D->setDeclContext(Reader.getContext().getTranslationUnitDecl());     } else {      D->setDeclContext(ReadDeclAs<DeclContext>(Record, Idx));      D->setLexicalDeclContext(ReadDeclAs<DeclContext>(Record, Idx)); @@ -286,7 +286,7 @@ void ASTDeclReader::VisitTagDecl(TagDecl *TD) {    TD->setEmbeddedInDeclarator(Record[Idx++]);    TD->setRBraceLoc(ReadSourceLocation(Record, Idx));    if (Record[Idx++]) { // hasExtInfo -    TagDecl::ExtInfo *Info = new (*Reader.getContext()) TagDecl::ExtInfo(); +    TagDecl::ExtInfo *Info = new (Reader.getContext()) TagDecl::ExtInfo();      ReadQualifierInfo(*Info, Record, Idx);      TD->TypedefNameDeclOrQualifier = Info;    } else @@ -332,7 +332,7 @@ void ASTDeclReader::VisitDeclaratorDecl(DeclaratorDecl *DD) {    DD->setInnerLocStart(ReadSourceLocation(Record, Idx));    if (Record[Idx++]) { // hasExtInfo      DeclaratorDecl::ExtInfo *Info -        = new (*Reader.getContext()) DeclaratorDecl::ExtInfo(); +        = new (Reader.getContext()) DeclaratorDecl::ExtInfo();      ReadQualifierInfo(*Info, Record, Idx);      DD->DeclInfo = Info;    } @@ -357,7 +357,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {      FunctionDecl *InstFD = ReadDeclAs<FunctionDecl>(Record, Idx);      TemplateSpecializationKind TSK = (TemplateSpecializationKind)Record[Idx++];      SourceLocation POI = ReadSourceLocation(Record, Idx); -    FD->setInstantiationOfMemberFunction(*Reader.getContext(), InstFD, TSK); +    FD->setInstantiationOfMemberFunction(Reader.getContext(), InstFD, TSK);      FD->getMemberSpecializationInfo()->setPointOfInstantiation(POI);      break;    } @@ -386,7 +386,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {      SourceLocation POI = ReadSourceLocation(Record, Idx); -    ASTContext &C = *Reader.getContext(); +    ASTContext &C = Reader.getContext();      TemplateArgumentList *TemplArgList        = TemplateArgumentList::CreateCopy(C, TemplArgs.data(), TemplArgs.size());      TemplateArgumentListInfo *TemplArgsInfo @@ -434,7 +434,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {      TemplArgs.setLAngleLoc(ReadSourceLocation(Record, Idx));      TemplArgs.setRAngleLoc(ReadSourceLocation(Record, Idx)); -    FD->setDependentTemplateSpecialization(*Reader.getContext(), +    FD->setDependentTemplateSpecialization(Reader.getContext(),                                             TemplDecls, TemplArgs);      break;    } @@ -465,7 +465,7 @@ void ASTDeclReader::VisitFunctionDecl(FunctionDecl *FD) {    Params.reserve(NumParams);    for (unsigned I = 0; I != NumParams; ++I)      Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx)); -  FD->setParams(*Reader.getContext(), Params.data(), NumParams); +  FD->setParams(Reader.getContext(), Params.data(), NumParams);  }  void ASTDeclReader::VisitObjCMethodDecl(ObjCMethodDecl *MD) { @@ -493,7 +493,7 @@ void ASTDeclReader::VisitObjCMethodDecl(ObjCMethodDecl *MD) {    Params.reserve(NumParams);    for (unsigned I = 0; I != NumParams; ++I)      Params.push_back(ReadDeclAs<ParmVarDecl>(Record, Idx)); -  MD->setMethodParams(*Reader.getContext(), Params.data(), NumParams, +  MD->setMethodParams(Reader.getContext(), Params.data(), NumParams,                        NumParams);  } @@ -520,7 +520,7 @@ void ASTDeclReader::VisitObjCInterfaceDecl(ObjCInterfaceDecl *ID) {    for (unsigned I = 0; I != NumProtocols; ++I)      ProtoLocs.push_back(ReadSourceLocation(Record, Idx));    ID->setProtocolList(Protocols.data(), NumProtocols, ProtoLocs.data(), -                      *Reader.getContext()); +                      Reader.getContext());    // Read the transitive closure of protocols referenced by this class.    NumProtocols = Record[Idx++]; @@ -529,7 +529,7 @@ void ASTDeclReader::VisitObjCInterfaceDecl(ObjCInterfaceDecl *ID) {    for (unsigned I = 0; I != NumProtocols; ++I)      Protocols.push_back(ReadDeclAs<ObjCProtocolDecl>(Record, Idx));    ID->AllReferencedProtocols.set(Protocols.data(), NumProtocols, -                                 *Reader.getContext()); +                                 Reader.getContext());    // Read the ivars.    unsigned NumIvars = Record[Idx++]; @@ -571,7 +571,7 @@ void ASTDeclReader::VisitObjCProtocolDecl(ObjCProtocolDecl *PD) {    for (unsigned I = 0; I != NumProtoRefs; ++I)      ProtoLocs.push_back(ReadSourceLocation(Record, Idx));    PD->setProtocolList(ProtoRefs.data(), NumProtoRefs, ProtoLocs.data(), -                      *Reader.getContext()); +                      Reader.getContext());  }  void ASTDeclReader::VisitObjCAtDefsFieldDecl(ObjCAtDefsFieldDecl *FD) { @@ -582,7 +582,7 @@ void ASTDeclReader::VisitObjCClassDecl(ObjCClassDecl *CD) {    VisitDecl(CD);    ObjCInterfaceDecl *ClassRef = ReadDeclAs<ObjCInterfaceDecl>(Record, Idx);    SourceLocation SLoc = ReadSourceLocation(Record, Idx); -  CD->setClass(*Reader.getContext(), ClassRef, SLoc); +  CD->setClass(Reader.getContext(), ClassRef, SLoc);  }  void ASTDeclReader::VisitObjCForwardProtocolDecl(ObjCForwardProtocolDecl *FPD) { @@ -597,7 +597,7 @@ void ASTDeclReader::VisitObjCForwardProtocolDecl(ObjCForwardProtocolDecl *FPD) {    for (unsigned I = 0; I != NumProtoRefs; ++I)      ProtoLocs.push_back(ReadSourceLocation(Record, Idx));    FPD->setProtocolList(ProtoRefs.data(), NumProtoRefs, ProtoLocs.data(), -                       *Reader.getContext()); +                       Reader.getContext());  }  void ASTDeclReader::VisitObjCCategoryDecl(ObjCCategoryDecl *CD) { @@ -613,7 +613,7 @@ void ASTDeclReader::VisitObjCCategoryDecl(ObjCCategoryDecl *CD) {    for (unsigned I = 0; I != NumProtoRefs; ++I)      ProtoLocs.push_back(ReadSourceLocation(Record, Idx));    CD->setProtocolList(ProtoRefs.data(), NumProtoRefs, ProtoLocs.data(), -                      *Reader.getContext()); +                      Reader.getContext());    CD->NextClassCategory = ReadDeclAs<ObjCCategoryDecl>(Record, Idx);    CD->setHasSynthBitfield(Record[Idx++]);    CD->setAtLoc(ReadSourceLocation(Record, Idx)); @@ -683,7 +683,7 @@ void ASTDeclReader::VisitFieldDecl(FieldDecl *FD) {      FD->setInClassInitializer(Reader.ReadExpr(F));    if (!FD->getDeclName()) {      if (FieldDecl *Tmpl = ReadDeclAs<FieldDecl>(Record, Idx)) -      Reader.getContext()->setInstantiatedFromUnnamedFieldDecl(FD, Tmpl); +      Reader.getContext().setInstantiatedFromUnnamedFieldDecl(FD, Tmpl);    }  } @@ -692,7 +692,7 @@ void ASTDeclReader::VisitIndirectFieldDecl(IndirectFieldDecl *FD) {    FD->ChainingSize = Record[Idx++];    assert(FD->ChainingSize >= 2 && "Anonymous chaining must be >= 2"); -  FD->Chaining = new (*Reader.getContext())NamedDecl*[FD->ChainingSize]; +  FD->Chaining = new (Reader.getContext())NamedDecl*[FD->ChainingSize];    for (unsigned I = 0; I != FD->ChainingSize; ++I)      FD->Chaining[I] = ReadDeclAs<NamedDecl>(Record, Idx); @@ -716,7 +716,7 @@ void ASTDeclReader::VisitVarDecl(VarDecl *VD) {      VarDecl *Tmpl = ReadDeclAs<VarDecl>(Record, Idx);      TemplateSpecializationKind TSK = (TemplateSpecializationKind)Record[Idx++];      SourceLocation POI = ReadSourceLocation(Record, Idx); -    Reader.getContext()->setInstantiatedFromStaticDataMember(VD, Tmpl, TSK,POI); +    Reader.getContext().setInstantiatedFromStaticDataMember(VD, Tmpl, TSK,POI);    }  } @@ -773,7 +773,7 @@ void ASTDeclReader::VisitBlockDecl(BlockDecl *BD) {      captures.push_back(BlockDecl::Capture(decl, byRef, nested, copyExpr));    } -  BD->setCaptures(*Reader.getContext(), captures.begin(), +  BD->setCaptures(Reader.getContext(), captures.begin(),                    captures.end(), capturesCXXThis);  } @@ -820,7 +820,7 @@ void ASTDeclReader::VisitUsingDecl(UsingDecl *D) {    D->FirstUsingShadow = ReadDeclAs<UsingShadowDecl>(Record, Idx);    D->setTypeName(Record[Idx++]);    if (NamedDecl *Pattern = ReadDeclAs<NamedDecl>(Record, Idx)) -    Reader.getContext()->setInstantiatedFromUsingDecl(D, Pattern); +    Reader.getContext().setInstantiatedFromUsingDecl(D, Pattern);  }  void ASTDeclReader::VisitUsingShadowDecl(UsingShadowDecl *D) { @@ -829,7 +829,7 @@ void ASTDeclReader::VisitUsingShadowDecl(UsingShadowDecl *D) {    D->UsingOrNextShadow = ReadDeclAs<NamedDecl>(Record, Idx);    UsingShadowDecl *Pattern = ReadDeclAs<UsingShadowDecl>(Record, Idx);    if (Pattern) -    Reader.getContext()->setInstantiatedFromUsingShadowDecl(D, Pattern); +    Reader.getContext().setInstantiatedFromUsingShadowDecl(D, Pattern);  }  void ASTDeclReader::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { @@ -911,7 +911,7 @@ void ASTDeclReader::InitializeCXXDefinitionData(CXXRecordDecl *D,                                                  CXXRecordDecl *DefinitionDecl,                                                  const RecordData &Record,                                                  unsigned &Idx) { -  ASTContext &C = *Reader.getContext(); +  ASTContext &C = Reader.getContext();    if (D == DefinitionDecl) {      D->DefinitionData = new (C) struct CXXRecordDecl::DefinitionData(D); @@ -947,7 +947,7 @@ void ASTDeclReader::VisitCXXRecordDecl(CXXRecordDecl *D) {    CXXRecordDecl *DefinitionDecl = ReadDeclAs<CXXRecordDecl>(Record, Idx);    InitializeCXXDefinitionData(D, DefinitionDecl, Record, Idx); -  ASTContext &C = *Reader.getContext(); +  ASTContext &C = Reader.getContext();    enum CXXRecKind {      CXXRecNotTemplate = 0, CXXRecTemplate, CXXRecMemberSpecialization @@ -986,7 +986,7 @@ void ASTDeclReader::VisitCXXMethodDecl(CXXMethodDecl *D) {      // Avoid invariant checking of CXXMethodDecl::addOverriddenMethod,      // MD may be initializing.      if (CXXMethodDecl *MD = ReadDeclAs<CXXMethodDecl>(Record, Idx)) -      Reader.getContext()->addOverriddenMethod(D, MD); +      Reader.getContext().addOverriddenMethod(D, MD);    }  } @@ -1071,7 +1071,7 @@ void ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) {      if (PreviousDeclID != FirstDeclID)        Reader.PendingPreviousDecls.push_back(std::make_pair(D, PreviousDeclID));    } else { -    D->CommonOrPrev = D->newCommon(*Reader.getContext()); +    D->CommonOrPrev = D->newCommon(Reader.getContext());      if (RedeclarableTemplateDecl *RTD            = ReadDeclAs<RedeclarableTemplateDecl>(Record, Idx)) {        assert(RTD->getKind() == D->getKind() && @@ -1130,7 +1130,7 @@ void ASTDeclReader::VisitClassTemplateDecl(ClassTemplateDecl *D) {        ClassTemplateDecl::Common *CommonPtr = D->getCommonPtr();        CommonPtr->LazySpecializations -        = new (*Reader.getContext()) DeclID [SpecIDs.size()]; +        = new (Reader.getContext()) DeclID [SpecIDs.size()];        memcpy(CommonPtr->LazySpecializations, SpecIDs.data(),                SpecIDs.size() * sizeof(DeclID));      } @@ -1143,7 +1143,7 @@ void ASTDeclReader::VisitClassTemplateSpecializationDecl(                                             ClassTemplateSpecializationDecl *D) {    VisitCXXRecordDecl(D); -  ASTContext &C = *Reader.getContext(); +  ASTContext &C = Reader.getContext();    if (Decl *InstD = ReadDecl(Record, Idx)) {      if (ClassTemplateDecl *CTD = dyn_cast<ClassTemplateDecl>(InstD)) {        D->SpecializedTemplate = CTD; @@ -1195,7 +1195,7 @@ void ASTDeclReader::VisitClassTemplatePartialSpecializationDecl(                                      ClassTemplatePartialSpecializationDecl *D) {    VisitClassTemplateSpecializationDecl(D); -  ASTContext &C = *Reader.getContext(); +  ASTContext &C = Reader.getContext();    D->TemplateParams = Reader.ReadTemplateParameterList(F, Record, Idx);    unsigned NumArgs = Record[Idx++]; @@ -1476,211 +1476,211 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {      assert(false && "Record cannot be de-serialized with ReadDeclRecord");      break;    case DECL_TYPEDEF: -    D = TypedefDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), +    D = TypedefDecl::Create(Context, 0, SourceLocation(), SourceLocation(),                              0, 0);      break;    case DECL_TYPEALIAS: -    D = TypeAliasDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), +    D = TypeAliasDecl::Create(Context, 0, SourceLocation(), SourceLocation(),                                0, 0);      break;    case DECL_ENUM: -    D = EnumDecl::Create(*Context, Decl::EmptyShell()); +    D = EnumDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_RECORD: -    D = RecordDecl::Create(*Context, Decl::EmptyShell()); +    D = RecordDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_ENUM_CONSTANT: -    D = EnumConstantDecl::Create(*Context, 0, SourceLocation(), 0, QualType(), +    D = EnumConstantDecl::Create(Context, 0, SourceLocation(), 0, QualType(),                                   0, llvm::APSInt());      break;    case DECL_FUNCTION: -    D = FunctionDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), +    D = FunctionDecl::Create(Context, 0, SourceLocation(), SourceLocation(),                               DeclarationName(), QualType(), 0);      break;    case DECL_LINKAGE_SPEC: -    D = LinkageSpecDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), +    D = LinkageSpecDecl::Create(Context, 0, SourceLocation(), SourceLocation(),                                  (LinkageSpecDecl::LanguageIDs)0,                                  SourceLocation());      break;    case DECL_LABEL: -    D = LabelDecl::Create(*Context, 0, SourceLocation(), 0); +    D = LabelDecl::Create(Context, 0, SourceLocation(), 0);      break;    case DECL_NAMESPACE: -    D = NamespaceDecl::Create(*Context, 0, SourceLocation(), +    D = NamespaceDecl::Create(Context, 0, SourceLocation(),                                SourceLocation(), 0);      break;    case DECL_NAMESPACE_ALIAS: -    D = NamespaceAliasDecl::Create(*Context, 0, SourceLocation(), +    D = NamespaceAliasDecl::Create(Context, 0, SourceLocation(),                                     SourceLocation(), 0,                                      NestedNameSpecifierLoc(),                                     SourceLocation(), 0);      break;    case DECL_USING: -    D = UsingDecl::Create(*Context, 0, SourceLocation(), +    D = UsingDecl::Create(Context, 0, SourceLocation(),                            NestedNameSpecifierLoc(), DeclarationNameInfo(),                             false);      break;    case DECL_USING_SHADOW: -    D = UsingShadowDecl::Create(*Context, 0, SourceLocation(), 0, 0); +    D = UsingShadowDecl::Create(Context, 0, SourceLocation(), 0, 0);      break;    case DECL_USING_DIRECTIVE: -    D = UsingDirectiveDecl::Create(*Context, 0, SourceLocation(), +    D = UsingDirectiveDecl::Create(Context, 0, SourceLocation(),                                     SourceLocation(), NestedNameSpecifierLoc(),                                     SourceLocation(), 0, 0);      break;    case DECL_UNRESOLVED_USING_VALUE: -    D = UnresolvedUsingValueDecl::Create(*Context, 0, SourceLocation(), +    D = UnresolvedUsingValueDecl::Create(Context, 0, SourceLocation(),                                           NestedNameSpecifierLoc(),                                            DeclarationNameInfo());      break;    case DECL_UNRESOLVED_USING_TYPENAME: -    D = UnresolvedUsingTypenameDecl::Create(*Context, 0, SourceLocation(), +    D = UnresolvedUsingTypenameDecl::Create(Context, 0, SourceLocation(),                                              SourceLocation(),                                               NestedNameSpecifierLoc(),                                              SourceLocation(),                                              DeclarationName());      break;    case DECL_CXX_RECORD: -    D = CXXRecordDecl::Create(*Context, Decl::EmptyShell()); +    D = CXXRecordDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CXX_METHOD: -    D = CXXMethodDecl::Create(*Context, 0, SourceLocation(), +    D = CXXMethodDecl::Create(Context, 0, SourceLocation(),                                DeclarationNameInfo(), QualType(), 0,                                false, SC_None, false, false, SourceLocation());      break;    case DECL_CXX_CONSTRUCTOR: -    D = CXXConstructorDecl::Create(*Context, Decl::EmptyShell()); +    D = CXXConstructorDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CXX_DESTRUCTOR: -    D = CXXDestructorDecl::Create(*Context, Decl::EmptyShell()); +    D = CXXDestructorDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CXX_CONVERSION: -    D = CXXConversionDecl::Create(*Context, Decl::EmptyShell()); +    D = CXXConversionDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_ACCESS_SPEC: -    D = AccessSpecDecl::Create(*Context, Decl::EmptyShell()); +    D = AccessSpecDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_FRIEND: -    D = FriendDecl::Create(*Context, Decl::EmptyShell()); +    D = FriendDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_FRIEND_TEMPLATE: -    D = FriendTemplateDecl::Create(*Context, Decl::EmptyShell()); +    D = FriendTemplateDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CLASS_TEMPLATE: -    D = ClassTemplateDecl::Create(*Context, Decl::EmptyShell()); +    D = ClassTemplateDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CLASS_TEMPLATE_SPECIALIZATION: -    D = ClassTemplateSpecializationDecl::Create(*Context, Decl::EmptyShell()); +    D = ClassTemplateSpecializationDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION: -    D = ClassTemplatePartialSpecializationDecl::Create(*Context, +    D = ClassTemplatePartialSpecializationDecl::Create(Context,                                                         Decl::EmptyShell());      break;    case DECL_CLASS_SCOPE_FUNCTION_SPECIALIZATION: -    D = ClassScopeFunctionSpecializationDecl::Create(*Context, +    D = ClassScopeFunctionSpecializationDecl::Create(Context,                                                       Decl::EmptyShell());      break;    case DECL_FUNCTION_TEMPLATE: -      D = FunctionTemplateDecl::Create(*Context, Decl::EmptyShell()); +      D = FunctionTemplateDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_TEMPLATE_TYPE_PARM: -    D = TemplateTypeParmDecl::Create(*Context, Decl::EmptyShell()); +    D = TemplateTypeParmDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_NON_TYPE_TEMPLATE_PARM: -    D = NonTypeTemplateParmDecl::Create(*Context, 0, SourceLocation(), +    D = NonTypeTemplateParmDecl::Create(Context, 0, SourceLocation(),                                          SourceLocation(), 0, 0, 0, QualType(),                                          false, 0);      break;    case DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK: -    D = NonTypeTemplateParmDecl::Create(*Context, 0, SourceLocation(), +    D = NonTypeTemplateParmDecl::Create(Context, 0, SourceLocation(),                                          SourceLocation(), 0, 0, 0, QualType(),                                          0, 0, Record[Idx++], 0);      break;    case DECL_TEMPLATE_TEMPLATE_PARM: -    D = TemplateTemplateParmDecl::Create(*Context, 0, SourceLocation(), 0, 0, +    D = TemplateTemplateParmDecl::Create(Context, 0, SourceLocation(), 0, 0,                                           false, 0, 0);      break;    case DECL_TYPE_ALIAS_TEMPLATE: -    D = TypeAliasTemplateDecl::Create(*Context, Decl::EmptyShell()); +    D = TypeAliasTemplateDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_STATIC_ASSERT: -    D = StaticAssertDecl::Create(*Context, 0, SourceLocation(), 0, 0, +    D = StaticAssertDecl::Create(Context, 0, SourceLocation(), 0, 0,                                   SourceLocation());      break;    case DECL_OBJC_METHOD: -    D = ObjCMethodDecl::Create(*Context, SourceLocation(), SourceLocation(), +    D = ObjCMethodDecl::Create(Context, SourceLocation(), SourceLocation(),                                 Selector(), QualType(), 0, 0);      break;    case DECL_OBJC_INTERFACE: -    D = ObjCInterfaceDecl::Create(*Context, 0, SourceLocation(), 0); +    D = ObjCInterfaceDecl::Create(Context, 0, SourceLocation(), 0);      break;    case DECL_OBJC_IVAR: -    D = ObjCIvarDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), +    D = ObjCIvarDecl::Create(Context, 0, SourceLocation(), SourceLocation(),                               0, QualType(), 0, ObjCIvarDecl::None);      break;    case DECL_OBJC_PROTOCOL: -    D = ObjCProtocolDecl::Create(*Context, 0, SourceLocation(), 0); +    D = ObjCProtocolDecl::Create(Context, 0, SourceLocation(), 0);      break;    case DECL_OBJC_AT_DEFS_FIELD: -    D = ObjCAtDefsFieldDecl::Create(*Context, 0, SourceLocation(), +    D = ObjCAtDefsFieldDecl::Create(Context, 0, SourceLocation(),                                      SourceLocation(), 0, QualType(), 0);      break;    case DECL_OBJC_CLASS: -    D = ObjCClassDecl::Create(*Context, 0, SourceLocation()); +    D = ObjCClassDecl::Create(Context, 0, SourceLocation());      break;    case DECL_OBJC_FORWARD_PROTOCOL: -    D = ObjCForwardProtocolDecl::Create(*Context, 0, SourceLocation()); +    D = ObjCForwardProtocolDecl::Create(Context, 0, SourceLocation());      break;    case DECL_OBJC_CATEGORY: -    D = ObjCCategoryDecl::Create(*Context, Decl::EmptyShell()); +    D = ObjCCategoryDecl::Create(Context, Decl::EmptyShell());      break;    case DECL_OBJC_CATEGORY_IMPL: -    D = ObjCCategoryImplDecl::Create(*Context, 0, SourceLocation(), 0, 0); +    D = ObjCCategoryImplDecl::Create(Context, 0, SourceLocation(), 0, 0);      break;    case DECL_OBJC_IMPLEMENTATION: -    D = ObjCImplementationDecl::Create(*Context, 0, SourceLocation(), 0, 0); +    D = ObjCImplementationDecl::Create(Context, 0, SourceLocation(), 0, 0);      break;    case DECL_OBJC_COMPATIBLE_ALIAS: -    D = ObjCCompatibleAliasDecl::Create(*Context, 0, SourceLocation(), 0, 0); +    D = ObjCCompatibleAliasDecl::Create(Context, 0, SourceLocation(), 0, 0);      break;    case DECL_OBJC_PROPERTY: -    D = ObjCPropertyDecl::Create(*Context, 0, SourceLocation(), 0, SourceLocation(), +    D = ObjCPropertyDecl::Create(Context, 0, SourceLocation(), 0, SourceLocation(),                                   0);      break;    case DECL_OBJC_PROPERTY_IMPL: -    D = ObjCPropertyImplDecl::Create(*Context, 0, SourceLocation(), +    D = ObjCPropertyImplDecl::Create(Context, 0, SourceLocation(),                                       SourceLocation(), 0,                                       ObjCPropertyImplDecl::Dynamic, 0,                                       SourceLocation());      break;    case DECL_FIELD: -    D = FieldDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), 0, +    D = FieldDecl::Create(Context, 0, SourceLocation(), SourceLocation(), 0,                            QualType(), 0, 0, false, false);      break;    case DECL_INDIRECTFIELD: -    D = IndirectFieldDecl::Create(*Context, 0, SourceLocation(), 0, QualType(), +    D = IndirectFieldDecl::Create(Context, 0, SourceLocation(), 0, QualType(),                                    0, 0);      break;    case DECL_VAR: -    D = VarDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), 0, +    D = VarDecl::Create(Context, 0, SourceLocation(), SourceLocation(), 0,                          QualType(), 0, SC_None, SC_None);      break;    case DECL_IMPLICIT_PARAM: -    D = ImplicitParamDecl::Create(*Context, 0, SourceLocation(), 0, QualType()); +    D = ImplicitParamDecl::Create(Context, 0, SourceLocation(), 0, QualType());      break;    case DECL_PARM_VAR: -    D = ParmVarDecl::Create(*Context, 0, SourceLocation(), SourceLocation(), 0, +    D = ParmVarDecl::Create(Context, 0, SourceLocation(), SourceLocation(), 0,                              QualType(), 0, SC_None, SC_None, 0);      break;    case DECL_FILE_SCOPE_ASM: -    D = FileScopeAsmDecl::Create(*Context, 0, 0, SourceLocation(), +    D = FileScopeAsmDecl::Create(Context, 0, 0, SourceLocation(),                                   SourceLocation());      break;    case DECL_BLOCK: -    D = BlockDecl::Create(*Context, 0, SourceLocation()); +    D = BlockDecl::Create(Context, 0, SourceLocation());      break;    case DECL_CXX_BASE_SPECIFIERS:      Error("attempt to read a C++ base-specifier record as a declaration"); diff --git a/clang/lib/Serialization/ASTReaderStmt.cpp b/clang/lib/Serialization/ASTReaderStmt.cpp index a402ad05a09..02a8c68028f 100644 --- a/clang/lib/Serialization/ASTReaderStmt.cpp +++ b/clang/lib/Serialization/ASTReaderStmt.cpp @@ -118,7 +118,7 @@ void ASTStmtReader::VisitCompoundStmt(CompoundStmt *S) {    unsigned NumStmts = Record[Idx++];    while (NumStmts--)      Stmts.push_back(Reader.ReadSubStmt()); -  S->setStmts(*Reader.getContext(), Stmts.data(), Stmts.size()); +  S->setStmts(Reader.getContext(), Stmts.data(), Stmts.size());    S->setLBracLoc(ReadSourceLocation(Record, Idx));    S->setRBracLoc(ReadSourceLocation(Record, Idx));  } @@ -156,7 +156,7 @@ void ASTStmtReader::VisitLabelStmt(LabelStmt *S) {  void ASTStmtReader::VisitIfStmt(IfStmt *S) {    VisitStmt(S); -  S->setConditionVariable(*Reader.getContext(),  +  S->setConditionVariable(Reader.getContext(),                             ReadDeclAs<VarDecl>(Record, Idx));    S->setCond(Reader.ReadSubExpr());    S->setThen(Reader.ReadSubStmt()); @@ -167,7 +167,7 @@ void ASTStmtReader::VisitIfStmt(IfStmt *S) {  void ASTStmtReader::VisitSwitchStmt(SwitchStmt *S) {    VisitStmt(S); -  S->setConditionVariable(*Reader.getContext(), +  S->setConditionVariable(Reader.getContext(),                            ReadDeclAs<VarDecl>(Record, Idx));    S->setCond(Reader.ReadSubExpr());    S->setBody(Reader.ReadSubStmt()); @@ -189,7 +189,7 @@ void ASTStmtReader::VisitSwitchStmt(SwitchStmt *S) {  void ASTStmtReader::VisitWhileStmt(WhileStmt *S) {    VisitStmt(S); -  S->setConditionVariable(*Reader.getContext(), +  S->setConditionVariable(Reader.getContext(),                            ReadDeclAs<VarDecl>(Record, Idx));    S->setCond(Reader.ReadSubExpr()); @@ -210,7 +210,7 @@ void ASTStmtReader::VisitForStmt(ForStmt *S) {    VisitStmt(S);    S->setInit(Reader.ReadSubStmt());    S->setCond(Reader.ReadSubExpr()); -  S->setConditionVariable(*Reader.getContext(), +  S->setConditionVariable(Reader.getContext(),                            ReadDeclAs<VarDecl>(Record, Idx));    S->setInc(Reader.ReadSubExpr());    S->setBody(Reader.ReadSubStmt()); @@ -263,7 +263,7 @@ void ASTStmtReader::VisitDeclStmt(DeclStmt *S) {      Decls.reserve(Record.size() - Idx);          for (unsigned N = Record.size(); Idx != N; )        Decls.push_back(ReadDecl(Record, Idx)); -    S->setDeclGroup(DeclGroupRef(DeclGroup::Create(*Reader.getContext(), +    S->setDeclGroup(DeclGroupRef(DeclGroup::Create(Reader.getContext(),                                                     Decls.data(),                                                     Decls.size())));    } @@ -297,7 +297,7 @@ void ASTStmtReader::VisitAsmStmt(AsmStmt *S) {    for (unsigned I = 0; I != NumClobbers; ++I)      Clobbers.push_back(cast_or_null<StringLiteral>(Reader.ReadSubStmt())); -  S->setOutputsAndInputsAndClobbers(*Reader.getContext(), +  S->setOutputsAndInputsAndClobbers(Reader.getContext(),                                      Names.data(), Constraints.data(),                                       Exprs.data(), NumOutputs, NumInputs,                                       Clobbers.data(), NumClobbers); @@ -350,12 +350,12 @@ void ASTStmtReader::VisitDeclRefExpr(DeclRefExpr *E) {  void ASTStmtReader::VisitIntegerLiteral(IntegerLiteral *E) {    VisitExpr(E);    E->setLocation(ReadSourceLocation(Record, Idx)); -  E->setValue(*Reader.getContext(), Reader.ReadAPInt(Record, Idx)); +  E->setValue(Reader.getContext(), Reader.ReadAPInt(Record, Idx));  }  void ASTStmtReader::VisitFloatingLiteral(FloatingLiteral *E) {    VisitExpr(E); -  E->setValue(*Reader.getContext(), Reader.ReadAPFloat(Record, Idx)); +  E->setValue(Reader.getContext(), Reader.ReadAPFloat(Record, Idx));    E->setExact(Record[Idx++]);    E->setLocation(ReadSourceLocation(Record, Idx));  } @@ -376,7 +376,7 @@ void ASTStmtReader::VisitStringLiteral(StringLiteral *E) {    // Read string data    llvm::SmallString<16> Str(&Record[Idx], &Record[Idx] + Len); -  E->setString(*Reader.getContext(), Str.str()); +  E->setString(Reader.getContext(), Str.str());    Idx += Len;    // Read source locations @@ -401,7 +401,7 @@ void ASTStmtReader::VisitParenExpr(ParenExpr *E) {  void ASTStmtReader::VisitParenListExpr(ParenListExpr *E) {    VisitExpr(E);    unsigned NumExprs = Record[Idx++]; -  E->Exprs = new (*Reader.getContext()) Stmt*[NumExprs]; +  E->Exprs = new (Reader.getContext()) Stmt*[NumExprs];    for (unsigned i = 0; i != NumExprs; ++i)      E->Exprs[i] = Reader.ReadSubStmt();    E->NumExprs = NumExprs; @@ -447,7 +447,7 @@ void ASTStmtReader::VisitOffsetOfExpr(OffsetOfExpr *E) {        break;      case Node::Base: { -      CXXBaseSpecifier *Base = new (*Reader.getContext()) CXXBaseSpecifier(); +      CXXBaseSpecifier *Base = new (Reader.getContext()) CXXBaseSpecifier();        *Base = Reader.ReadCXXBaseSpecifier(F, Record, Idx);        E->setComponent(I, Node(Base));        break; @@ -481,7 +481,7 @@ void ASTStmtReader::VisitArraySubscriptExpr(ArraySubscriptExpr *E) {  void ASTStmtReader::VisitCallExpr(CallExpr *E) {    VisitExpr(E); -  E->setNumArgs(*Reader.getContext(), Record[Idx++]); +  E->setNumArgs(Reader.getContext(), Record[Idx++]);    E->setRParenLoc(ReadSourceLocation(Record, Idx));    E->setCallee(Reader.ReadSubExpr());    for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I) @@ -527,7 +527,7 @@ void ASTStmtReader::VisitCastExpr(CastExpr *E) {    E->setCastKind((CastExpr::CastKind)Record[Idx++]);    CastExpr::path_iterator BaseI = E->path_begin();    while (NumBaseSpecs--) { -    CXXBaseSpecifier *BaseSpec = new (*Reader.getContext()) CXXBaseSpecifier; +    CXXBaseSpecifier *BaseSpec = new (Reader.getContext()) CXXBaseSpecifier;      *BaseSpec = Reader.ReadCXXBaseSpecifier(F, Record, Idx);      *BaseI++ = BaseSpec;    } @@ -614,15 +614,15 @@ void ASTStmtReader::VisitInitListExpr(InitListExpr *E) {      E->ArrayFillerOrUnionFieldInit = ReadDeclAs<FieldDecl>(Record, Idx);    E->sawArrayRangeDesignator(Record[Idx++]);    unsigned NumInits = Record[Idx++]; -  E->reserveInits(*Reader.getContext(), NumInits); +  E->reserveInits(Reader.getContext(), NumInits);    if (isArrayFiller) {      for (unsigned I = 0; I != NumInits; ++I) {        Expr *init = Reader.ReadSubExpr(); -      E->updateInit(*Reader.getContext(), I, init ? init : filler); +      E->updateInit(Reader.getContext(), I, init ? init : filler);      }    } else {      for (unsigned I = 0; I != NumInits; ++I) -      E->updateInit(*Reader.getContext(), I, Reader.ReadSubExpr()); +      E->updateInit(Reader.getContext(), I, Reader.ReadSubExpr());    }  } @@ -686,7 +686,7 @@ void ASTStmtReader::VisitDesignatedInitExpr(DesignatedInitExpr *E) {      }      }    } -  E->setDesignators(*Reader.getContext(),  +  E->setDesignators(Reader.getContext(),                       Designators.data(), Designators.size());  } @@ -736,7 +736,7 @@ void ASTStmtReader::VisitShuffleVectorExpr(ShuffleVectorExpr *E) {    unsigned NumExprs = Record[Idx++];    while (NumExprs--)      Exprs.push_back(Reader.ReadSubExpr()); -  E->setExprs(*Reader.getContext(), Exprs.data(), Exprs.size()); +  E->setExprs(Reader.getContext(), Exprs.data(), Exprs.size());    E->setBuiltinLoc(ReadSourceLocation(Record, Idx));    E->setRParenLoc(ReadSourceLocation(Record, Idx));  } @@ -757,9 +757,9 @@ void ASTStmtReader::VisitBlockDeclRefExpr(BlockDeclRefExpr *E) {  void ASTStmtReader::VisitGenericSelectionExpr(GenericSelectionExpr *E) {    VisitExpr(E);    E->NumAssocs = Record[Idx++]; -  E->AssocTypes = new (*Reader.getContext()) TypeSourceInfo*[E->NumAssocs]; +  E->AssocTypes = new (Reader.getContext()) TypeSourceInfo*[E->NumAssocs];    E->SubExprs = -   new(*Reader.getContext()) Stmt*[GenericSelectionExpr::END_EXPR+E->NumAssocs]; +   new(Reader.getContext()) Stmt*[GenericSelectionExpr::END_EXPR+E->NumAssocs];    E->SubExprs[GenericSelectionExpr::CONTROLLING] = Reader.ReadSubExpr();    for (unsigned I = 0, N = E->getNumAssocs(); I != N; ++I) { @@ -976,7 +976,7 @@ void ASTStmtReader::VisitCXXConstructExpr(CXXConstructExpr *E) {    VisitExpr(E);    E->NumArgs = Record[Idx++];    if (E->NumArgs) -    E->Args = new (*Reader.getContext()) Stmt*[E->NumArgs]; +    E->Args = new (Reader.getContext()) Stmt*[E->NumArgs];    for (unsigned I = 0, N = E->getNumArgs(); I != N; ++I)      E->setArg(I, Reader.ReadSubExpr());    E->setConstructor(ReadDeclAs<CXXConstructorDecl>(Record, Idx)); @@ -1100,7 +1100,7 @@ void ASTStmtReader::VisitCXXNewExpr(CXXNewExpr *E) {    E->ConstructorLParen = ReadSourceLocation(Record, Idx);    E->ConstructorRParen = ReadSourceLocation(Record, Idx); -  E->AllocateArgsArray(*Reader.getContext(), isArray, NumPlacementArgs, +  E->AllocateArgsArray(Reader.getContext(), isArray, NumPlacementArgs,                         NumCtorArgs);    // Install all the subexpressions. @@ -1142,7 +1142,7 @@ void ASTStmtReader::VisitExprWithCleanups(ExprWithCleanups *E) {    VisitExpr(E);    unsigned NumTemps = Record[Idx++];    if (NumTemps) { -    E->setNumTemporaries(*Reader.getContext(), NumTemps); +    E->setNumTemporaries(Reader.getContext(), NumTemps);      for (unsigned i = 0; i != NumTemps; ++i)        E->setTemporary(i, Reader.ReadCXXTemporary(F, Record, Idx));    } @@ -1205,7 +1205,7 @@ void ASTStmtReader::VisitOverloadExpr(OverloadExpr *E) {      AccessSpecifier AS = (AccessSpecifier)Record[Idx++];      Decls.addDecl(D, AS);    } -  E->initializeResults(*Reader.getContext(), Decls.begin(), Decls.end()); +  E->initializeResults(Reader.getContext(), Decls.begin(), Decls.end());    ReadDeclarationNameInfo(E->NameInfo, Record, Idx);    E->QualifierLoc = Reader.ReadNestedNameSpecifierLoc(F, Record, Idx); @@ -1539,7 +1539,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {      case EXPR_DECL_REF:        S = DeclRefExpr::CreateEmpty( -        *Context, +        Context,          /*HasQualifier=*/Record[ASTStmtReader::NumExprFields],          /*HasFoundDecl=*/Record[ASTStmtReader::NumExprFields + 1],          /*HasExplicitTemplateArgs=*/Record[ASTStmtReader::NumExprFields + 2], @@ -1548,11 +1548,11 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_INTEGER_LITERAL: -      S = IntegerLiteral::Create(*Context, Empty); +      S = IntegerLiteral::Create(Context, Empty);        break;      case EXPR_FLOATING_LITERAL: -      S = FloatingLiteral::Create(*Context, Empty); +      S = FloatingLiteral::Create(Context, Empty);        break;      case EXPR_IMAGINARY_LITERAL: @@ -1560,7 +1560,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_STRING_LITERAL: -      S = StringLiteral::CreateEmpty(*Context, +      S = StringLiteral::CreateEmpty(Context,                                       Record[ASTStmtReader::NumExprFields + 1]);        break; @@ -1581,7 +1581,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_OFFSETOF: -      S = OffsetOfExpr::CreateEmpty(*Context,  +      S = OffsetOfExpr::CreateEmpty(Context,                                       Record[ASTStmtReader::NumExprFields],                                      Record[ASTStmtReader::NumExprFields + 1]);        break; @@ -1595,7 +1595,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CALL: -      S = new (Context) CallExpr(*Context, Stmt::CallExprClass, Empty); +      S = new (Context) CallExpr(Context, Stmt::CallExprClass, Empty);        break;      case EXPR_MEMBER: { @@ -1632,7 +1632,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        DeclarationNameInfo MemberNameInfo(MemberD->getDeclName(), MemberLoc);        bool IsArrow = Record[Idx++]; -      S = MemberExpr::Create(*Context, Base, IsArrow, QualifierLoc, +      S = MemberExpr::Create(Context, Base, IsArrow, QualifierLoc,                               MemberD, FoundDecl, MemberNameInfo,                               HasExplicitTemplateArgs ? &ArgInfo : 0, T, VK, OK);        ReadDeclarationNameLoc(F, cast<MemberExpr>(S)->MemberDNLoc, @@ -1657,12 +1657,12 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_IMPLICIT_CAST: -      S = ImplicitCastExpr::CreateEmpty(*Context, +      S = ImplicitCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_CSTYLE_CAST: -      S = CStyleCastExpr::CreateEmpty(*Context, +      S = CStyleCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break; @@ -1675,11 +1675,11 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_INIT_LIST: -      S = new (Context) InitListExpr(*getContext(), Empty); +      S = new (Context) InitListExpr(getContext(), Empty);        break;      case EXPR_DESIGNATED_INIT: -      S = DesignatedInitExpr::CreateEmpty(*Context, +      S = DesignatedInitExpr::CreateEmpty(Context,                                       Record[ASTStmtReader::NumExprFields] - 1);        break; @@ -1746,7 +1746,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        llvm_unreachable("mismatching AST file");        break;      case EXPR_OBJC_MESSAGE_EXPR: -      S = ObjCMessageExpr::CreateEmpty(*Context, +      S = ObjCMessageExpr::CreateEmpty(Context,                                       Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_OBJC_ISA: @@ -1768,7 +1768,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        S = new (Context) ObjCAtFinallyStmt(Empty);        break;      case STMT_OBJC_AT_TRY: -      S = ObjCAtTryStmt::CreateEmpty(*Context,  +      S = ObjCAtTryStmt::CreateEmpty(Context,                                        Record[ASTStmtReader::NumStmtFields],                                       Record[ASTStmtReader::NumStmtFields + 1]);        break; @@ -1795,7 +1795,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case STMT_CXX_TRY: -      S = CXXTryStmt::Create(*Context, Empty, +      S = CXXTryStmt::Create(Context, Empty,               /*NumHandlers=*/Record[ASTStmtReader::NumStmtFields]);        break; @@ -1804,11 +1804,11 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_OPERATOR_CALL: -      S = new (Context) CXXOperatorCallExpr(*Context, Empty); +      S = new (Context) CXXOperatorCallExpr(Context, Empty);        break;      case EXPR_CXX_MEMBER_CALL: -      S = new (Context) CXXMemberCallExpr(*Context, Empty); +      S = new (Context) CXXMemberCallExpr(Context, Empty);        break;      case EXPR_CXX_CONSTRUCT: @@ -1820,26 +1820,26 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_STATIC_CAST: -      S = CXXStaticCastExpr::CreateEmpty(*Context, +      S = CXXStaticCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_CXX_DYNAMIC_CAST: -      S = CXXDynamicCastExpr::CreateEmpty(*Context, +      S = CXXDynamicCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_CXX_REINTERPRET_CAST: -      S = CXXReinterpretCastExpr::CreateEmpty(*Context, +      S = CXXReinterpretCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_CXX_CONST_CAST: -      S = CXXConstCastExpr::CreateEmpty(*Context); +      S = CXXConstCastExpr::CreateEmpty(Context);        break;      case EXPR_CXX_FUNCTIONAL_CAST: -      S = CXXFunctionalCastExpr::CreateEmpty(*Context, +      S = CXXFunctionalCastExpr::CreateEmpty(Context,                         /*PathSize*/ Record[ASTStmtReader::NumExprFields]);        break; @@ -1872,7 +1872,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        bool HasOtherExprStored = Record[ASTStmtReader::NumExprFields];        if (HasOtherExprStored) {          Expr *SubExpr = ReadSubExpr(); -        S = CXXDefaultArgExpr::Create(*Context, SourceLocation(), 0, SubExpr); +        S = CXXDefaultArgExpr::Create(Context, SourceLocation(), 0, SubExpr);        } else          S = new (Context) CXXDefaultArgExpr(Empty);        break; @@ -1899,7 +1899,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_DEPENDENT_SCOPE_MEMBER: -      S = CXXDependentScopeMemberExpr::CreateEmpty(*Context, +      S = CXXDependentScopeMemberExpr::CreateEmpty(Context,            /*HasExplicitTemplateArgs=*/Record[ASTStmtReader::NumExprFields],                    /*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields]                                     ? Record[ASTStmtReader::NumExprFields + 1]  @@ -1907,7 +1907,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_DEPENDENT_SCOPE_DECL_REF: -      S = DependentScopeDeclRefExpr::CreateEmpty(*Context, +      S = DependentScopeDeclRefExpr::CreateEmpty(Context,            /*HasExplicitTemplateArgs=*/Record[ASTStmtReader::NumExprFields],                    /*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields]                                     ? Record[ASTStmtReader::NumExprFields + 1]  @@ -1915,12 +1915,12 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_UNRESOLVED_CONSTRUCT: -      S = CXXUnresolvedConstructExpr::CreateEmpty(*Context, +      S = CXXUnresolvedConstructExpr::CreateEmpty(Context,                                /*NumArgs=*/Record[ASTStmtReader::NumExprFields]);        break;      case EXPR_CXX_UNRESOLVED_MEMBER: -      S = UnresolvedMemberExpr::CreateEmpty(*Context, +      S = UnresolvedMemberExpr::CreateEmpty(Context,            /*HasExplicitTemplateArgs=*/Record[ASTStmtReader::NumExprFields],                    /*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields]                                     ? Record[ASTStmtReader::NumExprFields + 1]  @@ -1928,7 +1928,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {        break;      case EXPR_CXX_UNRESOLVED_LOOKUP: -      S = UnresolvedLookupExpr::CreateEmpty(*Context, +      S = UnresolvedLookupExpr::CreateEmpty(Context,            /*HasExplicitTemplateArgs=*/Record[ASTStmtReader::NumExprFields],                    /*NumTemplateArgs=*/Record[ASTStmtReader::NumExprFields]                                     ? Record[ASTStmtReader::NumExprFields + 1]  @@ -1991,7 +1991,7 @@ Stmt *ASTReader::ReadStmtFromStream(Module &F) {      }      case EXPR_CUDA_KERNEL_CALL: -      S = new (Context) CUDAKernelCallExpr(*Context, Empty); +      S = new (Context) CUDAKernelCallExpr(Context, Empty);        break;      case EXPR_ASTYPE:  | 

