Explorar o código

Save/restore diag printer in LoadModuleFromBitcode.

Tex Riddell %!s(int64=7) %!d(string=hai) anos
pai
achega
5f94a3cf57
Modificáronse 1 ficheiros con 3 adicións e 0 borrados
  1. 3 0
      lib/HLSL/DxilUtil.cpp

+ 3 - 0
lib/HLSL/DxilUtil.cpp

@@ -145,9 +145,12 @@ std::unique_ptr<llvm::Module> LoadModuleFromBitcode(llvm::MemoryBuffer *MB,
   std::string &DiagStr) {
   std::string &DiagStr) {
   raw_string_ostream DiagStream(DiagStr);
   raw_string_ostream DiagStream(DiagStr);
   llvm::DiagnosticPrinterRawOStream DiagPrinter(DiagStream);
   llvm::DiagnosticPrinterRawOStream DiagPrinter(DiagStream);
+  LLVMContext::DiagnosticHandlerTy OrigHandler = Ctx.getDiagnosticHandler();
+  void *OrigContext = Ctx.getDiagnosticContext();
   Ctx.setDiagnosticHandler(PrintDiagnosticHandler, &DiagPrinter, true);
   Ctx.setDiagnosticHandler(PrintDiagnosticHandler, &DiagPrinter, true);
   ErrorOr<std::unique_ptr<llvm::Module>> pModule(
   ErrorOr<std::unique_ptr<llvm::Module>> pModule(
     llvm::parseBitcodeFile(MB->getMemBufferRef(), Ctx));
     llvm::parseBitcodeFile(MB->getMemBufferRef(), Ctx));
+  Ctx.setDiagnosticHandler(OrigHandler, OrigContext);
   if (std::error_code ec = pModule.getError()) {
   if (std::error_code ec = pModule.getError()) {
     return nullptr;
     return nullptr;
   }
   }