summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/MicrosoftCXXABI.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-01-21 01:04:30 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-01-21 01:04:30 +0000
commit3072fc885e01e203a0f01f145c26e43d359d0728 (patch)
tree631bb8fbafa4179e0dc32ab6cd0a4e5a14ac717f /clang/lib/CodeGen/MicrosoftCXXABI.cpp
parent740d59ec499b757c4426ea33e17fdc9ee707098d (diff)
downloadbcm5719-llvm-3072fc885e01e203a0f01f145c26e43d359d0728.tar.gz
bcm5719-llvm-3072fc885e01e203a0f01f145c26e43d359d0728.zip
MS ABI: Let guard variables be present in COMDATs
A guard variable in a COMDAT'd function should also be in a COMDAT. llvm-svn: 226629
Diffstat (limited to 'clang/lib/CodeGen/MicrosoftCXXABI.cpp')
-rw-r--r--clang/lib/CodeGen/MicrosoftCXXABI.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/MicrosoftCXXABI.cpp b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
index 12029bc13b1..71d6e7800d7 100644
--- a/clang/lib/CodeGen/MicrosoftCXXABI.cpp
+++ b/clang/lib/CodeGen/MicrosoftCXXABI.cpp
@@ -1923,6 +1923,9 @@ void MicrosoftCXXABI::EmitGuardedInit(CodeGenFunction &CGF, const VarDecl &D,
GV->getLinkage(), Zero, GuardName.str());
GI->Guard->setVisibility(GV->getVisibility());
GI->Guard->setDLLStorageClass(GV->getDLLStorageClass());
+ if (GI->Guard->isWeakForLinker())
+ GI->Guard->setComdat(
+ CGM.getModule().getOrInsertComdat(GI->Guard->getName()));
} else {
assert(GI->Guard->getLinkage() == GV->getLinkage() &&
"static local from the same function had different linkage");
OpenPOWER on IntegriCloud