================
@@ -1483,10 +1483,15 @@ void ASTDeclWriter::VisitCXXRecordDecl(CXXRecordDecl 
*D) {
   if (D->isThisDeclarationADefinition())
     Record.AddCXXDefinitionData(D);
 
-  // Store (what we currently believe to be) the key function to avoid
-  // deserializing every method so we can compute it.
-  if (D->isCompleteDefinition())
-    Record.AddDeclRef(Context.getCurrentKeyFunction(D));
+  if (D->isCompleteDefinition()) {
+    if (D->getOwningModule() && D->getOwningModule()->isInterfaceOrPartition())
+      Writer.ModularCodegenDecls.push_back(Writer.GetDeclRef(D));
+    else {
+      // Store (what we currently believe to be) the key function to avoid
----------------
ChuanqiXu9 wrote:

```suggestion
if (D->isCompleteDefinition() && D->getOwningModule() &&
    D->getOwningModule()->isInterfaceOrPartition())
  Writer.ModularCodegenDecls.push_back(Writer.GetDeclRef(D));

  // Store (what we currently believe to be) the key function to avoid
  // deserializing every method so we can compute it.
  if (D->isCompleteDefinition())
    Record.AddDeclRef(Context.getCurrentKeyFunction(D));
```

Do you mean such changes? I feel it is somewhat overkill since it looks pretty 
straight forward due to the code is pretty near and the patch itself is about 
we don't need more key functions in modules.

https://github.com/llvm/llvm-project/pull/75912
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to