From: Rafael Espindola Date: Fri, 24 Apr 2015 18:51:30 +0000 (+0000) Subject: Return ErrorOr>. NFC. X-Git-Tag: llvmorg-3.7.0-rc1~6043 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ab5696ba8204293e4a37e8fa21896ee467ae9b29;p=platform%2Fupstream%2Fllvm.git Return ErrorOr>. NFC. llvm-svn: 235744 --- diff --git a/lld/include/lld/Core/Reader.h b/lld/include/lld/Core/Reader.h index 0c9d67b..08a0933 100644 --- a/lld/include/lld/Core/Reader.h +++ b/lld/include/lld/Core/Reader.h @@ -89,8 +89,8 @@ public: /// Walk the list of registered Readers and find one that can parse the /// supplied file and parse it. - std::error_code loadFile(std::unique_ptr mb, - std::unique_ptr &result) const; + ErrorOr> + loadFile(std::unique_ptr mb) const; /// Walk the list of registered kind tables to convert a Reference Kind /// name to a value. diff --git a/lld/lib/Core/Reader.cpp b/lld/lib/Core/Reader.cpp index d27cc73..b64e7cf 100644 --- a/lld/lib/Core/Reader.cpp +++ b/lld/lib/Core/Reader.cpp @@ -28,8 +28,8 @@ void Registry::add(std::unique_ptr handler) { _yamlHandlers.push_back(std::move(handler)); } -std::error_code Registry::loadFile(std::unique_ptr mb, - std::unique_ptr &result) const { +ErrorOr> +Registry::loadFile(std::unique_ptr mb) const { // Get file magic. StringRef content(mb->getBufferStart(), mb->getBufferSize()); llvm::sys::fs::file_magic fileType = llvm::sys::fs::identify_magic(content); @@ -38,12 +38,7 @@ std::error_code Registry::loadFile(std::unique_ptr mb, for (const std::unique_ptr &reader : _readers) { if (!reader->canParse(fileType, *mb)) continue; - ErrorOr> fileOrErr = - reader->loadFile(std::move(mb), *this); - if (std::error_code ec = fileOrErr.getError()) - return ec; - result = std::move(fileOrErr.get()); - return std::error_code(); + return reader->loadFile(std::move(mb), *this); } // No Reader could parse this file. diff --git a/lld/lib/Driver/DarwinLdDriver.cpp b/lld/lib/Driver/DarwinLdDriver.cpp index ea46000..db097da 100644 --- a/lld/lib/Driver/DarwinLdDriver.cpp +++ b/lld/lib/Driver/DarwinLdDriver.cpp @@ -80,12 +80,12 @@ loadFile(MachOLinkingContext &ctx, StringRef path, ErrorOr> mbOrErr = ctx.getMemoryBuffer(path); if (std::error_code ec = mbOrErr.getError()) return makeErrorFile(path, ec); - std::unique_ptr file; - if (std::error_code ec = - ctx.registry().loadFile(std::move(mbOrErr.get()), file)) + ErrorOr> fileOrErr = + ctx.registry().loadFile(std::move(mbOrErr.get())); + if (std::error_code ec = fileOrErr.getError()) return makeErrorFile(path, ec); std::vector> files; - files.push_back(std::move(file)); + files.push_back(std::move(fileOrErr.get())); for (std::unique_ptr &pf : files) { // If file is a dylib, inform LinkingContext about it. if (SharedLibraryFile *shl = dyn_cast(pf.get())) { diff --git a/lld/lib/Driver/Driver.cpp b/lld/lib/Driver/Driver.cpp index 1314d91..3a19456 100644 --- a/lld/lib/Driver/Driver.cpp +++ b/lld/lib/Driver/Driver.cpp @@ -54,11 +54,12 @@ FileVector loadFile(LinkingContext &ctx, StringRef path, bool wholeArchive) { = MemoryBuffer::getFileOrSTDIN(path); if (std::error_code ec = mb.getError()) return makeErrorFile(path, ec); - std::unique_ptr file; - if (std::error_code ec = ctx.registry().loadFile(std::move(mb.get()), file)) + ErrorOr> fileOrErr = + ctx.registry().loadFile(std::move(mb.get())); + if (std::error_code ec = fileOrErr.getError()) return makeErrorFile(path, ec); std::vector> files; - files.push_back(std::move(file)); + files.push_back(std::move(fileOrErr.get())); if (wholeArchive) return parseMemberFiles(files); return files; diff --git a/lld/lib/ReaderWriter/FileArchive.cpp b/lld/lib/ReaderWriter/FileArchive.cpp index 4f7863d..2128d85 100644 --- a/lld/lib/ReaderWriter/FileArchive.cpp +++ b/lld/lib/ReaderWriter/FileArchive.cpp @@ -173,11 +173,12 @@ private: std::unique_ptr memberMB(MemoryBuffer::getMemBuffer( mb.getBuffer(), mb.getBufferIdentifier(), false)); - std::unique_ptr file; - if (std::error_code ec = _registry.loadFile(std::move(memberMB), file)) + ErrorOr> fileOrErr = + _registry.loadFile(std::move(memberMB)); + if (std::error_code ec = fileOrErr.getError()) return ec; std::vector> files; - files.push_back(std::move(file)); + files.push_back(std::move(fileOrErr.get())); assert(files.size() == 1); result = std::move(files[0]); if (std::error_code ec = result->parse()) diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp index aff6c87..4408bea 100644 --- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp +++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp @@ -623,11 +623,12 @@ MachODylibFile* MachOLinkingContext::loadIndirectDylib(StringRef path) { if (mbOrErr.getError()) return nullptr; - std::unique_ptr file; - if (registry().loadFile(std::move(mbOrErr.get()), file)) + ErrorOr> fileOrErr = + registry().loadFile(std::move(mbOrErr.get())); + if (!fileOrErr) return nullptr; std::vector> files; - files.push_back(std::move(file)); + files.push_back(std::move(fileOrErr.get())); assert(files.size() == 1 && "expected one file in dylib"); files[0]->parse(); MachODylibFile* result = reinterpret_cast(files[0].get());