diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-10-24 22:05:27 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-10-24 22:05:27 +0000 |
commit | 4b9d964925d3b8c798185c8f66c22d3f11e40537 (patch) | |
tree | 0a71d0a2e9d1a0f07e7938154730b597629d7c67 /clang/lib/CodeGen/CGCXX.cpp | |
parent | 987fe22789e460f397aa44eb38133019eaddc3df (diff) | |
download | bcm5719-llvm-4b9d964925d3b8c798185c8f66c22d3f11e40537.tar.gz bcm5719-llvm-4b9d964925d3b8c798185c8f66c22d3f11e40537.zip |
CodeGen: Don't form weak dllexport aliases
The MS linker cannot do anything interesting with these, it doesn't make
sense to emit them.
This fixes PR21373.
Differential Revision: http://reviews.llvm.org/D5986
llvm-svn: 220595
Diffstat (limited to 'clang/lib/CodeGen/CGCXX.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGCXX.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGCXX.cpp b/clang/lib/CodeGen/CGCXX.cpp index 93e17601cc6..a590afae0b3 100644 --- a/clang/lib/CodeGen/CGCXX.cpp +++ b/clang/lib/CodeGen/CGCXX.cpp @@ -119,6 +119,11 @@ bool CodeGenModule::TryEmitDefinitionAsAlias(GlobalDecl AliasDecl, if (!llvm::GlobalAlias::isValidLinkage(Linkage)) return true; + // Don't create a weak alias for a dllexport'd symbol. + if (AliasDecl.getDecl()->hasAttr<DLLExportAttr>() && + llvm::GlobalValue::isWeakForLinker(Linkage)) + return true; + llvm::GlobalValue::LinkageTypes TargetLinkage = getFunctionLinkage(TargetDecl); |