Redox Cross Compilation
I will admit - there are things here that I wish I did not have to do. This completes the ability to create a cross compiler from the rust repository for `x86_64-unknown-redox`. I will document this PR with inline comments explaining some things.
[View this gist to see how a cross compiler is built](https://gist.github.com/jackpot51/6680ad973986e84d69c79854249f2b7e)
Prior discussion of a smaller change is here: https://github.com/rust-lang/rust/pull/38366
Refactor global paths
This PR removes the field `global: bool` from `ast::Path` and `hir::Path`, instead representing a global path `::foo::bar` as `{{root}}::foo::bar`, where `{{root}}` is a virtual keyword `keywords::CrateRoot`.
Also, fixes#38016.
r? @nrc
Delete the llvm submodule lockfile when configuring on the bots
This should fix the periodic error that .git/modules/src/llvm/index.lock
exists on the mac slaves.
1.14 release notes
[Rendered](https://github.com/brson/rust/blob/relnotes/RELEASES.md).
Is there anything I'm missing? Were there any library stabilizations?
The most interesting thing this time seems to be rustup, then compile time opts, `..` matches, cargo exposing `cfg` values to build scripts. This release also has wasm support, but it's pretty rough. Might be worth hyping up all the same. ARM MUSL targets.
There are a large number of compatibility notes. Might be worth talking about that.
Relevant prlo links: goo.gl/PGz2Ds, goo.gl/KV23Qv, goo.gl/g7ku6D.
Cleanup old trans
This is a cleanup of old trans, with the following main points:
- Remove the `build.rs` API (prefer using `Builder` directly, which is now passed where needed through `BlockAndBuilder`).
- Remove `Block` (inlining it into `BlockAndBuilder`)
- Remove `Callee::call`, primarily through inlining and simplification of code.
- Thinned `FunctionContext`:
- `mir`, `debug_scopes`, `scopes`, and `fn_ty` are moved to `MirContext`.
- `param_env` is moved to `SharedCrateContext` and renamed to `empty_param_env`.
- `llretslotptr` is removed, replaced with more careful management of the return values in calls.
- `landingpad_alloca` is inlined into cleanup.
- `param_substs` are moved to `MirContext`.
- `span` is removed, it was never set to anything but `None`.
- `block_arena` and `lpad_arena` are removed, since neither was necessary (landing pads and block are quite small, and neither needs arena allocation).
- Fixed `drop_in_place` not running other destructors in the same function.
Fixes#35566 (thanks to @est31 for confirming).
mk: Fix compile with makefiles
A tweak was made to dependencies in #38451 but the makefiles weren't updated to
accompany this. Instead of trying to integerate the `build_helper` crate into
the makefiles (which currently isn't present) this commit takes the approach of
just duplicating the required logic, which should be small enough for now.
This does not make unreachable and other terminators take self by-value
because it is deemed too difficult. We would need to create by-value
methods on BAB that call into Builder, due to the Deref to builder.