diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-01-21 01:04:30 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-01-21 01:04:30 +0000 |
commit | 3072fc885e01e203a0f01f145c26e43d359d0728 (patch) | |
tree | 631bb8fbafa4179e0dc32ab6cd0a4e5a14ac717f /clang/lib/CodeGen/MicrosoftCXXABI.cpp | |
parent | 740d59ec499b757c4426ea33e17fdc9ee707098d (diff) | |
download | bcm5719-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.cpp | 3 |
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"); |