diff --git a/include/llvm/Object/ArchiveWriter.h b/include/llvm/Object/ArchiveWriter.h index 1ed758d40df..71b45293b2b 100644 --- a/include/llvm/Object/ArchiveWriter.h +++ b/include/llvm/Object/ArchiveWriter.h @@ -37,7 +37,7 @@ struct NewArchiveMember { bool Deterministic); }; -std::pair +std::error_code writeArchive(StringRef ArcName, std::vector &NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr OldArchiveBuf = nullptr); diff --git a/lib/Object/ArchiveWriter.cpp b/lib/Object/ArchiveWriter.cpp index b052c76d1fe..91aa3739229 100644 --- a/lib/Object/ArchiveWriter.cpp +++ b/lib/Object/ArchiveWriter.cpp @@ -376,9 +376,8 @@ writeSymbolTable(raw_fd_ostream &Out, object::Archive::Kind Kind, return BodyStartOffset + 4; } -std::pair -llvm::writeArchive(StringRef ArcName, - std::vector &NewMembers, +std::error_code +llvm::writeArchive(StringRef ArcName, std::vector &NewMembers, bool WriteSymtab, object::Archive::Kind Kind, bool Deterministic, bool Thin, std::unique_ptr OldArchiveBuf) { @@ -387,7 +386,7 @@ llvm::writeArchive(StringRef ArcName, int TmpArchiveFD; if (auto EC = sys::fs::createUniqueFile(ArcName + ".temp-archive-%%%%%%%.a", TmpArchiveFD, TmpArchive)) - return std::make_pair(ArcName, EC); + return EC; tool_output_file Output(TmpArchive, TmpArchiveFD); raw_fd_ostream &Out = Output.os(); @@ -403,7 +402,7 @@ llvm::writeArchive(StringRef ArcName, ErrorOr MemberReferenceOffsetOrErr = writeSymbolTable( Out, Kind, NewMembers, MemberOffsetRefs, Deterministic); if (auto EC = MemberReferenceOffsetOrErr.getError()) - return std::make_pair(ArcName, EC); + return EC; MemberReferenceOffset = MemberReferenceOffsetOrErr.get(); } @@ -465,5 +464,5 @@ llvm::writeArchive(StringRef ArcName, OldArchiveBuf.reset(); sys::fs::rename(TmpArchive, ArcName); - return std::make_pair("", std::error_code()); + return std::error_code(); } diff --git a/lib/Object/COFFImportFile.cpp b/lib/Object/COFFImportFile.cpp index 8383edf45af..5f4b8908837 100644 --- a/lib/Object/COFFImportFile.cpp +++ b/lib/Object/COFFImportFile.cpp @@ -604,11 +604,9 @@ std::error_code writeImportLibrary(StringRef ImportName, StringRef Path, OF.createShortImport(*Name, E.Ordinal, ImportType, NameType)); } - std::pair Result = - writeArchive(Path, Members, /*WriteSymtab*/ true, object::Archive::K_GNU, - /*Deterministic*/ true, /*Thin*/ false); - - return Result.second; + return writeArchive(Path, Members, /*WriteSymtab*/ true, + object::Archive::K_GNU, + /*Deterministic*/ true, /*Thin*/ false); } } // namespace object diff --git a/lib/ToolDrivers/llvm-lib/LibDriver.cpp b/lib/ToolDrivers/llvm-lib/LibDriver.cpp index afda6a1388c..912a09316d6 100644 --- a/lib/ToolDrivers/llvm-lib/LibDriver.cpp +++ b/lib/ToolDrivers/llvm-lib/LibDriver.cpp @@ -153,15 +153,14 @@ int llvm::libDriverMain(llvm::ArrayRef ArgsArr) { Members.emplace_back(std::move(*MOrErr)); } - std::pair Result = - llvm::writeArchive(getOutputPath(&Args, Members[0]), Members, + std::string OutputPath = getOutputPath(&Args, Members[0]); + std::error_code EC = + llvm::writeArchive(OutputPath, Members, /*WriteSymtab=*/true, object::Archive::K_GNU, /*Deterministic*/ true, Args.hasArg(OPT_llvmlibthin)); - if (Result.second) { - if (Result.first.empty()) - Result.first = ArgsArr[0]; - llvm::errs() << Result.first << ": " << Result.second.message() << "\n"; + if (EC) { + llvm::errs() << OutputPath << ": " << EC.message() << "\n"; return 1; } diff --git a/tools/llvm-ar/llvm-ar.cpp b/tools/llvm-ar/llvm-ar.cpp index af4d3efa52f..4fe12efb7ec 100644 --- a/tools/llvm-ar/llvm-ar.cpp +++ b/tools/llvm-ar/llvm-ar.cpp @@ -688,10 +688,10 @@ performWriteOperation(ArchiveOperation Operation, break; } - std::pair Result = + std::error_code EC = writeArchive(ArchiveName, NewMembersP ? *NewMembersP : NewMembers, Symtab, Kind, Deterministic, Thin, std::move(OldArchiveBuf)); - failIfError(Result.second, Result.first); + failIfError(EC, ArchiveName); } static void createSymbolTable(object::Archive *OldArchive) {