aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2015-01-20 05:58:07 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2015-01-20 05:58:07 +0000
commit3087b22e1ae7bf00ec922a4bb9a950b27d85dd72 (patch)
treec91c2b96a09b0ae05e09635fd086a0de4058aaec /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parentaa687a3d4cdc2c964fd70df7925d9a8a2e6d55fc (diff)
downloadllvm-3087b22e1ae7bf00ec922a4bb9a950b27d85dd72.zip
llvm-3087b22e1ae7bf00ec922a4bb9a950b27d85dd72.tar.gz
llvm-3087b22e1ae7bf00ec922a4bb9a950b27d85dd72.tar.bz2
Bitcode: Don't create comdats when autoupgrading macho bitcode
Don't infer COMDAT groups from older bitcode if the target is macho, it doesn't have COMDATs. llvm-svn: 226546
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index f8625e1..9e27225 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -11,6 +11,7 @@
#include "BitcodeReader.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/ADT/Triple.h"
#include "llvm/Bitcode/LLVMBitCodes.h"
#include "llvm/IR/AutoUpgrade.h"
#include "llvm/IR/Constants.h"
@@ -1106,6 +1107,8 @@ std::error_code BitcodeReader::ParseValueSymbolTable() {
SmallVector<uint64_t, 64> Record;
+ Triple TT(TheModule->getTargetTriple());
+
// Read all the records for this value table.
SmallString<128> ValueName;
while (1) {
@@ -1137,8 +1140,12 @@ std::error_code BitcodeReader::ParseValueSymbolTable() {
V->setName(StringRef(ValueName.data(), ValueName.size()));
if (auto *GO = dyn_cast<GlobalObject>(V)) {
- if (GO->getComdat() == reinterpret_cast<Comdat *>(1))
- GO->setComdat(TheModule->getOrInsertComdat(V->getName()));
+ if (GO->getComdat() == reinterpret_cast<Comdat *>(1)) {
+ if (TT.isOSBinFormatMachO())
+ GO->setComdat(nullptr);
+ else
+ GO->setComdat(TheModule->getOrInsertComdat(V->getName()));
+ }
}
ValueName.clear();
break;