Kaleidoscope has switched to new pass manager before (#72324), but both
code and tutorial document have some missing parts.
This pull request fixes the following problems:
1. Adds `PromotePass` to the function pass manager. This pass was
removed during the switch from legacy pass manager to the new pass
manager.
2. Syncs the tutorial with the code.
The current command will raise an error:
> The `opt -passname` syntax for the new pass manager is not supported,
please use `opt -passes=<pipeline>` (or the `-p` alias for a more
concise version).
Update the usage now.
There were quite a few places in the tutorial where the snippets were not up to date with the full code listings given. I have updated all of the ones I could find, which mostly involves changing `.` to `->` when accessing through a `std::unique_ptr`, changing `while (1)` to `while (true)`, and other such small changes.
There are still however a few places where I am not sure what to do, such as:
- Chapter 4: `ParseTopLevelExpr()` in chapter 3 sets the ProtoTypeAST
name to "", however it is referred to as "__anon_expr"
in chapter 4. Would it be required to mention this change
in chapter 4?
- Chapter 9: The code snippets refer to the top level expression as
"main", however the full code listing refers to it as
"__anon_expr". I think given the context of the chapter
it makes sense to refer to it as "main", so I have
updated the code listing to reflect that.
- Chapter 9: In chapter 9 the diff given for `HandleTopLevelExpression()`
deletes code that is not mentioned anywhere else, so I am
not sure what is to be done there.
- Miscellaneous: I don't think this is very important, however the
casing used for the first word of error messages
tends to vary between upper and lower case between
chapters and I do not know if it is worth reconciling
these differences.
Reviewed By: xgupta
Differential Revision: https://reviews.llvm.org/D142323
Loads in the first half of the chapter are missing the type argument.
Patched By: klao (Mihaly Barasz)
Reviewed By: Jim
Differential Revision: https://reviews.llvm.org/D90326
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances across the monorepo.
llvm-svn: 369013