diff options
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
-rw-r--r-- | clang/lib/CodeGen/ModuleBuilder.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp index c4a0e5c063d..c5d18d3286a 100644 --- a/clang/lib/CodeGen/ModuleBuilder.cpp +++ b/clang/lib/CodeGen/ModuleBuilder.cpp @@ -128,6 +128,19 @@ namespace { return; Builder->UpdateCompletedType(D); + + // For MSVC compatibility, treat declarations of static data members with + // inline initializers as definitions. + if (Ctx->getLangOpts().MSVCCompat) { + for (Decl *Member : D->decls()) { + if (VarDecl *VD = dyn_cast<VarDecl>(Member)) { + if (Ctx->isMSStaticDataMemberInlineDefinition(VD) && + Ctx->DeclMustBeEmitted(VD)) { + Builder->EmitGlobal(VD); + } + } + } + } } void HandleTagDeclRequiredDefinition(const TagDecl *D) override { |