Update the "LLVM updates" section

This commit is contained in:
Yuki Okushi 2021-04-02 05:15:48 +09:00 committed by Joshua Nelson
parent dfe398bd5a
commit 8d6459ffff
1 changed files with 12 additions and 8 deletions

View File

@ -67,7 +67,7 @@ Example PRs look like:
## Feature updates ## Feature updates
> Note that this information is as of the time of this writing <!-- date: > Note that this information is as of the time of this writing <!-- date:
2018-12 --> (December 2018). The process for updating LLVM changes with 2021-04 --> (April 2021). The process for updating LLVM changes with
practically all LLVM updates, so this may be out of date! practically all LLVM updates, so this may be out of date!
Unlike bugfixes, updating to pick up a new feature of LLVM typically requires a Unlike bugfixes, updating to pick up a new feature of LLVM typically requires a
@ -75,7 +75,7 @@ lot more work. This is where we can't reasonably cherry-pick commits backwards
so we need to do a full update. There's a lot of stuff to do here, so let's go so we need to do a full update. There's a lot of stuff to do here, so let's go
through each in detail. through each in detail.
1. Create a new branch in the rust-lang/llvm-project repository. This branch 1. Create a new branch in the [rust-lang/llvm-project repository]. This branch
should be named `rustc/a.b-yyyy-mm-dd` where `a.b` is the current version should be named `rustc/a.b-yyyy-mm-dd` where `a.b` is the current version
number of LLVM in-tree at the time of the branch and the remaining part is number of LLVM in-tree at the time of the branch and the remaining part is
today's date. Move this branch to the commit in LLVM that you'd like, which today's date. Move this branch to the commit in LLVM that you'd like, which
@ -119,12 +119,12 @@ through each in detail.
Ideally, build LLVM and test it on a few platforms: Ideally, build LLVM and test it on a few platforms:
* Linux * Linux
* OSX * macOS
* Windows * Windows
and afterwards run some docker containers that CI also does: and afterwards run some docker containers that CI also does:
* `./src/ci/docker/run.sh wasm32-unknown` * `./src/ci/docker/run.sh wasm32`
* `./src/ci/docker/run.sh arm-android` * `./src/ci/docker/run.sh arm-android`
* `./src/ci/docker/run.sh dist-various-1` * `./src/ci/docker/run.sh dist-various-1`
* `./src/ci/docker/run.sh dist-various-2` * `./src/ci/docker/run.sh dist-various-2`
@ -136,15 +136,17 @@ through each in detail.
`src/llvm-project` and will likely also change [`llvm-wrapper`] as well. `src/llvm-project` and will likely also change [`llvm-wrapper`] as well.
For prior art, previous LLVM updates look like For prior art, previous LLVM updates look like
[#55835](https://github.com/rust-lang/rust/pull/55835)
[#47828](https://github.com/rust-lang/rust/pull/47828)
[#62474](https://github.com/rust-lang/rust/pull/62474) [#62474](https://github.com/rust-lang/rust/pull/62474)
[#62592](https://github.com/rust-lang/rust/pull/62592). Note that sometimes it's [#62592](https://github.com/rust-lang/rust/pull/62592)
[#67759](https://github.com/rust-lang/rust/pull/67759)
[#73526](https://github.com/rust-lang/rust/pull/73526)
[#81451](https://github.com/rust-lang/rust/pull/81451). Note that sometimes it's
easiest to land [`llvm-wrapper`] compatibility as a PR before actually updating easiest to land [`llvm-wrapper`] compatibility as a PR before actually updating
`src/llvm-project`. This way while you're working through LLVM issues others `src/llvm-project`. This way while you're working through LLVM issues others
interested in trying out the new LLVM can benefit from work you've done to interested in trying out the new LLVM can benefit from work you've done to
update the C++ bindings. update the C++ bindings.
[rust-lang/llvm-project repository]: https://github.com/rust-lang/llvm-project
[`llvm-wrapper`]: https://github.com/rust-lang/rust/tree/master/compiler/rustc_llvm/llvm-wrapper [`llvm-wrapper`]: https://github.com/rust-lang/rust/tree/master/compiler/rustc_llvm/llvm-wrapper
### Caveats and gotchas ### Caveats and gotchas
@ -155,10 +157,12 @@ keep in mind while going through them:
* LLVM bugs are hard to find, don't hesitate to ask for help! Bisection is * LLVM bugs are hard to find, don't hesitate to ask for help! Bisection is
definitely your friend here (yes LLVM takes forever to build, yet bisection is definitely your friend here (yes LLVM takes forever to build, yet bisection is
still your friend) still your friend)
* If you've got general questions, @alexcrichton can help you out. * If you've got general questions, [wg-llvm] can help you out.
* Creating branches is a privileged operation on GitHub, so you'll need someone * Creating branches is a privileged operation on GitHub, so you'll need someone
with write access to create the branches for you most likely. with write access to create the branches for you most likely.
[wg-llvm]: https://rust-lang.zulipchat.com/#narrow/stream/187780-t-compiler.2Fwg-llvm
## New LLVM Release Updates ## New LLVM Release Updates
Updating to a new release of LLVM is very similar to the "feature updates" Updating to a new release of LLVM is very similar to the "feature updates"