diff options
author | David Majnemer <david.majnemer@gmail.com> | 2013-08-09 08:35:59 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2013-08-09 08:35:59 +0000 |
commit | cf963cece85290bdafed4f0d607ab8d899510711 (patch) | |
tree | 4dcdd89183953f05d9d27e912d566caba21f51a9 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 375e18e32c01899086632f1a5b019e714a80daa0 (diff) | |
download | bcm5719-llvm-cf963cece85290bdafed4f0d607ab8d899510711.tar.gz bcm5719-llvm-cf963cece85290bdafed4f0d607ab8d899510711.zip |
[-cxx-abi microsoft] Mangle UUIDs correctly, stick them in the proper section
Revert r188055 which reverted r188053. An unrelated change previously snuck in.
llvm-svn: 188060
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r-- | clang/lib/CodeGen/CodeGenModule.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index dbdf016b31b..35c18b4c5eb 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -1059,7 +1059,8 @@ llvm::Constant *CodeGenModule::GetAddrOfUuidDescriptor( else Uuid = "00000000-0000-0000-0000-000000000000"; } - std::string Name = "__uuid_" + Uuid.str(); + std::string Name = "_GUID_" + Uuid.lower(); + std::replace(Name.begin(), Name.end(), '-', '_'); // Look for an existing global. if (llvm::GlobalVariable *GV = getModule().getNamedGlobal(Name)) @@ -1082,7 +1083,7 @@ llvm::Constant *CodeGenModule::GetAddrOfUuidDescriptor( } llvm::GlobalVariable *GV = new llvm::GlobalVariable(getModule(), GuidType, - /*isConstant=*/true, llvm::GlobalValue::PrivateLinkage, Init, Name); + /*isConstant=*/true, llvm::GlobalValue::ExternalLinkage, Init, Name); GV->setUnnamedAddr(true); return GV; } |