diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2015-01-20 05:58:07 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2015-01-20 05:58:07 +0000 |
| commit | 3087b22e1ae7bf00ec922a4bb9a950b27d85dd72 (patch) | |
| tree | c91c2b96a09b0ae05e09635fd086a0de4058aaec /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
| parent | aa687a3d4cdc2c964fd70df7925d9a8a2e6d55fc (diff) | |
| download | llvm-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.cpp | 11 |
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; |
