[llvm] r228539 - Kaleidoscope-Orc: Extract IRGen work into a utility function.

David Blaikie dblaikie at gmail.com
Sun Feb 8 12:29:28 PST 2015


Author: dblaikie
Date: Sun Feb  8 14:29:28 2015
New Revision: 228539

URL: http://llvm.org/viewvc/llvm-project?rev=228539&view=rev
Log:
Kaleidoscope-Orc: Extract IRGen work into a utility function.

Modified:
    llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp

Modified: llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp?rev=228539&r1=228538&r2=228539&view=diff
==============================================================================
--- llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp (original)
+++ llvm/trunk/examples/Kaleidoscope/Orc/initial/toy.cpp Sun Feb  8 14:29:28 2015
@@ -1180,16 +1180,24 @@ private:
   CompileLayerT CompileLayer;
 };
 
-static void HandleDefinition(SessionContext &S, KaleidoscopeJIT &J) {
-  if (auto F = ParseDefinition()) {
-    IRGenContext C(S);
-    if (auto LF = F->IRGen(C)) {
+static std::unique_ptr<llvm::Module>
+IRGen(KaleidoscopeJIT &J, SessionContext &S, const FunctionAST &F) {
+  IRGenContext C(S);
+  auto LF = F.IRGen(C);
+  if (!LF)
+    return nullptr;
 #ifndef MINIMAL_STDERR_OUTPUT
-      std::cerr << "Read function definition:\n";
-      LF->dump();
+  fprintf(stderr, "Read function definition:");
+  LF->dump();
 #endif
-      J.addModule(C.takeM());
+  return C.takeM();
+}
+
+static void HandleDefinition(SessionContext &S, KaleidoscopeJIT &J) {
+  if (auto F = ParseDefinition()) {
+    if (auto M = IRGen(J, S, *F)) {
       S.addPrototypeAST(llvm::make_unique<PrototypeAST>(*F->Proto));
+      J.addModule(std::move(M));
     }
   } else {
     // Skip token for error recovery.





More information about the llvm-commits mailing list