diff options
Diffstat (limited to 'llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp')
-rw-r--r-- | llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp index 206d65b6c20..d4a290c786b 100644 --- a/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp +++ b/llvm/tools/llvm-cxxdump/llvm-cxxdump.cpp @@ -485,11 +485,17 @@ static void dumpArchive(const Archive *Arc) { for (auto &ErrorOrChild : Arc->children()) { error(ErrorOrChild.getError()); const Archive::Child &ArcC = *ErrorOrChild; - ErrorOr<std::unique_ptr<Binary>> ChildOrErr = ArcC.getAsBinary(); - if (std::error_code EC = ChildOrErr.getError()) { + Expected<std::unique_ptr<Binary>> ChildOrErr = ArcC.getAsBinary(); + if (!ChildOrErr) { // Ignore non-object files. - if (EC != object_error::invalid_file_type) - reportError(Arc->getFileName(), EC.message()); + if (auto E = isNotObjectErrorInvalidFileType(ChildOrErr.takeError())) { + std::string Buf; + raw_string_ostream OS(Buf); + logAllUnhandledErrors(std::move(E), OS, ""); + OS.flush(); + reportError(Arc->getFileName(), Buf); + } + ChildOrErr.takeError(); continue; } |