зеркало из https://github.com/microsoft/clang.git
In ASTReader, replace the never-NULL ASTContext pointer with an
ASTContext reference. Remove all of the extra checking and logic that was used to cope with a NULL ASTContext. No effective functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139413 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
6274d30d77
Коммит
3594277947
|
@ -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.
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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:
|
||||
|
|
Загрузка…
Ссылка в новой задаче