summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGDeclCXX.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-06-21 03:40:16 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-06-21 03:40:16 +0000
commit68bf7d8c2acf596dac906cf1247812a059c01b0e (patch)
tree5e8fa230b48bbb52c341e515fd21cc1561822bef /clang/lib/CodeGen/CGDeclCXX.cpp
parent7039ae9d25cfcac5b88c05642f75c3ead0bf471f (diff)
downloadbcm5719-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.cpp4
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)
OpenPOWER on IntegriCloud