Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 11 additions & 13 deletions clang/lib/Serialization/ASTReaderDecl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -666,22 +666,21 @@ void ASTDeclReader::VisitPragmaCommentDecl(PragmaCommentDecl *D) {
D->setLocation(readSourceLocation());
D->CommentKind = (PragmaMSCommentKind)Record.readInt();
std::string Arg = readString();
memcpy(D->getTrailingObjects<char>(), Arg.data(), Arg.size());
D->getTrailingObjects<char>()[Arg.size()] = '\0';
memcpy(D->getTrailingObjects(), Arg.data(), Arg.size());
D->getTrailingObjects()[Arg.size()] = '\0';
}

void ASTDeclReader::VisitPragmaDetectMismatchDecl(PragmaDetectMismatchDecl *D) {
VisitDecl(D);
D->setLocation(readSourceLocation());
std::string Name = readString();
memcpy(D->getTrailingObjects<char>(), Name.data(), Name.size());
D->getTrailingObjects<char>()[Name.size()] = '\0';
memcpy(D->getTrailingObjects(), Name.data(), Name.size());
D->getTrailingObjects()[Name.size()] = '\0';

D->ValueStart = Name.size() + 1;
std::string Value = readString();
memcpy(D->getTrailingObjects<char>() + D->ValueStart, Value.data(),
Value.size());
D->getTrailingObjects<char>()[D->ValueStart + Value.size()] = '\0';
memcpy(D->getTrailingObjects() + D->ValueStart, Value.data(), Value.size());
D->getTrailingObjects()[D->ValueStart + Value.size()] = '\0';
}

