[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