================ @@ -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