void ASTDeclReader::VisitTranslationUnitDecl(TranslationUnitDecl *TU) {
Expand Down Expand Up @@ -1748,7 +1747,7 @@ void ASTDeclReader::VisitParmVarDecl(ParmVarDecl *PD) {

void ASTDeclReader::VisitDecompositionDecl(DecompositionDecl *DD) {
VisitVarDecl(DD);
auto **BDs = DD->getTrailingObjects<BindingDecl *>();
auto **BDs = DD->getTrailingObjects();
for (unsigned I = 0; I != DD->NumBindings; ++I) {
BDs[I] = readDeclAs<BindingDecl>();
BDs[I]->setDecomposedDecl(DD);
Expand Down Expand Up @@ -1923,7 +1922,7 @@ void ASTDeclReader::VisitUsingEnumDecl(UsingEnumDecl *D) {
void ASTDeclReader::VisitUsingPackDecl(UsingPackDecl *D) {
VisitNamedDecl(D);
D->InstantiatedFrom = readDeclAs<NamedDecl>();
auto **Expansions = D->getTrailingObjects<NamedDecl *>();
auto **Expansions = D->getTrailingObjects();
for (unsigned I = 0; I != D->NumExpansions; ++I)
Expansions[I] = readDeclAs<NamedDecl>();
mergeMergeable(D);
Expand Down Expand Up @@ -2364,7 +2363,7 @@ void ASTDeclReader::VisitImportDecl(ImportDecl *D) {
VisitDecl(D);
D->ImportedModule = readModule();
D->setImportComplete(Record.readInt());
auto *StoredLocs = D->getTrailingObjects<SourceLocation>();
auto *StoredLocs = D->getTrailingObjects();
for (unsigned I = 0, N = Record.back(); I != N; ++I)
StoredLocs[I] = readSourceLocation();
Record.skipInts(1); // The number of stored source locations.
Expand All @@ -2382,8 +2381,7 @@ void ASTDeclReader::VisitFriendDecl(FriendDecl *D) {
else
D->Friend = readTypeSourceInfo();
for (unsigned i = 0; i != D->NumTPLists; ++i)
D->getTrailingObjects<TemplateParameterList *>()[i] =
Record.readTemplateParameterList();
D->getTrailingObjects()[i] = Record.readTemplateParameterList();
D->NextFriend = readDeclID().getRawValue();
D->UnsupportedFriend = (Record.readInt() != 0);
D->FriendLoc = readSourceLocation();
Expand Down Expand Up @@ -2751,7 +2749,7 @@ void ASTDeclReader::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) {
D->setDepth(Record.readInt());
D->setPosition(Record.readInt());
if (D->isExpandedParameterPack()) {
auto **Data = D->getTrailingObjects<TemplateParameterList *>();
auto **Data = D->getTrailingObjects();
for (unsigned I = 0, N = D->getNumExpansionTemplateParameters();
I != N; ++I)
Data[I] = Record.readTemplateParameterList();
Expand Down
19 changes: 9 additions & 10 deletions clang/lib/Serialization/ASTReaderStmt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -719,7 +719,7 @@ void ASTStmtReader::VisitParenListExpr(ParenListExpr *E) {
unsigned NumExprs = Record.readInt();
assert((NumExprs == E->getNumExprs()) && "Wrong NumExprs!");
for (unsigned I = 0; I != NumExprs; ++I)
E->getTrailingObjects<Stmt *>()[I] = Record.readSubStmt();
E->getTrailingObjects()[I] = Record.readSubStmt();
E->LParenLoc = readSourceLocation();
E->RParenLoc = readSourceLocation();
}
Expand Down Expand Up @@ -1892,7 +1892,7 @@ void ASTStmtReader::VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) {
E->CXXDefaultArgExprBits.Loc = readSourceLocation();
E->CXXDefaultArgExprBits.HasRewrittenInit = Record.readInt();
if (E->CXXDefaultArgExprBits.HasRewrittenInit)
*E->getTrailingObjects<Expr *>() = Record.readSubExpr();
*E->getTrailingObjects() = Record.readSubExpr();
}

void ASTStmtReader::VisitCXXDefaultInitExpr(CXXDefaultInitExpr *E) {
Expand All @@ -1902,7 +1902,7 @@ void ASTStmtReader::VisitCXXDefaultInitExpr(CXXDefaultInitExpr *E) {
E->UsedContext = readDeclAs<DeclContext>();
E->CXXDefaultInitExprBits.Loc = readSourceLocation();
if (E->CXXDefaultInitExprBits.HasRewrittenInit)
*E->getTrailingObjects<Expr *>() = Record.readSubExpr();
*E->getTrailingObjects() = Record.readSubExpr();
}

void ASTStmtReader::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *E) {
Expand Down Expand Up @@ -1999,7 +1999,7 @@ void ASTStmtReader::VisitExprWithCleanups(ExprWithCleanups *E) {
Obj = cast<CompoundLiteralExpr>(Record.readSubExpr());
else
llvm_unreachable("unexpected cleanup object type");
E->getTrailingObjects<ExprWithCleanups::CleanupObject>()[i] = Obj;
E->getTrailingObjects()[i] = Obj;
}

E->ExprWithCleanupsBits.CleanupsHaveSideEffects = Record.readInt();
Expand Down Expand Up @@ -2198,9 +2198,8 @@ void ASTStmtReader::VisitSizeOfPackExpr(SizeOfPackExpr *E) {
E->Pack = Record.readDeclAs<NamedDecl>();
if (E->isPartiallySubstituted()) {
assert(E->Length == NumPartialArgs);
for (auto *I = E->getTrailingObjects<TemplateArgument>(),
*E = I + NumPartialArgs;
I != E; ++I)
for (auto *I = E->getTrailingObjects(), *E = I + NumPartialArgs; I != E;
++I)
new (I) TemplateArgument(Record.readTemplateArgument());
} else if (!E->isValueDependent()) {
E->Length = Record.readInt();
Expand All @@ -2215,7 +2214,7 @@ void ASTStmtReader::VisitPackIndexingExpr(PackIndexingExpr *E) {
E->RSquareLoc = readSourceLocation();
E->SubExprs[0] = Record.readStmt();
E->SubExprs[1] = Record.readStmt();
auto **Exprs = E->getTrailingObjects<Expr *>();
auto **Exprs = E->getTrailingObjects();
for (unsigned I = 0; I < E->PackIndexingExprBits.TransformedExpressions; ++I)
Exprs[I] = Record.readExpr();
}
Expand Down Expand Up @@ -2252,7 +2251,7 @@ void ASTStmtReader::VisitFunctionParmPackExpr(FunctionParmPackExpr *E) {
E->NumParameters = Record.readInt();
E->ParamPack = readDeclAs<ValueDecl>();
E->NameLoc = readSourceLocation();
auto **Parms = E->getTrailingObjects<ValueDecl *>();
auto **Parms = E->getTrailingObjects();
for (unsigned i = 0, n = E->NumParameters; i != n; ++i)
Parms[i] = readDeclAs<ValueDecl>();
}
Expand Down Expand Up @@ -2289,7 +2288,7 @@ void ASTStmtReader::VisitCXXParenListInitExpr(CXXParenListInitExpr *E) {
E->LParenLoc = readSourceLocation();
E->RParenLoc = readSourceLocation();
for (unsigned I = 0; I < ExpectedNumExprs; I++)
E->getTrailingObjects<Expr *>()[I] = Record.readSubExpr();
E->getTrailingObjects()[I] = Record.readSubExpr();

bool HasArrayFillerOrUnionDecl = Record.readBool();
if (HasArrayFillerOrUnionDecl) {
Expand Down
Loading