summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CGCXX.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-10-24 22:05:27 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-10-24 22:05:27 +0000
commit4b9d964925d3b8c798185c8f66c22d3f11e40537 (patch)
tree0a71d0a2e9d1a0f07e7938154730b597629d7c67 /clang/lib/CodeGen/CGCXX.cpp
parent987fe22789e460f397aa44eb38133019eaddc3df (diff)
downloadbcm5719-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.cpp5
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);
OpenPOWER on IntegriCloud