Author: Chuanqi Xu
Date: 2024-08-12T11:25:05+08:00
New Revision: 4399f2a5ef38df381c2b65052621131890194d59

URL: 
https://github.com/llvm/llvm-project/commit/4399f2a5ef38df381c2b65052621131890194d59
DIFF: 
https://github.com/llvm/llvm-project/commit/4399f2a5ef38df381c2b65052621131890194d59.diff

LOG: [NFC] [C++20] [Modules] Adjust the implementation of wasDeclEmitted to 
make it more clear

The preivous implementation of wasDeclEmitted may be confusing that
why we need to filter the declaration not from modules. Now adjust the
implementations to avoid the problems.

Added: 
    

Modified: 
    clang/lib/Serialization/ASTWriter.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Serialization/ASTWriter.cpp 
b/clang/lib/Serialization/ASTWriter.cpp
index b5d487465541b8..87ceee172c66f1 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -5704,6 +5704,12 @@ void ASTWriter::WriteDeclAndTypes(ASTContext &Context) {
     if (D->isFromASTFile())
       continue;
 
+    // Skip writing implicit declarations not owning by the current module.
+    // See the implementation of PrepareWritingSpecialDecls for example.
+    if (isWritingStdCXXNamedModules() && !D->getOwningModule() &&
+        D->isImplicit())
+      continue;
+
     // In reduced BMI, skip unreached declarations.
     if (!wasDeclEmitted(D))
       continue;
@@ -6282,8 +6288,7 @@ bool ASTWriter::wasDeclEmitted(const Decl *D) const {
     return true;
 
   bool Emitted = DeclIDs.contains(D);
-  assert((Emitted || (!D->getOwningModule() && isWritingStdCXXNamedModules()) 
||
-          GeneratingReducedBMI) &&
+  assert((Emitted || GeneratingReducedBMI) &&
          "The declaration within modules can only be omitted in reduced BMI.");
   return Emitted;
 }


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to