forked from OSchip/llvm-project
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
This commit is contained in:
parent
740d59ec49
commit
3072fc885e
|
@ -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");
|
||||
|
|
|
@ -82,8 +82,8 @@ int __declspec(dllexport) nonInlineStaticLocalsFunc() {
|
|||
return x++;
|
||||
};
|
||||
|
||||
// MSC-DAG: @"\01?x@?1??inlineStaticLocalsFunc@@YAHXZ@4HA" = weak_odr dllexport global i32 0
|
||||
// MSC-DAG: @"\01??_B?1??inlineStaticLocalsFunc@@YAHXZ@51" = weak_odr dllexport global i32 0
|
||||
// MSC-DAG: @"\01?x@?1??inlineStaticLocalsFunc@@YAHXZ@4HA" = weak_odr dllexport global i32 0, comdat
|
||||
// MSC-DAG: @"\01??_B?1??inlineStaticLocalsFunc@@YAHXZ@51" = weak_odr dllexport global i32 0, comdat
|
||||
// Note: MinGW doesn't seem to export the static local here.
|
||||
inline int __declspec(dllexport) inlineStaticLocalsFunc() {
|
||||
static int x = f();
|
||||
|
|
Loading…
Reference in New Issue