diff options
author | Hans Wennborg <hans@hanshq.net> | 2014-06-04 21:09:46 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2014-06-04 21:09:46 +0000 |
commit | 910640b5d8939a728980afaae7defbb91f304070 (patch) | |
tree | d53e928dbab54c30ca6431a472fadb60d727a98f /clang/lib/Sema/SemaTemplateInstantiateDecl.cpp | |
parent | a1b620051f5cee208b421859cd036258c7441cee (diff) | |
download | bcm5719-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.cpp | 6 |
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); |