|
@@ -265,7 +265,8 @@ void ASTDeclWriter::Visit(Decl *D) {
|
|
|
// abbreviation infrastructure requires that arrays are encoded last, so
|
|
|
// we handle it here in the case of those classes derived from DeclaratorDecl
|
|
|
if (DeclaratorDecl *DD = dyn_cast<DeclaratorDecl>(D)) {
|
|
|
- Record.AddTypeSourceInfo(DD->getTypeSourceInfo());
|
|
|
+ if (auto *TInfo = DD->getTypeSourceInfo())
|
|
|
+ Record.AddTypeLoc(TInfo->getTypeLoc());
|
|
|
}
|
|
|
|
|
|
// Handle FunctionDecl's body here and write it after all other Stmts/Exprs
|
|
@@ -513,6 +514,9 @@ void ASTDeclWriter::VisitDeclaratorDecl(DeclaratorDecl *D) {
|
|
|
Record.push_back(D->hasExtInfo());
|
|
|
if (D->hasExtInfo())
|
|
|
Record.AddQualifierInfo(*D->getExtInfo());
|
|
|
+ // The location information is deferred until the end of the record.
|
|
|
+ Record.AddTypeRef(D->getTypeSourceInfo() ? D->getTypeSourceInfo()->getType()
|
|
|
+ : QualType());
|
|
|
}
|
|
|
|
|
|
void ASTDeclWriter::VisitFunctionDecl(FunctionDecl *D) {
|
|
@@ -1773,11 +1777,11 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
// DeclaratorDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
|
|
+ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TSIType
|
|
|
// FieldDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // isMutable
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // InitStyle
|
|
|
// Type Source Info
|
|
|
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TypeLoc
|
|
|
DeclFieldAbbrev = Stream.EmitAbbrev(std::move(Abv));
|
|
@@ -1806,6 +1810,7 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
// DeclaratorDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
|
|
+ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TSIType
|
|
|
// FieldDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // isMutable
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // InitStyle
|
|
@@ -1813,7 +1818,6 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // getAccessControl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // getSynthesize
|
|
|
// Type Source Info
|
|
|
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TypeLoc
|
|
|
DeclObjCIvarAbbrev = Stream.EmitAbbrev(std::move(Abv));
|
|
@@ -1949,6 +1953,7 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
// DeclaratorDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
|
|
+ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TSIType
|
|
|
// VarDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // SClass
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // TSCSpec
|
|
@@ -1965,7 +1970,6 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // HasInheritedDefaultArg
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // HasUninstantiatedDefaultArg
|
|
|
// Type Source Info
|
|
|
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TypeLoc
|
|
|
DeclParmVarAbbrev = Stream.EmitAbbrev(std::move(Abv));
|
|
@@ -2025,6 +2029,7 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
// DeclaratorDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerStartLoc
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // hasExtInfo
|
|
|
+ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TSIType
|
|
|
// VarDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // SClass
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // TSCSpec
|
|
@@ -2045,7 +2050,6 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // IsInitICE (local)
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // VarKind (local enum)
|
|
|
// Type Source Info
|
|
|
- Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Array));
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TypeLoc
|
|
|
DeclVarAbbrev = Stream.EmitAbbrev(std::move(Abv));
|
|
@@ -2076,6 +2080,7 @@ void ASTWriter::WriteDeclAbbrevs() {
|
|
|
// DeclaratorDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // InnerLocStart
|
|
|
Abv->Add(BitCodeAbbrevOp(0)); // HasExtInfo
|
|
|
+ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // TSIType
|
|
|
// FunctionDecl
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 11)); // IDNS
|
|
|
Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // StorageClass
|