diff options
| author | 2017-01-24 08:32:59 +0000 | |
|---|---|---|
| committer | 2017-01-24 08:32:59 +0000 | |
| commit | 53d771aafdbe5b919f264f53cba3788e2c4cffd2 (patch) | |
| tree | 7eca39498be0ff1e3a6daf583cd9ca5886bb2636 /gnu/llvm/tools/llvm-dis/llvm-dis.cpp | |
| parent | In preparation of compiling our kernels with -ffreestanding, explicitly map (diff) | |
| download | wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.tar.xz wireguard-openbsd-53d771aafdbe5b919f264f53cba3788e2c4cffd2.zip | |
Import LLVM 4.0.0 rc1 including clang and lld to help the current
development effort on OpenBSD/arm64.
Diffstat (limited to 'gnu/llvm/tools/llvm-dis/llvm-dis.cpp')
| -rw-r--r-- | gnu/llvm/tools/llvm-dis/llvm-dis.cpp | 58 |
1 files changed, 17 insertions, 41 deletions
diff --git a/gnu/llvm/tools/llvm-dis/llvm-dis.cpp b/gnu/llvm/tools/llvm-dis/llvm-dis.cpp index 88333aeb688..0c1d723a7b1 100644 --- a/gnu/llvm/tools/llvm-dis/llvm-dis.cpp +++ b/gnu/llvm/tools/llvm-dis/llvm-dis.cpp @@ -17,7 +17,7 @@ //===----------------------------------------------------------------------===// #include "llvm/IR/LLVMContext.h" -#include "llvm/Bitcode/ReaderWriter.h" +#include "llvm/Bitcode/BitcodeReader.h" #include "llvm/IR/AssemblyAnnotationWriter.h" #include "llvm/IR/DebugInfo.h" #include "llvm/IR/DiagnosticInfo.h" @@ -26,7 +26,6 @@ #include "llvm/IR/Module.h" #include "llvm/IR/Type.h" #include "llvm/Support/CommandLine.h" -#include "llvm/Support/DataStream.h" #include "llvm/Support/Error.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/FormattedStream.h" @@ -138,35 +137,19 @@ static void diagnosticHandler(const DiagnosticInfo &DI, void *Context) { exit(1); } -static Expected<std::unique_ptr<Module>> openInputFile(LLVMContext &Context) { - if (MaterializeMetadata) { - ErrorOr<std::unique_ptr<MemoryBuffer>> MBOrErr = - MemoryBuffer::getFileOrSTDIN(InputFilename); - if (!MBOrErr) - return errorCodeToError(MBOrErr.getError()); - ErrorOr<std::unique_ptr<Module>> MOrErr = - getLazyBitcodeModule(std::move(*MBOrErr), Context, - /*ShouldLazyLoadMetadata=*/true); - if (!MOrErr) - return errorCodeToError(MOrErr.getError()); - (*MOrErr)->materializeMetadata(); - return std::move(*MOrErr); - } else { - std::string ErrorMessage; - std::unique_ptr<DataStreamer> Streamer = - getDataFileStreamer(InputFilename, &ErrorMessage); - if (!Streamer) - return make_error<StringError>(ErrorMessage, inconvertibleErrorCode()); - std::string DisplayFilename; - if (InputFilename == "-") - DisplayFilename = "<stdin>"; - else - DisplayFilename = InputFilename; - ErrorOr<std::unique_ptr<Module>> MOrErr = - getStreamedBitcodeModule(DisplayFilename, std::move(Streamer), Context); - (*MOrErr)->materializeAll(); - return std::move(*MOrErr); - } +static ExitOnError ExitOnErr; + +static std::unique_ptr<Module> openInputFile(LLVMContext &Context) { + std::unique_ptr<MemoryBuffer> MB = + ExitOnErr(errorOrToExpected(MemoryBuffer::getFileOrSTDIN(InputFilename))); + std::unique_ptr<Module> M = + ExitOnErr(getOwningLazyBitcodeModule(std::move(MB), Context, + /*ShouldLazyLoadMetadata=*/true)); + if (MaterializeMetadata) + ExitOnErr(M->materializeMetadata()); + else + ExitOnErr(M->materializeAll()); + return M; } int main(int argc, char **argv) { @@ -174,6 +157,8 @@ int main(int argc, char **argv) { sys::PrintStackTraceOnErrorSignal(argv[0]); PrettyStackTraceProgram X(argc, argv); + ExitOnErr.setBanner(std::string(argv[0]) + ": error: "); + LLVMContext Context; llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. @@ -181,16 +166,7 @@ int main(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n"); - Expected<std::unique_ptr<Module>> MOrErr = openInputFile(Context); - if (!MOrErr) { - handleAllErrors(MOrErr.takeError(), [&](ErrorInfoBase &EIB) { - errs() << argv[0] << ": "; - EIB.log(errs()); - errs() << '\n'; - }); - return 1; - } - std::unique_ptr<Module> M = std::move(*MOrErr); + std::unique_ptr<Module> M = openInputFile(Context); // Just use stdout. We won't actually print anything on it. if (DontPrint) |
