From 2da970364f190876f204da5fdcf4eb9bce201255 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 23 Jun 2014 20:41:02 +0000 Subject: Convert a few methods to use ErrorOr. It used to be inconvenient to mix ErrorOr and UniquePtr, but with c++11 they work OK together. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211532 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-nm/llvm-nm.cpp | 5 +++-- tools/llvm-size/llvm-size.cpp | 4 ++-- tools/llvm-symbolizer/LLVMSymbolize.cpp | 9 +++++---- 3 files changed, 10 insertions(+), 8 deletions(-) (limited to 'tools') diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index f706bcdc2b..aeb7ba1072 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -773,9 +773,10 @@ static void dumpSymbolNamesFromFile(std::string &Filename) { for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { - std::unique_ptr Obj; + ErrorOr> ObjOrErr = I->getAsObjectFile(); std::unique_ptr A; - if (!I->getAsObjectFile(Obj)) { + if (ObjOrErr) { + std::unique_ptr Obj = std::move(ObjOrErr.get()); if (moreThanOneArch) outs() << "\n"; outs() << Obj->getFileName(); diff --git a/tools/llvm-size/llvm-size.cpp b/tools/llvm-size/llvm-size.cpp index b71380dcaa..48614d8176 100644 --- a/tools/llvm-size/llvm-size.cpp +++ b/tools/llvm-size/llvm-size.cpp @@ -466,9 +466,9 @@ static void PrintFileSectionSizes(StringRef file) { for (MachOUniversalBinary::object_iterator I = UB->begin_objects(), E = UB->end_objects(); I != E; ++I) { - std::unique_ptr UO; + ErrorOr> UO = I->getAsObjectFile(); std::unique_ptr UA; - if (!I->getAsObjectFile(UO)) { + if (UO) { if (ObjectFile *o = dyn_cast(&*UO.get())) { MachOObjectFile *MachO = dyn_cast(o); if (OutputFormat == sysv) diff --git a/tools/llvm-symbolizer/LLVMSymbolize.cpp b/tools/llvm-symbolizer/LLVMSymbolize.cpp index dd9ffc1fb8..ebbae39a57 100644 --- a/tools/llvm-symbolizer/LLVMSymbolize.cpp +++ b/tools/llvm-symbolizer/LLVMSymbolize.cpp @@ -349,10 +349,11 @@ LLVMSymbolizer::getObjectFileFromBinary(Binary *Bin, const std::string &ArchName std::make_pair(UB, ArchName)); if (I != ObjectFileForArch.end()) return I->second; - std::unique_ptr ParsedObj; - if (!UB->getObjectForArch(Triple(ArchName).getArch(), ParsedObj)) { - Res = ParsedObj.get(); - ParsedBinariesAndObjects.push_back(std::move(ParsedObj)); + ErrorOr> ParsedObj = + UB->getObjectForArch(Triple(ArchName).getArch()); + if (ParsedObj) { + Res = ParsedObj.get().get(); + ParsedBinariesAndObjects.push_back(std::move(ParsedObj.get())); } ObjectFileForArch[std::make_pair(UB, ArchName)] = Res; } else if (Bin->isObject()) { -- cgit v1.2.3