[llvm-branch-commits] [clang] [Serialization] Load Specialization Lazily (2/2) (PR #77417)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Jan 8 23:07:00 PST 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 50fd47f2bfda527807f8cc5e46425050246868aa 538f9098a49cec659793ba0c679a8e70b6af867c -- clang/include/clang/Serialization/ASTBitCodes.h clang/include/clang/Serialization/ASTReader.h clang/include/clang/Serialization/ASTWriter.h clang/lib/Serialization/ASTCommon.h clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTReaderDecl.cpp clang/lib/Serialization/ASTWriter.cpp clang/lib/Serialization/ASTWriterDecl.cpp clang/test/Modules/cxx-templates.cpp clang/unittests/Serialization/LoadSpecLazily.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h
index ecd4932c16..10726b440d 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -654,7 +654,8 @@ private:
 
   bool ReadSpecializations(ModuleFile &M, llvm::BitstreamCursor &Cursor,
                            uint64_t Offset, Decl *D);
-  void AddSpecializations(const Decl *D, const unsigned char *Data, ModuleFile &M);
+  void AddSpecializations(const Decl *D, const unsigned char *Data,
+                          ModuleFile &M);
 
   /// A vector containing identifiers that have already been
   /// loaded.
diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h
index 9f689b1865..0d39f8ace8 100644
--- a/clang/include/clang/Serialization/ASTWriter.h
+++ b/clang/include/clang/Serialization/ASTWriter.h
@@ -385,7 +385,8 @@ private:
   /// record containing modifications to them.
   DeclUpdateMap DeclUpdates;
 
-  using SpecializationUpdateMap = llvm::MapVector<const NamedDecl *, SmallVector<const NamedDecl *>>;
+  using SpecializationUpdateMap =
+      llvm::MapVector<const NamedDecl *, SmallVector<const NamedDecl *>>;
   SpecializationUpdateMap SpecializationsUpdates;
 
   using FirstLatestDeclMap = llvm::DenseMap<Decl *, Decl *>;
@@ -530,9 +531,9 @@ private:
   bool isLookupResultExternal(StoredDeclsList &Result, DeclContext *DC);
   bool isLookupResultEntirelyExternal(StoredDeclsList &Result, DeclContext *DC);
 
-  void GenerateSpecializationsLookupTable(const NamedDecl *D,
-                                llvm::SmallVectorImpl<const NamedDecl *> &Specs,
-                                llvm::SmallVectorImpl<char> &LookupTable);
+  void GenerateSpecializationsLookupTable(
+      const NamedDecl *D, llvm::SmallVectorImpl<const NamedDecl *> &Specs,
+      llvm::SmallVectorImpl<char> &LookupTable);
   uint64_t WriteSpecializationsLookupTable(
       const NamedDecl *D,
       llvm::SmallVectorImpl<const NamedDecl *> &Specializations);
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 54ce94a1a5..5583fce2e4 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -1344,10 +1344,11 @@ bool ASTReader::ReadVisibleDeclContextStorage(ModuleFile &M,
   return false;
 }
 
-void ASTReader::AddSpecializations(const Decl *D, const unsigned char *Data, ModuleFile &M) {
+void ASTReader::AddSpecializations(const Decl *D, const unsigned char *Data,
+                                   ModuleFile &M) {
   D = D->getCanonicalDecl();
-  SpecializationsLookups[D].Table.add(&M, Data,
-                                      reader::SpecializationsLookupTrait(*this, M));
+  SpecializationsLookups[D].Table.add(
+      &M, Data, reader::SpecializationsLookupTrait(*this, M));
 }
 
 bool ASTReader::ReadSpecializations(ModuleFile &M, BitstreamCursor &Cursor,
@@ -3487,8 +3488,9 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
     case UPDATE_SPECIALIZATION: {
       unsigned Idx = 0;
       serialization::DeclID ID = ReadDeclID(F, Record, Idx);
-      auto *Data = (const unsigned char*)Blob.data();
-      PendingSpecializationsUpdates[ID].push_back(PendingVisibleUpdate{&F, Data});
+      auto *Data = (const unsigned char *)Blob.data();
+      PendingSpecializationsUpdates[ID].push_back(
+          PendingVisibleUpdate{&F, Data});
       // If we've already loaded the decl, perform the updates when we finish
       // loading this block.
       if (Decl *D = GetExistingDecl(ID))
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp
index 68c1536b19..cbc21be234 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -321,8 +321,9 @@ namespace clang {
     void ReadFunctionDefinition(FunctionDecl *FD);
     void Visit(Decl *D);
 
-    void UpdateDecl(Decl *D,
-                    SmallVectorImpl<serialization::DeclID> &UpdatedPartialSpecializations);
+    void UpdateDecl(
+        Decl *D,
+        SmallVectorImpl<serialization::DeclID> &UpdatedPartialSpecializations);
 
     static void setNextObjCCategory(ObjCCategoryDecl *Cat,
                                     ObjCCategoryDecl *Next) {
@@ -4234,8 +4235,7 @@ void ASTReader::loadDeclUpdateRecords(PendingUpdateRecord &Record) {
 
       ASTDeclReader Reader(*this, Record, RecordLocation(F, Offset), ID,
                            SourceLocation());
-      Reader.UpdateDecl(D,
-                        PendingLazyPartialSpecializationIDs);
+      Reader.UpdateDecl(D, PendingLazyPartialSpecializationIDs);
 
       // We might have made this declaration interesting. If so, remember that
       // we need to hand it off to the consumer.
@@ -4252,9 +4252,11 @@ void ASTReader::loadDeclUpdateRecords(PendingUpdateRecord &Record) {
           isa<ClassTemplateDecl, VarTemplateDecl>(D)) &&
          "Must not have pending specializations");
   if (auto *CTD = dyn_cast<ClassTemplateDecl>(D))
-    ASTDeclReader::AddLazySpecializations(CTD, PendingLazyPartialSpecializationIDs);
+    ASTDeclReader::AddLazySpecializations(CTD,
+                                          PendingLazyPartialSpecializationIDs);
   else if (auto *VTD = dyn_cast<VarTemplateDecl>(D))
-    ASTDeclReader::AddLazySpecializations(VTD, PendingLazyPartialSpecializationIDs);
+    ASTDeclReader::AddLazySpecializations(VTD,
+                                          PendingLazyPartialSpecializationIDs);
   PendingLazyPartialSpecializationIDs.clear();
 
   // Load the pending visible updates for this decl context, if it has any.
@@ -4272,7 +4274,8 @@ void ASTReader::loadDeclUpdateRecords(PendingUpdateRecord &Record) {
   }
 
   // Load the pending specializations update for this decl, if it has any.
-  if (auto I = PendingSpecializationsUpdates.find(ID); I != PendingSpecializationsUpdates.end()) {
+  if (auto I = PendingSpecializationsUpdates.find(ID);
+      I != PendingSpecializationsUpdates.end()) {
     auto SpecializationUpdates = std::move(I->second);
     PendingSpecializationsUpdates.erase(I);
 
@@ -4473,7 +4476,8 @@ static void forAllLaterRedecls(DeclT *D, Fn F) {
 }
 
 void ASTDeclReader::UpdateDecl(Decl *D,
-   llvm::SmallVectorImpl<serialization::DeclID> &PendingLazyPartialSpecializationIDs) {
+                               llvm::SmallVectorImpl<serialization::DeclID>
+                                   &PendingLazyPartialSpecializationIDs) {
   while (Record.getIdx() < Record.size()) {
     switch ((DeclUpdateKind)Record.readInt()) {
     case UPD_CXX_ADDED_IMPLICIT_MEMBER: {
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index e334745574..733dab8dfb 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -4023,9 +4023,10 @@ unsigned CalculateODRHashForSpecs(const Decl *Spec) {
 }
 } // namespace
 
-void ASTWriter::GenerateSpecializationsLookupTable(const NamedDecl *D, 
-      llvm::SmallVectorImpl<const NamedDecl *> &Specializations,
-      llvm::SmallVectorImpl<char> &LookupTable) {
+void ASTWriter::GenerateSpecializationsLookupTable(
+    const NamedDecl *D,
+    llvm::SmallVectorImpl<const NamedDecl *> &Specializations,
+    llvm::SmallVectorImpl<char> &LookupTable) {
   assert(D->isFirstDecl());
 
   // Create the on-disk hash table representation.
@@ -4059,8 +4060,9 @@ void ASTWriter::GenerateSpecializationsLookupTable(const NamedDecl *D,
 }
 
 uint64_t ASTWriter::WriteSpecializationsLookupTable(
-    const NamedDecl *D, llvm::SmallVectorImpl<const NamedDecl *> &Specializations) {
-  
+    const NamedDecl *D,
+    llvm::SmallVectorImpl<const NamedDecl *> &Specializations) {
+
   llvm::SmallString<4096> LookupTable;
   GenerateSpecializationsLookupTable(D, Specializations, LookupTable);
 
@@ -5411,7 +5413,8 @@ void ASTWriter::WriteSpecializationsUpdates() {
     const NamedDecl *D = SpecializationUpdate.first;
 
     llvm::SmallString<4096> LookupTable;
-    GenerateSpecializationsLookupTable(D, SpecializationUpdate.second, LookupTable);
+    GenerateSpecializationsLookupTable(D, SpecializationUpdate.second,
+                                       LookupTable);
 
     // Write the lookup table
     RecordData::value_type Record[] = {UPDATE_SPECIALIZATION, getDeclID(D)};
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp
index 9a1f3a0df6..9be609700a 100644
--- a/clang/lib/Serialization/ASTWriterDecl.cpp
+++ b/clang/lib/Serialization/ASTWriterDecl.cpp
@@ -271,11 +271,13 @@ namespace clang {
       if (Writer.getFirstLocalDecl(Specialization) != Specialization)
         return;
 
-      if (isa<ClassTemplatePartialSpecializationDecl, VarTemplatePartialSpecializationDecl>(Specialization))
+      if (isa<ClassTemplatePartialSpecializationDecl,
+              VarTemplatePartialSpecializationDecl>(Specialization))
         Writer.DeclUpdates[Template].push_back(ASTWriter::DeclUpdate(
-          UPD_CXX_ADDED_TEMPLATE_PARTIAL_SPECIALIZATION, Specialization));
+            UPD_CXX_ADDED_TEMPLATE_PARTIAL_SPECIALIZATION, Specialization));
       else
-        Writer.SpecializationsUpdates[cast<NamedDecl>(Template)].push_back(cast<NamedDecl>(Specialization));
+        Writer.SpecializationsUpdates[cast<NamedDecl>(Template)].push_back(
+            cast<NamedDecl>(Specialization));
     }
   };
 }

``````````

</details>


https://github.com/llvm/llvm-project/pull/77417


More information about the llvm-branch-commits mailing list