summaryrefslogtreecommitdiffstats
path: root/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
commit7546b5a26229417222909d8c4c6e12d50c27e985 (patch)
treed0754231f862cd6429248a84a6a71980abea4e1d /lib/Sema/SemaTemplateInstantiateDecl.cpp
parente88163d87fc058590b6f0af25a2b5f2057723945 (diff)
Don't dynamically initialize dllimport vars (PR19933)
They should be initialized when they're exported. Differential Revision: http://reviews.llvm.org/D4020 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@210217 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r--lib/Sema/SemaTemplateInstantiateDecl.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp
index 5635bea63d..2fa28a33a1 100644
--- a/lib/Sema/SemaTemplateInstantiateDecl.cpp
+++ b/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);