[PATCH] Big update to Kaleidoscope tutorials.

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 26 09:55:05 PDT 2015


I don't have a specific objection to this patch, but I'm uncomfortable 
with pushing a patch into a release branch at the last minute.  Yes, 
it's a doc only change, but there's still a chance we need to 
revise/revert after the release has happened.

For the record, given this is now in ToT, some of my discomfort is 
eliminated.  If we could let it bake there for a day or two, I'd be 
worried less.

I'll defer to you to make the actual decision.  I don't care enough to 
actively object.

On 08/25/2015 08:17 PM, Lang Hames wrote:
> Hi Philip,
>
> This change is to the Kaleidoscope docs only, and those are fairly 
> fundamentally broken in LLVM 3.7 as it stands: The code for chapter 4 
> is convoluted, and doesn't match the docs. The code for chapter 5 and 
> beyond doesn't work properly.
>
> While I didn't originally plan for this to go in to 3.7, and I'm not 
> personally invested in seeing it make it in, I think it's a big 
> improvement for very little risk. I'm currently sanity checking this 
> patch (plus the c++11 and clang-format prerequisites) on the release 
> branch. If it passes everything I'd be inclined to take it.
>
> Did you have any particular points of concern, or were you just 
> applying the usual high bar for late changes to the release branch?
>
> Cheers,
> Lang.
>
> On Tuesday, August 25, 2015, Philip Reames via llvm-commits 
> <llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>> wrote:
>
>     On 08/25/2015 05:39 PM, Andy Somogyi via llvm-commits wrote:
>>     I think this should go in the 3.7 release.
>     I disagree.  I'd be fine with a forward reference (e.g. "This
>     document is out of date, we suggest you read the one for ToT."),
>     but this would be a large change to make at the last minute.
>>
>>     The kaleidoscope tutorials have been broken for a long time, ever
>>     since the removal of the regular JIT, and nearly everyone I know
>>     used the Kaleidoscope tutorials to learn LLVM, they are a very
>>     good resource and they simply should work.
>>
>>     Sent from my iPad
>>
>>     On Aug 25, 2015, at 6:35 PM, Eric Christopher via llvm-commits
>>     <llvm-commits at lists.llvm.org
>>     <javascript:_e(%7B%7D,'cvml','llvm-commits at lists.llvm.org');>> wrote:
>>
>>>     This looks pretty great.
>>>
>>>     Couple of comments:
>>>
>>>     Man, would the renaming have been nice to do before/after :)
>>>
>>>     +simple: The KaleidoscopeJIT has a straigtforward symbol
>>>     resolution rule that
>>>
>>>     Typo.
>>>
>>>     Any reason not to have the KaleidoscopeJIT file in the tutorial?
>>>
>>>     +      : TM(EngineBuilder().selectTarget()),
>>>     DL(TM->createDataLayout()),
>>>
>>>     As far as the data layout, this hurts. Can we get it from the
>>>     module at use time?
>>>
>>>     Otherwise LGTM and hopefully we can just pull this into 3.7 if
>>>     we have another RC. Otherwise we probably want to hold off?
>>>
>>>     -eric
>>>
>>>
>>>     On Tue, Aug 25, 2015 at 2:01 PM Lang Hames <lhames at gmail.com
>>>     <javascript:_e(%7B%7D,'cvml','lhames at gmail.com');>> wrote:
>>>
>>>         Hi All,
>>>
>>>         As some of you have noticed, Kaleidoscope has had some
>>>         issues since we removed the legacy JIT last year. The
>>>         tutorial code had been relying on the behavior of the legacy
>>>         JIT, and the switch to MCJIT caused many simple use-cases to
>>>         break (e.g. repeat calls to functions). Kaleidoscope Chapter
>>>         4, which introduces JIT support, had been largely fixed by
>>>         taking some of the code from Andy Kaylor's
>>>         Kaleidoscope/MCJIT tutorials, but this added a lot of
>>>         engineering detail to what was supposed to be a beginner's
>>>         tutorial. The later chapters were never updated.
>>>
>>>         The attached patch fixes this situation by updating all of
>>>         the Kaleidoscope tutorials to use a new, custom, ORC-based
>>>         JIT: KaleidoscopeJIT. By using this instead of MCJIT, all of
>>>         the original Kaleidoscope functionality is restored, and we
>>>         actually do a better job of behaving like a REPL (for
>>>         example, functions can be redefined). Assuming this patch is
>>>         accepted, in the near future I hope to add one or two new
>>>         chapters to Kaleidoscope that involve modifying the
>>>         KaleidoscopeJIT to support lazy compilation (This will
>>>         mostly involve merging code from the Kaleidoscope/Orc
>>>         tutorials).
>>>
>>>         Most of this patch is concerned with the switch to
>>>         KaleidoscopeJIT and corresponding updates to the
>>>         documentation. In particular, Chapter 4 has been
>>>         substantially updated. There is also a little bit of C++11
>>>         modernization and general cleanup.
>>>
>>>         All comments welcome. If anyone would like to road-test the
>>>         new tutorials I'd be particularly interested to hear
>>>         feedback on that.
>>>
>>>         Cheers,
>>>         Lang.
>>>
>>>     _______________________________________________
>>>     llvm-commits mailing list
>>>     llvm-commits at lists.llvm.org
>>>     <javascript:_e(%7B%7D,'cvml','llvm-commits at lists.llvm.org');>
>>>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>>
>>     _______________________________________________
>>     llvm-commits mailing list
>>     llvm-commits at lists.llvm.org  <javascript:_e(%7B%7D,'cvml','llvm-commits at lists.llvm.org');>
>>     http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150826/52a6c082/attachment.html>


More information about the llvm-commits mailing list