diff options
author | Bruno Ricci <riccibrun@gmail.com> | 2019-01-09 15:43:19 +0000 |
---|---|---|
committer | Bruno Ricci <riccibrun@gmail.com> | 2019-01-09 15:43:19 +0000 |
commit | d7628d99935b18aaf013f96e7b2a5c5f80d1b738 (patch) | |
tree | 50756b42102402d5fb26248a186f0808012083b7 /clang/lib/Serialization/ASTWriterStmt.cpp | |
parent | 59e916c214da69a130fe1f594b60f2a6b9ce37b8 (diff) | |
download | bcm5719-llvm-d7628d99935b18aaf013f96e7b2a5c5f80d1b738.tar.gz bcm5719-llvm-d7628d99935b18aaf013f96e7b2a5c5f80d1b738.zip |
[AST] Store the results in OverloadExpr in a trailing array
Use the newly available space in the bit-fields of Stmt to pack
OverloadExpr, UnresolvedLookupExpr and UnresolvedMemberExpr.
Additionally store the results in the overload set in a trailing array.
This saves 1 pointer + 8 bytes per UnresolvedLookupExpr and
UnresolvedMemberExpr.
Differential Revision: https://reviews.llvm.org/D56368
Reviewed By: rjmccall
llvm-svn: 350732
Diffstat (limited to 'clang/lib/Serialization/ASTWriterStmt.cpp')
-rw-r--r-- | clang/lib/Serialization/ASTWriterStmt.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/clang/lib/Serialization/ASTWriterStmt.cpp b/clang/lib/Serialization/ASTWriterStmt.cpp index b1908f79912..6f8b86edcdf 100644 --- a/clang/lib/Serialization/ASTWriterStmt.cpp +++ b/clang/lib/Serialization/ASTWriterStmt.cpp @@ -1625,25 +1625,23 @@ ASTStmtWriter::VisitCXXUnresolvedConstructExpr(CXXUnresolvedConstructExpr *E) { void ASTStmtWriter::VisitOverloadExpr(OverloadExpr *E) { VisitExpr(E); - // Don't emit anything here, HasTemplateKWAndArgsInfo must be - // emitted first. - - Record.push_back(E->HasTemplateKWAndArgsInfo); - if (E->HasTemplateKWAndArgsInfo) { + Record.push_back(E->getNumDecls()); + Record.push_back(E->hasTemplateKWAndArgsInfo()); + if (E->hasTemplateKWAndArgsInfo()) { const ASTTemplateKWAndArgsInfo &ArgInfo = *E->getTrailingASTTemplateKWAndArgsInfo(); Record.push_back(ArgInfo.NumTemplateArgs); AddTemplateKWAndArgsInfo(ArgInfo, E->getTrailingTemplateArgumentLoc()); } - Record.push_back(E->getNumDecls()); - for (OverloadExpr::decls_iterator - OvI = E->decls_begin(), OvE = E->decls_end(); OvI != OvE; ++OvI) { + for (OverloadExpr::decls_iterator OvI = E->decls_begin(), + OvE = E->decls_end(); + OvI != OvE; ++OvI) { Record.AddDeclRef(OvI.getDecl()); Record.push_back(OvI.getAccess()); } - Record.AddDeclarationNameInfo(E->NameInfo); + Record.AddDeclarationNameInfo(E->getNameInfo()); Record.AddNestedNameSpecifierLoc(E->getQualifierLoc()); } |