diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-06-21 03:40:16 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-21 03:40:16 +0000 |
commit | 68bf7d8c2acf596dac906cf1247812a059c01b0e (patch) | |
tree | 5e8fa230b48bbb52c341e515fd21cc1561822bef /clang/lib/CodeGen/CGDeclCXX.cpp | |
parent | 7039ae9d25cfcac5b88c05642f75c3ead0bf471f (diff) | |
download | bcm5719-llvm-68bf7d8c2acf596dac906cf1247812a059c01b0e.tar.gz bcm5719-llvm-68bf7d8c2acf596dac906cf1247812a059c01b0e.zip |
[CodeGen] Do not run initializers for imported variables
The export side is responsible for running any initializers, they are
run when the module is first loaded. Attempting to run an initializer
for the import side is not possible.
This fixes PR28216.
llvm-svn: 273237
Diffstat (limited to 'clang/lib/CodeGen/CGDeclCXX.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGDeclCXX.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGDeclCXX.cpp b/clang/lib/CodeGen/CGDeclCXX.cpp index 89d142e44b4..8f8ffe66b6a 100644 --- a/clang/lib/CodeGen/CGDeclCXX.cpp +++ b/clang/lib/CodeGen/CGDeclCXX.cpp @@ -323,6 +323,10 @@ CodeGenModule::EmitCXXGlobalVarDeclInitFunc(const VarDecl *D, D->hasAttr<CUDASharedAttr>())) return; + // DLL imported variables will be initialized by the export side. + if (D->hasAttr<DLLImportAttr>()) + return; + // Check if we've already initialized this decl. auto I = DelayedCXXInitPosition.find(D); if (I != DelayedCXXInitPosition.end() && I->second == ~0U) |