summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-06-04 21:09:46 +0000
committerHans Wennborg <hans@hanshq.net>2014-06-04 21:09:46 +0000
commit910640b5d8939a728980afaae7defbb91f304070 (patch)
treed53e928dbab54c30ca6431a472fadb60d727a98f /clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
parenta1b620051f5cee208b421859cd036258c7441cee (diff)
downloadbcm5719-llvm-910640b5d8939a728980afaae7defbb91f304070.tar.gz
bcm5719-llvm-910640b5d8939a728980afaae7defbb91f304070.zip
Don't dynamically initialize dllimport vars (PR19933)
They should be initialized when they're exported. Differential Revision: http://reviews.llvm.org/D4020 llvm-svn: 210217
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplateInstantiateDecl.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 5635bea63d9..2fa28a33a10 100644
--- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp
@@ -3671,6 +3671,12 @@ void Sema::InstantiateVariableInitializer(
// We already have an initializer in the class.
return;
+ if (Var->hasAttr<DLLImportAttr>() &&
+ !(OldVar->getInit() && OldVar->checkInitIsICE())) {
+ // Do not dynamically initialize dllimport variables.
+ return;
+ }
+
if (OldVar->getInit()) {
if (Var->isStaticDataMember() && !OldVar->isOutOfLine())
PushExpressionEvaluationContext(Sema::ConstantEvaluated, OldVar);
OpenPOWER on IntegriCloud