Skip to content

Commit 39cfde2

Browse files
committed
Revert "[C++20] [Modules] Handle initializer for Header Units"
This reverts commit db6152a. This commit fails in ppc64. Since we want to backport it to 15.x. So revert it now to keep the patch complete.
1 parent 29f852a commit 39cfde2

File tree

3 files changed

+8
-41
lines changed

3 files changed

+8
-41
lines changed

clang/lib/CodeGen/CGDeclCXX.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -650,8 +650,8 @@ void CodeGenModule::EmitCXXModuleInitFunc(Module *Primary) {
650650

651651
SmallVector<llvm::Function *, 8> ModuleInits;
652652
for (Module *M : AllImports) {
653-
// No Itanium initializer in header like modules.
654-
if (M->isHeaderLikeModule())
653+
// No Itanium initializer in module map modules.
654+
if (M->isModuleMapModule())
655655
continue; // TODO: warn of mixed use of module map modules and C++20?
656656
llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
657657
SmallString<256> FnName;
@@ -779,8 +779,8 @@ CodeGenModule::EmitCXXGlobalInitFunc() {
779779
SmallVector<llvm::Function *, 8> ModuleInits;
780780
if (CXX20ModuleInits)
781781
for (Module *M : ImportedModules) {
782-
// No Itanium initializer in header like modules.
783-
if (M->isHeaderLikeModule())
782+
// No Itanium initializer in module map modules.
783+
if (M->isModuleMapModule())
784784
continue;
785785
llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
786786
SmallString<256> FnName;

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -521,7 +521,7 @@ static void setVisibilityFromDLLStorageClass(const clang::LangOptions &LO,
521521

522522
void CodeGenModule::Release() {
523523
Module *Primary = getContext().getModuleForCodeGen();
524-
if (CXX20ModuleInits && Primary && !Primary->isHeaderLikeModule())
524+
if (CXX20ModuleInits && Primary && !Primary->isModuleMapModule())
525525
EmitModuleInitializers(Primary);
526526
EmitDeferred();
527527
DeferredDecls.insert(EmittedDeferredDecls.begin(),
@@ -2521,23 +2521,21 @@ void CodeGenModule::EmitModuleInitializers(clang::Module *Primary) {
25212521
// source, first Global Module Fragments, if present.
25222522
if (auto GMF = Primary->getGlobalModuleFragment()) {
25232523
for (Decl *D : getContext().getModuleInitializers(GMF)) {
2524-
if (isa<ImportDecl>(D))
2525-
continue;
2526-
assert(isa<VarDecl>(D) && "GMF initializer decl is not a var?");
2524+
assert(D->getKind() == Decl::Var && "GMF initializer decl is not a var?");
25272525
EmitTopLevelDecl(D);
25282526
}
25292527
}
25302528
// Second any associated with the module, itself.
25312529
for (Decl *D : getContext().getModuleInitializers(Primary)) {
25322530
// Skip import decls, the inits for those are called explicitly.
2533-
if (isa<ImportDecl>(D))
2531+
if (D->getKind() == Decl::Import)
25342532
continue;
25352533
EmitTopLevelDecl(D);
25362534
}
25372535
// Third any associated with the Privat eMOdule Fragment, if present.
25382536
if (auto PMF = Primary->getPrivateModuleFragment()) {
25392537
for (Decl *D : getContext().getModuleInitializers(PMF)) {
2540-
assert(isa<VarDecl>(D) && "PMF initializer decl is not a var?");
2538+
assert(D->getKind() == Decl::Var && "PMF initializer decl is not a var?");
25412539
EmitTopLevelDecl(D);
25422540
}
25432541
}

clang/test/CodeGenCXX/module-initializer-header.cppm

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)