diff options
Diffstat (limited to 'tools/llvm-dis/llvm-dis.cpp')
-rw-r--r-- | tools/llvm-dis/llvm-dis.cpp | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/tools/llvm-dis/llvm-dis.cpp b/tools/llvm-dis/llvm-dis.cpp index 6828b69abe8..82dbaa5e3c6 100644 --- a/tools/llvm-dis/llvm-dis.cpp +++ b/tools/llvm-dis/llvm-dis.cpp @@ -122,29 +122,25 @@ public: } }; -struct LLVMDisDiagnosticHandler : public DiagnosticHandler { - char *Prefix; - LLVMDisDiagnosticHandler(char *PrefixPtr) : Prefix(PrefixPtr) {} - bool handleDiagnostics(const DiagnosticInfo &DI) override { - raw_ostream &OS = errs(); - OS << Prefix << ": "; - switch (DI.getSeverity()) { - case DS_Error: OS << "error: "; break; - case DS_Warning: OS << "warning: "; break; - case DS_Remark: OS << "remark: "; break; - case DS_Note: OS << "note: "; break; - } - - DiagnosticPrinterRawOStream DP(OS); - DI.print(DP); - OS << '\n'; +} // end anon namespace - if (DI.getSeverity() == DS_Error) - exit(1); - return true; +static void diagnosticHandler(const DiagnosticInfo &DI, void *Context) { + raw_ostream &OS = errs(); + OS << (char *)Context << ": "; + switch (DI.getSeverity()) { + case DS_Error: OS << "error: "; break; + case DS_Warning: OS << "warning: "; break; + case DS_Remark: OS << "remark: "; break; + case DS_Note: OS << "note: "; break; } -}; -} // end anon namespace + + DiagnosticPrinterRawOStream DP(OS); + DI.print(DP); + OS << '\n'; + + if (DI.getSeverity() == DS_Error) + exit(1); +} static ExitOnError ExitOnErr; @@ -170,8 +166,9 @@ int main(int argc, char **argv) { LLVMContext Context; llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. - Context.setDiagnosticHandler( - llvm::make_unique<LLVMDisDiagnosticHandler>(argv[0])); + + Context.setDiagnosticHandler(diagnosticHandler, argv[0]); + cl::ParseCommandLineOptions(argc, argv, "llvm .bc -> .ll disassembler\n"); std::unique_ptr<Module> M = openInputFile(Context); |