Author: Chuanqi Xu Date: 2023-09-29T21:49:10+08:00 New Revision: 7e8a0e4bdc84f975772cd6d38a78c285bdd8b6cf
URL: https://github.com/llvm/llvm-project/commit/7e8a0e4bdc84f975772cd6d38a78c285bdd8b6cf DIFF: https://github.com/llvm/llvm-project/commit/7e8a0e4bdc84f975772cd6d38a78c285bdd8b6cf.diff LOG: [NFC] [C++20] [Modules] Rename NamedModuleHasInit to NamedModuleHasInit Address comments in https://github.com/llvm/llvm-project/pull/67638/files#r1340342453 to rename the field variable. Added: Modified: clang/include/clang/Basic/Module.h clang/lib/Basic/Module.cpp clang/lib/CodeGen/CGDeclCXX.cpp clang/lib/Sema/Sema.cpp clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTWriter.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/Module.h b/clang/include/clang/Basic/Module.h index cd86927d214fc85..676fd372493a3aa 100644 --- a/clang/include/clang/Basic/Module.h +++ b/clang/include/clang/Basic/Module.h @@ -360,7 +360,7 @@ class alignas(8) Module { /// Whether this C++20 named modules doesn't need an initializer. /// This is only meaningful for C++20 modules. - unsigned NamedModuleHasNoInit : 1; + unsigned NamedModuleHasInit : 1; /// Describes the visibility of the various names within a /// particular module. @@ -600,7 +600,7 @@ class alignas(8) Module { return Kind == ModuleInterfaceUnit || Kind == ModulePartitionInterface; } - bool isNamedModuleInterfaceHasNoInit() const { return NamedModuleHasNoInit; } + bool isNamedModuleInterfaceHasInit() const { return NamedModuleHasInit; } /// Get the primary module interface name from a partition. StringRef getPrimaryModuleInterfaceName() const { diff --git a/clang/lib/Basic/Module.cpp b/clang/lib/Basic/Module.cpp index 23683eae955bd62..0455304ef7f2b1a 100644 --- a/clang/lib/Basic/Module.cpp +++ b/clang/lib/Basic/Module.cpp @@ -44,7 +44,7 @@ Module::Module(StringRef Name, SourceLocation DefinitionLoc, Module *Parent, InferSubmodules(false), InferExplicitSubmodules(false), InferExportWildcard(false), ConfigMacrosExhaustive(false), NoUndeclaredIncludes(false), ModuleMapIsPrivate(false), - NamedModuleHasNoInit(false), NameVisibility(Hidden) { + NamedModuleHasInit(true), NameVisibility(Hidden) { if (Parent) { IsAvailable = Parent->isAvailable(); IsUnimportable = Parent->isUnimportable(); diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index 18d4ed4f5290300..c576128e8eb6c62 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -677,7 +677,7 @@ void CodeGenModule::EmitCXXModuleInitFunc(Module *Primary) { continue; // TODO: warn of mixed use of module map modules and C++20? // We're allowed to skip the initialization if we are sure it doesn't // do any thing. - if (M->isNamedModuleInterfaceHasNoInit()) + if (!M->isNamedModuleInterfaceHasInit()) continue; llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false); SmallString<256> FnName; diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index ad85a9264d57d31..4489cb0deae4c84 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -1250,20 +1250,21 @@ void Sema::ActOnEndOfTranslationUnit() { CurrentModule && CurrentModule->isInterfaceOrPartition()) { auto DoesModNeedInit = [this](Module *M) { if (!getASTContext().getModuleInitializers(M).empty()) - return false; + return true; for (auto [Exported, _] : M->Exports) - if (!Exported->isNamedModuleInterfaceHasNoInit()) - return false; + if (Exported->isNamedModuleInterfaceHasInit()) + return true; for (Module *I : M->Imports) - if (!I->isNamedModuleInterfaceHasNoInit()) - return false; + if (I->isNamedModuleInterfaceHasInit()) + return true; - return true; + return false; }; - CurrentModule->NamedModuleHasNoInit = DoesModNeedInit(CurrentModule); - for (Module *SubModules : CurrentModule->submodules()) - CurrentModule->NamedModuleHasNoInit &= DoesModNeedInit(SubModules); + CurrentModule->NamedModuleHasInit = + DoesModNeedInit(CurrentModule) || + llvm::any_of(CurrentModule->submodules(), + [&](auto *SubM) { return DoesModNeedInit(SubM); }); } // Warnings emitted in ActOnEndOfTranslationUnit() should be emitted for diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index 4ff145bb1e252c1..c2937402eac393c 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -5685,7 +5685,7 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F, bool InferExportWildcard = Record[Idx++]; bool ConfigMacrosExhaustive = Record[Idx++]; bool ModuleMapIsPrivate = Record[Idx++]; - bool NamedModuleHasNoInit = Record[Idx++]; + bool NamedModuleHasInit = Record[Idx++]; Module *ParentModule = nullptr; if (Parent) @@ -5736,7 +5736,7 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F, CurrentModule->InferExportWildcard = InferExportWildcard; CurrentModule->ConfigMacrosExhaustive = ConfigMacrosExhaustive; CurrentModule->ModuleMapIsPrivate = ModuleMapIsPrivate; - CurrentModule->NamedModuleHasNoInit = NamedModuleHasNoInit; + CurrentModule->NamedModuleHasInit = NamedModuleHasInit; if (DeserializationListener) DeserializationListener->ModuleRead(GlobalID, CurrentModule); diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index e6f6bb921f16a9e..201e2fcaaec91aa 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -2890,7 +2890,7 @@ void ASTWriter::WriteSubmodules(Module *WritingModule) { Mod->InferExportWildcard, Mod->ConfigMacrosExhaustive, Mod->ModuleMapIsPrivate, - Mod->NamedModuleHasNoInit}; + Mod->NamedModuleHasInit}; Stream.EmitRecordWithBlob(DefinitionAbbrev, Record, Mod->Name); } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits