diff options
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/dsymutil/BinaryHolder.cpp | 8 | ||||
-rw-r--r-- | llvm/tools/llvm-ar/llvm-ar.cpp | 68 | ||||
-rw-r--r-- | llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp | 14 | ||||
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 74 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/MachODump.cpp | 48 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 8 | ||||
-rw-r--r-- | llvm/tools/llvm-readobj/llvm-readobj.cpp | 19 | ||||
-rw-r--r-- | llvm/tools/llvm-size/llvm-size.cpp | 54 | ||||
-rw-r--r-- | llvm/tools/sancov/sancov.cc | 17 |
9 files changed, 150 insertions, 160 deletions
diff --git a/llvm/tools/dsymutil/BinaryHolder.cpp b/llvm/tools/dsymutil/BinaryHolder.cpp index e45f7fefe08..5b92bba1193 100644 --- a/llvm/tools/dsymutil/BinaryHolder.cpp +++ b/llvm/tools/dsymutil/BinaryHolder.cpp @@ -102,8 +102,10 @@ BinaryHolder::GetArchiveMemberBuffers(StringRef Filename, Buffers.reserve(CurrentArchives.size()); for (const auto &CurrentArchive : CurrentArchives) { - Error Err; - for (auto Child : CurrentArchive->children(Err)) { + for (auto ChildOrErr : CurrentArchive->children()) { + if (std::error_code Err = ChildOrErr.getError()) + return Err; + const auto &Child = *ChildOrErr; if (auto NameOrErr = Child.getName()) { if (*NameOrErr == Filename) { if (Timestamp != sys::TimeValue::PosixZeroTime() && @@ -121,8 +123,6 @@ BinaryHolder::GetArchiveMemberBuffers(StringRef Filename, } } } - if (Err) - return errorToErrorCode(std::move(Err)); } if (Buffers.empty()) diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp index 865152b6af8..d52355216b0 100644 --- a/llvm/tools/llvm-ar/llvm-ar.cpp +++ b/llvm/tools/llvm-ar/llvm-ar.cpp @@ -405,37 +405,35 @@ static void performReadOperation(ArchiveOperation Operation, fail("extracting from a thin archive is not supported"); bool Filter = !Members.empty(); - { - Error Err; - for (auto &C : OldArchive->children(Err)) { - ErrorOr<StringRef> NameOrErr = C.getName(); - failIfError(NameOrErr.getError()); - StringRef Name = NameOrErr.get(); - - if (Filter) { - auto I = std::find(Members.begin(), Members.end(), Name); - if (I == Members.end()) - continue; - Members.erase(I); - } + for (auto &ChildOrErr : OldArchive->children()) { + failIfError(ChildOrErr.getError()); + const object::Archive::Child &C = *ChildOrErr; + + ErrorOr<StringRef> NameOrErr = C.getName(); + failIfError(NameOrErr.getError()); + StringRef Name = NameOrErr.get(); + + if (Filter) { + auto I = std::find(Members.begin(), Members.end(), Name); + if (I == Members.end()) + continue; + Members.erase(I); + } - switch (Operation) { - default: - llvm_unreachable("Not a read operation"); - case Print: - doPrint(Name, C); - break; - case DisplayTable: - doDisplayTable(Name, C); - break; - case Extract: - doExtract(Name, C); - break; - } + switch (Operation) { + default: + llvm_unreachable("Not a read operation"); + case Print: + doPrint(Name, C); + break; + case DisplayTable: + doDisplayTable(Name, C); + break; + case Extract: + doExtract(Name, C); + break; } - failIfError(std::move(Err)); } - if (Members.empty()) return; for (StringRef Name : Members) @@ -533,8 +531,9 @@ computeNewArchiveMembers(ArchiveOperation Operation, int InsertPos = -1; StringRef PosName = sys::path::filename(RelPos); if (OldArchive) { - Error Err; - for (auto &Child : OldArchive->children(Err)) { + for (auto &ChildOrErr : OldArchive->children()) { + failIfError(ChildOrErr.getError()); + auto &Child = ChildOrErr.get(); int Pos = Ret.size(); ErrorOr<StringRef> NameOrErr = Child.getName(); failIfError(NameOrErr.getError()); @@ -569,7 +568,6 @@ computeNewArchiveMembers(ArchiveOperation Operation, if (MemberI != Members.end()) Members.erase(MemberI); } - failIfError(std::move(Err)); } if (Operation == Delete) @@ -766,11 +764,9 @@ static void runMRIScript() { "Could not parse library"); Archives.push_back(std::move(*LibOrErr)); object::Archive &Lib = *Archives.back(); - { - Error Err; - for (auto &Member : Lib.children(Err)) - addMember(NewMembers, Member); - failIfError(std::move(Err)); + for (auto &MemberOrErr : Lib.children()) { + failIfError(MemberOrErr.getError()); + addMember(NewMembers, *MemberOrErr); } break; } diff --git a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp index c92d20d6ccf..0c408ccb5ba 100644 --- a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp +++ b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp @@ -50,14 +50,6 @@ static void error(std::error_code EC) { exit(1); } -static void error(Error Err) { - if (Err) { - logAllUnhandledErrors(std::move(Err), outs(), "Error reading file: "); - outs().flush(); - exit(1); - } -} - } // namespace llvm static void reportError(StringRef Input, StringRef Message) { @@ -490,8 +482,9 @@ static void dumpCXXData(const ObjectFile *Obj) { } static void dumpArchive(const Archive *Arc) { - Error Err; - for (auto &ArcC : Arc->children(Err)) { + for (auto &ErrorOrChild : Arc->children()) { + error(ErrorOrChild.getError()); + const Archive::Child &ArcC = *ErrorOrChild; Expected<std::unique_ptr<Binary>> ChildOrErr = ArcC.getAsBinary(); if (!ChildOrErr) { // Ignore non-object files. @@ -511,7 +504,6 @@ static void dumpArchive(const Archive *Arc) { else reportError(Arc->getFileName(), cxxdump_error::unrecognized_file_format); } - error(std::move(Err)); } static void dumpInput(StringRef File) { diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index 9b2f5220bad..2cd0ede4a53 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -1109,31 +1109,30 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { } } - { - Error Err; - for (auto &C : A->children(Err)) { - Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(&Context); - if (!ChildOrErr) { - if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) - error(std::move(E), Filename, C); - continue; - } - if (SymbolicFile *O = dyn_cast<SymbolicFile>(&*ChildOrErr.get())) { - if (!checkMachOAndArchFlags(O, Filename)) - return; - if (!PrintFileName) { - outs() << "\n"; - if (isa<MachOObjectFile>(O)) { - outs() << Filename << "(" << O->getFileName() << ")"; - } else - outs() << O->getFileName(); - outs() << ":\n"; - } - dumpSymbolNamesFromObject(*O, false, Filename); + for (Archive::child_iterator I = A->child_begin(), E = A->child_end(); + I != E; ++I) { + if (error(I->getError())) + return; + auto &C = I->get(); + Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(&Context); + if (!ChildOrErr) { + if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) + error(std::move(E), Filename, C); + continue; + } + if (SymbolicFile *O = dyn_cast<SymbolicFile>(&*ChildOrErr.get())) { + if (!checkMachOAndArchFlags(O, Filename)) + return; + if (!PrintFileName) { + outs() << "\n"; + if (isa<MachOObjectFile>(O)) { + outs() << Filename << "(" << O->getFileName() << ")"; + } else + outs() << O->getFileName(); + outs() << ":\n"; } + dumpSymbolNamesFromObject(*O, false, Filename); } - if (Err) - error(std::move(Err), A->getFileName()); } return; } @@ -1175,8 +1174,12 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { } else if (Expected<std::unique_ptr<Archive>> AOrErr = I->getAsArchive()) { std::unique_ptr<Archive> &A = *AOrErr; - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), + AE = A->child_end(); + AI != AE; ++AI) { + if (error(AI->getError())) + return; + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(&Context); if (!ChildOrErr) { @@ -1206,8 +1209,6 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { ArchitectureName); } } - if (Err) - error(std::move(Err), A->getFileName()); } else { consumeError(AOrErr.takeError()); error(Filename + " for architecture " + @@ -1246,8 +1247,12 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { } else if (Expected<std::unique_ptr<Archive>> AOrErr = I->getAsArchive()) { std::unique_ptr<Archive> &A = *AOrErr; - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), + AE = A->child_end(); + AI != AE; ++AI) { + if (error(AI->getError())) + return; + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(&Context); if (!ChildOrErr) { @@ -1267,8 +1272,6 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { dumpSymbolNamesFromObject(*O, false, ArchiveName); } } - if (Err) - error(std::move(Err), A->getFileName()); } else { consumeError(AOrErr.takeError()); error(Filename + " for architecture " + @@ -1313,8 +1316,11 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { } else if (Expected<std::unique_ptr<Archive>> AOrErr = I->getAsArchive()) { std::unique_ptr<Archive> &A = *AOrErr; - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end(); + AI != AE; ++AI) { + if (error(AI->getError())) + return; + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(&Context); if (!ChildOrErr) { @@ -1343,8 +1349,6 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { dumpSymbolNamesFromObject(*O, false, ArchiveName, ArchitectureName); } } - if (Err) - error(std::move(Err), A->getFileName()); } else { consumeError(AOrErr.takeError()); error(Filename + " for architecture " + diff --git a/llvm/tools/llvm-objdump/MachODump.cpp b/llvm/tools/llvm-objdump/MachODump.cpp index 08bc1f48240..82e7f8a258b 100644 --- a/llvm/tools/llvm-objdump/MachODump.cpp +++ b/llvm/tools/llvm-objdump/MachODump.cpp @@ -1535,11 +1535,13 @@ static void printArchiveChild(const Archive::Child &C, bool verbose, } static void printArchiveHeaders(Archive *A, bool verbose, bool print_offset) { - Error Err; - for (const auto &C : A->children(Err, false)) + for (Archive::child_iterator I = A->child_begin(false), E = A->child_end(); + I != E; ++I) { + if (std::error_code EC = I->getError()) + report_fatal_error(EC.message()); + const Archive::Child &C = **I; printArchiveChild(C, verbose, print_offset); - if (Err) - report_fatal_error(std::move(Err)); + } } // ParseInputMachO() parses the named Mach-O file in Filename and handles the @@ -1570,8 +1572,11 @@ void llvm::ParseInputMachO(StringRef Filename) { outs() << "Archive : " << Filename << "\n"; if (ArchiveHeaders) printArchiveHeaders(A, !NonVerbose, ArchiveMemberOffsets); - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator I = A->child_begin(), E = A->child_end(); + I != E; ++I) { + if (std::error_code EC = I->getError()) + report_error(Filename, EC); + auto &C = I->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) @@ -1584,8 +1589,6 @@ void llvm::ParseInputMachO(StringRef Filename) { ProcessMachO(Filename, O, O->getFileName()); } } - if (Err) - report_error(Filename, std::move(Err)); return; } if (UniversalHeaders) { @@ -1627,8 +1630,12 @@ void llvm::ParseInputMachO(StringRef Filename) { outs() << "\n"; if (ArchiveHeaders) printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets); - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), + AE = A->child_end(); + AI != AE; ++AI) { + if (std::error_code EC = AI->getError()) + report_error(Filename, EC); + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) @@ -1639,8 +1646,6 @@ void llvm::ParseInputMachO(StringRef Filename) { dyn_cast<MachOObjectFile>(&*ChildOrErr.get())) ProcessMachO(Filename, O, O->getFileName(), ArchitectureName); } - if (Err) - report_error(Filename, std::move(Err)); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for " + @@ -1682,8 +1687,12 @@ void llvm::ParseInputMachO(StringRef Filename) { outs() << "Archive : " << Filename << "\n"; if (ArchiveHeaders) printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets); - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), + AE = A->child_end(); + AI != AE; ++AI) { + if (std::error_code EC = AI->getError()) + report_error(Filename, EC); + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) @@ -1694,8 +1703,6 @@ void llvm::ParseInputMachO(StringRef Filename) { dyn_cast<MachOObjectFile>(&*ChildOrErr.get())) ProcessMachO(Filename, O, O->getFileName()); } - if (Err) - report_error(Filename, std::move(Err)); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for architecture " + @@ -1733,8 +1740,11 @@ void llvm::ParseInputMachO(StringRef Filename) { outs() << "\n"; if (ArchiveHeaders) printArchiveHeaders(A.get(), !NonVerbose, ArchiveMemberOffsets); - Error Err; - for (auto &C : A->children(Err)) { + for (Archive::child_iterator AI = A->child_begin(), AE = A->child_end(); + AI != AE; ++AI) { + if (std::error_code EC = AI->getError()) + report_error(Filename, EC); + auto &C = AI->get(); Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) @@ -1748,8 +1758,6 @@ void llvm::ParseInputMachO(StringRef Filename) { ArchitectureName); } } - if (Err) - report_error(Filename, std::move(Err)); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + Filename + " for architecture " + diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 8414239cb50..bb171ec3fc3 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1702,8 +1702,10 @@ static void DumpObject(const ObjectFile *o, const Archive *a = nullptr) { /// @brief Dump each object file in \a a; static void DumpArchive(const Archive *a) { - Error Err; - for (auto &C : a->children(Err)) { + for (auto &ErrorOrChild : a->children()) { + if (std::error_code EC = ErrorOrChild.getError()) + report_error(a->getFileName(), EC); + const Archive::Child &C = *ErrorOrChild; Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) @@ -1715,8 +1717,6 @@ static void DumpArchive(const Archive *a) { else report_error(a->getFileName(), object_error::invalid_file_type); } - if (Err) - report_error(a->getFileName(), std::move(Err)); } /// @brief Open file and figure out how to dump it. diff --git a/llvm/tools/llvm-readobj/llvm-readobj.cpp b/llvm/tools/llvm-readobj/llvm-readobj.cpp index c293919fd95..ad97dea2d02 100644 --- a/llvm/tools/llvm-readobj/llvm-readobj.cpp +++ b/llvm/tools/llvm-readobj/llvm-readobj.cpp @@ -295,17 +295,6 @@ static void reportError(StringRef Input, StringRef Message) { reportError(Twine(Input) + ": " + Message); } -static void reportError(StringRef Input, Error Err) { - if (Input == "-") - Input = "<stdin>"; - std::string ErrMsg; - { - raw_string_ostream ErrStream(ErrMsg); - logAllUnhandledErrors(std::move(Err), ErrStream, Input + ": "); - } - reportError(ErrMsg); -} - static bool isMipsArch(unsigned Arch) { switch (Arch) { case llvm::Triple::mips: @@ -435,8 +424,10 @@ static void dumpObject(const ObjectFile *Obj) { /// @brief Dumps each object file in \a Arc; static void dumpArchive(const Archive *Arc) { - Error Err; - for (auto &Child : Arc->children(Err)) { + for (auto &ErrorOrChild : Arc->children()) { + if (std::error_code EC = ErrorOrChild.getError()) + reportError(Arc->getFileName(), EC.message()); + const auto &Child = *ErrorOrChild; Expected<std::unique_ptr<Binary>> ChildOrErr = Child.getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) { @@ -453,8 +444,6 @@ static void dumpArchive(const Archive *Arc) { else reportError(Arc->getFileName(), readobj_error::unrecognized_file_format); } - if (Err) - reportError(Arc->getFileName(), std::move(Err)); } /// @brief Dumps each object file in \a MachO Universal Binary; diff --git a/llvm/tools/llvm-size/llvm-size.cpp b/llvm/tools/llvm-size/llvm-size.cpp index c5966ead4b6..ecc0a0eac3c 100644 --- a/llvm/tools/llvm-size/llvm-size.cpp +++ b/llvm/tools/llvm-size/llvm-size.cpp @@ -527,12 +527,15 @@ static void printFileSectionSizes(StringRef file) { if (Archive *a = dyn_cast<Archive>(&Bin)) { // This is an archive. Iterate over each member and display its sizes. - Error Err; - for (auto &C : a->children(Err)) { - Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); + for (object::Archive::child_iterator i = a->child_begin(), + e = a->child_end(); + i != e; ++i) { + if (error(i->getError())) + exit(1); + Expected<std::unique_ptr<Binary>> ChildOrErr = i->get().getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) - error(std::move(E), a->getFileName(), C); + error(std::move(E), a->getFileName(), i->get()); continue; } if (ObjectFile *o = dyn_cast<ObjectFile>(&*ChildOrErr.get())) { @@ -552,8 +555,6 @@ static void printFileSectionSizes(StringRef file) { } } } - if (Err) - error(std::move(Err), a->getFileName()); } else if (MachOUniversalBinary *UB = dyn_cast<MachOUniversalBinary>(&Bin)) { // If we have a list of architecture flags specified dump only those. @@ -596,13 +597,17 @@ static void printFileSectionSizes(StringRef file) { std::unique_ptr<Archive> &UA = *AOrErr; // This is an archive. Iterate over each member and display its // sizes. - Error Err; - for (auto &C : UA->children(Err)) { - Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); + for (object::Archive::child_iterator i = UA->child_begin(), + e = UA->child_end(); + i != e; ++i) { + if (error(i->getError())) + exit(1); + Expected<std::unique_ptr<Binary>> ChildOrErr = + i->get().getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType( ChildOrErr.takeError())) - error(std::move(E), UA->getFileName(), C, + error(std::move(E), UA->getFileName(), i->get(), ArchFlags.size() > 1 ? StringRef(I->getArchTypeName()) : StringRef()); continue; @@ -632,8 +637,6 @@ static void printFileSectionSizes(StringRef file) { } } } - if (Err) - error(std::move(Err), UA->getFileName()); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + @@ -685,13 +688,17 @@ static void printFileSectionSizes(StringRef file) { std::unique_ptr<Archive> &UA = *AOrErr; // This is an archive. Iterate over each member and display its // sizes. - Error Err; - for (auto &C : UA->children(Err)) { - Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); + for (object::Archive::child_iterator i = UA->child_begin(), + e = UA->child_end(); + i != e; ++i) { + if (error(i->getError())) + exit(1); + Expected<std::unique_ptr<Binary>> ChildOrErr = + i->get().getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType( ChildOrErr.takeError())) - error(std::move(E), UA->getFileName(), C); + error(std::move(E), UA->getFileName(), i->get()); continue; } if (ObjectFile *o = dyn_cast<ObjectFile>(&*ChildOrErr.get())) { @@ -714,8 +721,6 @@ static void printFileSectionSizes(StringRef file) { } } } - if (Err) - error(std::move(Err), UA->getFileName()); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + @@ -760,13 +765,16 @@ static void printFileSectionSizes(StringRef file) { I->getAsArchive()) { std::unique_ptr<Archive> &UA = *AOrErr; // This is an archive. Iterate over each member and display its sizes. - Error Err; - for (auto &C : UA->children(Err)) { - Expected<std::unique_ptr<Binary>> ChildOrErr = C.getAsBinary(); + for (object::Archive::child_iterator i = UA->child_begin(), + e = UA->child_end(); + i != e; ++i) { + if (error(i->getError())) + exit(1); + Expected<std::unique_ptr<Binary>> ChildOrErr = i->get().getAsBinary(); if (!ChildOrErr) { if (auto E = isNotObjectErrorInvalidFileType( ChildOrErr.takeError())) - error(std::move(E), UA->getFileName(), C, MoreThanOneArch ? + error(std::move(E), UA->getFileName(), i->get(), MoreThanOneArch ? StringRef(I->getArchTypeName()) : StringRef()); continue; } @@ -790,8 +798,6 @@ static void printFileSectionSizes(StringRef file) { } } } - if (Err) - error(std::move(Err), UA->getFileName()); } else { consumeError(AOrErr.takeError()); error("Mach-O universal file: " + file + " for architecture " + diff --git a/llvm/tools/sancov/sancov.cc b/llvm/tools/sancov/sancov.cc index 55b03709dde..8423d29e751 100644 --- a/llvm/tools/sancov/sancov.cc +++ b/llvm/tools/sancov/sancov.cc @@ -135,15 +135,10 @@ template <typename T> static void FailIfError(const ErrorOr<T> &E) { FailIfError(E.getError()); } -static void FailIfError(Error Err) { - if (Err) { - logAllUnhandledErrors(std::move(Err), errs(), "Error: "); - exit(1); - } -} - template <typename T> static void FailIfError(Expected<T> &E) { - FailIfError(E.takeError()); + if (E) + return; + logAllUnhandledErrors(E.takeError(), errs(), "Error: "); } static void FailIfNotEmpty(const llvm::Twine &E) { @@ -422,8 +417,9 @@ static void getObjectCoveragePoints(const object::ObjectFile &O, static void visitObjectFiles(const object::Archive &A, function_ref<void(const object::ObjectFile &)> Fn) { - Error Err; - for (auto &C : A.children(Err)) { + for (auto &ErrorOrChild : A.children()) { + FailIfError(ErrorOrChild); + const object::Archive::Child &C = *ErrorOrChild; Expected<std::unique_ptr<object::Binary>> ChildOrErr = C.getAsBinary(); FailIfError(errorToErrorCode(ChildOrErr.takeError())); if (auto *O = dyn_cast<object::ObjectFile>(&*ChildOrErr.get())) @@ -431,7 +427,6 @@ visitObjectFiles(const object::Archive &A, else FailIfError(object::object_error::invalid_file_type); } - FailIfError(std::move(Err)); } static void |