Index: llvm/include/llvm/Object/IRObjectFile.h =================================================================== --- llvm/include/llvm/Object/IRObjectFile.h +++ llvm/include/llvm/Object/IRObjectFile.h @@ -53,6 +53,8 @@ } std::unique_ptr takeModule(); + StringRef getTargetTriple() const; + static inline bool classof(const Binary *v) { return v->isIR(); } Index: llvm/lib/Object/IRObjectFile.cpp =================================================================== --- llvm/lib/Object/IRObjectFile.cpp +++ llvm/lib/Object/IRObjectFile.cpp @@ -79,6 +79,8 @@ return basic_symbol_iterator(BasicSymbolRef(Ret, this)); } +StringRef IRObjectFile::getTargetTriple() const { return M->getTargetTriple(); } + ErrorOr IRObjectFile::findBitcodeInObject(const ObjectFile &Obj) { for (const SectionRef &Sec : Obj.sections()) { if (Sec.isBitcode()) { Index: llvm/tools/llvm-nm/llvm-nm.cpp =================================================================== --- llvm/tools/llvm-nm/llvm-nm.cpp +++ llvm/tools/llvm-nm/llvm-nm.cpp @@ -267,10 +267,9 @@ static char isSymbolList64Bit(SymbolicFile &Obj) { if (isa(Obj)) { IRObjectFile *IRobj = dyn_cast(&Obj); - Module &M = IRobj->getModule(); - if (M.getTargetTriple().empty()) + if (IRobj->getTargetTriple().empty()) return false; - Triple T(M.getTargetTriple()); + Triple T(IRobj->getTargetTriple()); return T.isArch64Bit(); } if (isa(Obj))