summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-06-23 20:41:02 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-06-23 20:41:02 +0000
commit2da970364f190876f204da5fdcf4eb9bce201255 (patch)
tree143dc52bf65da7cdab4a7f936997c995674f8a81 /tools
parent0da818cdbb0a4b01e8d59f1050da8b4b2ea5624c (diff)
downloadllvm-2da970364f190876f204da5fdcf4eb9bce201255.tar.gz
llvm-2da970364f190876f204da5fdcf4eb9bce201255.tar.bz2
llvm-2da970364f190876f204da5fdcf4eb9bce201255.tar.xz
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
Diffstat (limited to 'tools')
-rw-r--r--tools/llvm-nm/llvm-nm.cpp5
-rw-r--r--tools/llvm-size/llvm-size.cpp4
-rw-r--r--tools/llvm-symbolizer/LLVMSymbolize.cpp9
3 files changed, 10 insertions, 8 deletions
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<ObjectFile> Obj;
+ ErrorOr<std::unique_ptr<ObjectFile>> ObjOrErr = I->getAsObjectFile();
std::unique_ptr<Archive> A;
- if (!I->getAsObjectFile(Obj)) {
+ if (ObjOrErr) {
+ std::unique_ptr<ObjectFile> 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<ObjectFile> UO;
+ ErrorOr<std::unique_ptr<ObjectFile>> UO = I->getAsObjectFile();
std::unique_ptr<Archive> UA;
- if (!I->getAsObjectFile(UO)) {
+ if (UO) {
if (ObjectFile *o = dyn_cast<ObjectFile>(&*UO.get())) {
MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(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<ObjectFile> ParsedObj;
- if (!UB->getObjectForArch(Triple(ArchName).getArch(), ParsedObj)) {
- Res = ParsedObj.get();
- ParsedBinariesAndObjects.push_back(std::move(ParsedObj));
+ ErrorOr<std::unique_ptr<ObjectFile>> 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()) {