[Orc][examples] Factor out make_error from parseExampleModule (NFC)
authorStefan Gränitz <stefan.graenitz@gmail.com>
Fri, 26 Mar 2021 17:43:29 +0000 (18:43 +0100)
committerStefan Gränitz <stefan.graenitz@gmail.com>
Fri, 26 Mar 2021 17:49:07 +0000 (18:49 +0100)
llvm/examples/OrcV2Examples/ExampleModules.h

index 7f0332f..c88609f 100644 (file)
@@ -31,25 +31,25 @@ const llvm::StringRef Add1Example =
   }
 )";
 
+inline llvm::Error createSMDiagnosticError(llvm::SMDiagnostic &Diag) {
+  using namespace llvm;
+  std::string Msg;
+  {
+    raw_string_ostream OS(Msg);
+    Diag.print("", OS);
+  }
+  return make_error<StringError>(std::move(Msg), inconvertibleErrorCode());
+}
+
 inline llvm::Expected<llvm::orc::ThreadSafeModule>
 parseExampleModule(llvm::StringRef Source, llvm::StringRef Name) {
   using namespace llvm;
-  using namespace llvm::orc;
-
   auto Ctx = std::make_unique<LLVMContext>();
   SMDiagnostic Err;
-  auto M = parseIR(MemoryBufferRef(Source, Name), Err, *Ctx);
-
-  if (!M) {
-    std::string ErrMsg;
-    {
-      raw_string_ostream ErrStream(ErrMsg);
-      Err.print("", ErrStream);
-    }
-    return make_error<StringError>(std::move(ErrMsg), inconvertibleErrorCode());
-  }
+  if (auto M = parseIR(MemoryBufferRef(Source, Name), Err, *Ctx))
+    return orc::ThreadSafeModule(std::move(M), std::move(Ctx));
 
-  return ThreadSafeModule(std::move(M), std::move(Ctx));
+  return createSMDiagnosticError(Err);
 }
 
 #endif // LLVM_EXAMPLES_ORCV2EXAMPLES_EXAMPLEMODULES_H