Ralf Jung [Mon, 8 Jun 2020 07:55:22 +0000 (09:55 +0200)]
Rollup merge of #72615 - jschwe:fix-Zprofile-documentation, r=steveklabnik
Fix documentation example for gcov profiling
closes #72546
Improves the documentation for the unstable Rustflag `-Zprofile` by:
- stating that Incremental compilation must be turned off.
- Adding the other `RUSTFLAGS` that should/need to be turned on (taken from [grcov documentation](https://github.com/mozilla/grcov#example-how-to-generate-gcda-files-for-a-rust-project))
- Mentioning `RUSTC_WRAPPER` to prevent everything getting instrumented.
Ralf Jung [Mon, 8 Jun 2020 07:55:20 +0000 (09:55 +0200)]
Rollup merge of #72583 - CAD97:vec-iter-asref-slice, r=dtolnay
impl AsRef<[T]> for vec::IntoIter<T>
Adds `impl<T> AsRef<[T]> for vec::IntoIter<T>`. This mirrors the same trait impl for [`slice::Iter`](https://doc.rust-lang.org/nightly/std/slice/struct.Iter.html). Both types already offer `fn as_slice(&self) -> &[T]`, this just adds the trait impl for `vec::IntoIter`.
If/when `fn as_slice(&self) -> &[T]` stabilizes for `vec::Drain` and `slice::IterMut`, they should get `AsRef<[T]>` impls as well. As thus, tangentially related to #58957.
My ultimate goal here: being able to use `for<T, I: Iterator<Item=T> + AsRef<[T]>> I` to refer to `vec::IntoIter`, `vec::Drain`, and eventually `array::IntoIter`, as an approximation of the set of by-value iterators that can be "previewed" as by-ref iterators. (Actually expressing that as a trait requires GAT.)
Ralf Jung [Mon, 8 Jun 2020 07:55:18 +0000 (09:55 +0200)]
Rollup merge of #72026 - botika:master, r=estebank
Update annotate-snippets-rs to 0.8.0
#59346
I made major changes to this library. In the previous version we worked with owned while in the current one with borrowed.
I have adapted it without changing the behavior.
I have modified the coverage since the previous one did not return correctly the index of the character in the line.
Dylan DPC [Sun, 7 Jun 2020 16:11:27 +0000 (18:11 +0200)]
Rollup merge of #72952 - pnkfelix:regression-test-for-issue-70924, r=nikomatsakis
run-make regression test for issue #70924.
Sometime after my PR #72767 (to fix issue #70924) landed, I realized that I *could* make a local regression test, thanks to `rustc --print sysroot`: I can make a fresh "copy" (really mostly symlinks) of the sysroot, and then modify it to recreate the terms of this bug.
bors [Sun, 7 Jun 2020 14:14:34 +0000 (14:14 +0000)]
Auto merge of #73093 - Dylan-DPC:rollup-9gh5tyu, r=Dylan-DPC
Rollup of 5 pull requests
Successful merges:
- #72764 (Be more careful around ty::Error in generators)
- #72908 (rename FalseEdges -> FalseEdge)
- #72970 (Properly handle feature-gated lints)
- #72998 (Mention that some atomic operations may not be available on some platforms)
- #73063 (Elide type on liballoc vec)
bors [Sun, 7 Jun 2020 05:58:49 +0000 (05:58 +0000)]
Auto merge of #73072 - arcnmx:lld-noload, r=nikic
Update LLVM submodule to include lld NOLOAD fix
> Rust nightly 2020-05-22 and later ships lld with a regression related to linker scripts: NOLOAD sections incorrectly generate sections filled with 0s. This causes gdb and other elf loaders to write to reserved or otherwise invalid addresses (gdb also seems confused by the resulting ELF files and spits out a warning about the sections). This is particularly a problem for embedded rust projects that use lld by default and have affected linker scripts (cortex-m-rt based projects for instance).
https://github.com/rust-lang/llvm-project/pull/64
Note that this also pulls in llvm changes from #72937
Dylan DPC [Sun, 7 Jun 2020 00:28:58 +0000 (02:28 +0200)]
Rollup merge of #72993 - cuviper:beta-number, r=Mark-Simulacrum
Count the beta prerelease number just from master
We were computing a merge-base between the remote beta and master
branches, but this was giving incorrect answers for the first beta if
the remote hadn't been pushed yet. For instance, `1.45.0-beta.3359`
corresponds to the number of merges since the 1.44 beta, but we really
want just `.1` for the sole 1.45 beta promotion merge.
We don't really need to query the remote beta at all -- `master..HEAD`
suffices if we assume that we're on the intended beta branch already.
Dylan DPC [Sun, 7 Jun 2020 00:28:54 +0000 (02:28 +0200)]
Rollup merge of #72810 - RalfJung:mir-terminate-sanity, r=jonas-schievink
validate basic sanity for TerminatorKind
r? @jonas-schievink
This mainly checks that all `BasicBlock` actually exist. On top of that, it checks that `Call` actually calls something of `FnPtr`/`FnDef` type, and `Assert` has to work on a `bool`. Also `SwitchInt` cannot have an empty target list.
Ralf Jung [Sat, 6 Jun 2020 19:57:39 +0000 (21:57 +0200)]
Rollup merge of #72708 - petrochenkov:linkhack, r=cuviper
linker: Add a linker rerun hack for gcc versions not supporting -static-pie
Which mirrors the existing `-no-pie` linker rerun hack, but the logic is a bit more elaborated in this case.
If the linker (gcc or clang) errors on `-static-pie` we rerun in with `-static` instead.
We must also replace CRT objects corresponding to `-static-pie` with ones corresponding to `-static` in this case.
(One sanity check for CRT objects in target specs is also added as a drive-by fix.)
To do in the future: refactor all linker rerun hacks into separate functions and share more code with `add_(pre,post)_link_objects`.
This PR accompanies https://github.com/rust-lang/rust/pull/71804 and unblocks https://github.com/rust-lang/rust/pull/70740.
Ralf Jung [Sat, 6 Jun 2020 19:57:38 +0000 (21:57 +0200)]
Rollup merge of #72508 - ecstatic-morse:poly-self-ty, r=nikomatsakis
Make `PolyTraitRef::self_ty` return `Binder<Ty>`
This came up during review of #71618. The current implementation is the same as a call to `skip_binder` but harder to audit. Make it preserve binding levels and add a call to `skip_binder` at all use sites so they can be audited as part of #72507.
Ralf Jung [Sat, 6 Jun 2020 19:57:33 +0000 (21:57 +0200)]
Rollup merge of #71796 - RalfJung:from-secs, r=nikomatsakis
de-promote Duration::from_secs
In https://github.com/rust-lang/rust/pull/67531, we removed the `rustc_promotable` attribute from a bunch of `Duration` methods, but not from `Duration::from_secs`. This makes the current list of promotable functions the following (courtesy of @ecstatic-morse):
I feel like the last one stands out a bit here -- the rest are all very core language primitives, and `RawWaker` has a strong motivation for getting a `'static` vtable. But a `&'static Duration`? That seems unlikely. So I propose we no longer promote calls to `Duration::from_secs`, which is what this PR does.
https://github.com/rust-lang/rust/pull/67531 saw zero regressions and I am not aware of anyone complaining that this broke their (non-cratered) code, so I consider it likely the same will be true here, but of course we'd do a crater run.
See [this document](https://github.com/rust-lang/const-eval/blob/master/promotion.md) for some more background on promotion and https://github.com/rust-lang/const-eval/issues/19 for some of the concerns around promoting function calls.
bors [Fri, 5 Jun 2020 18:55:52 +0000 (18:55 +0000)]
Auto merge of #72982 - tblah:riscv-ui-tests, r=estebank
resolve: Sort E0408 errors by Symbol str
This is a request for comments implementing my suggested solution to https://github.com/rust-lang/rust/issues/72913
Previously errors were sorted by Symbol index instead of the string. The indexes are not the same between architectures because Symbols for architecture extensions (e.g. x86 AVX or RISC-V d) are interned before the source file is parsed. RISC-V's naming of extensions after single letters led to it having errors sorted differently for test cases using single letter variable names. Instead sort the errors by the Symbol string so that it is stable across architectures.
While I was at it, there's also 8edb05c2 skipping some ui tests which I think are irrelevant for risc-v.
bors [Fri, 5 Jun 2020 15:21:01 +0000 (15:21 +0000)]
Auto merge of #73025 - Dylan-DPC:rollup-a1uzj5u, r=Dylan-DPC
Rollup of 5 pull requests
Successful merges:
- #72260 (Spell out `Self` in async function return)
- #72996 (Remove unsused `NodeId` related APIs in hir map)
- #73010 (Update RELEASES.md)
- #73017 (Use assert_eq for liballoc test)
- #73019 (add test for #72960)
bors [Thu, 4 Jun 2020 23:17:05 +0000 (23:17 +0000)]
Auto merge of #72901 - ehuss:update-cargo, r=Mark-Simulacrum
Update cargo
9 commits in 9fcb8c1d20c17f51054f7aa4e08ff28d381fe096..40ebd52206e25c7a576ee42c137cc06a745a167a
2020-05-25 16:25:36 +0000 to 2020-06-01 22:35:00 +0000
- Warn if using hash in git URL, Fixes rust-lang/cargo#8241 (rust-lang/cargo#8297)
- reset lockfile information between resolutions (rust-lang/cargo#8274)
- Disable strip_works test on macos. (rust-lang/cargo#8301)
- Fix typo in impl Display for Strip (rust-lang/cargo#8299)
- Add support for rustdoc root URL mappings. (rust-lang/cargo#8287)
- Fix tests with enoent error message on non-english systems. (rust-lang/cargo#8295)
- Fix fingerprinting for lld on Windows with dylib. (rust-lang/cargo#8290)
- Fix a typo (rust-lang/cargo#8289)
- Fix several issues with close_output test. (rust-lang/cargo#8286)
Josh Stone [Thu, 4 Jun 2020 19:16:30 +0000 (12:16 -0700)]
Count the beta prerelease number just from master
We were computing a merge-base between the remote beta and master
branches, but this was giving incorrect answers for the first beta if
the remote hadn't been pushed yet. For instance, `1.45.0-beta.3359`
corresponds to the number of merges since the 1.44 beta, but we really
want just `.1` for the sole 1.45 beta promotion merge.
We don't really need to query the remote beta at all -- `master..HEAD`
suffices if we assume that we're on the intended beta branch already.
Tom Eccles [Tue, 2 Jun 2020 11:07:43 +0000 (12:07 +0100)]
resolve: Sort E0408 errors by Symbol str
Previously errors were sorted by Symbol index instead of the string. The
indexes are not the same between architectures because Symbols for
architecture extensions (e.g. x86 AVX or RISC-V d) are interned before
the source file is parsed. RISC-V's naming of extensions after single
letters led to it having errors sorted differently for test cases using
single letter variable names. Instead sort the errors by the Symbol
string so that it is stable across architectures.
Dylan DPC [Thu, 4 Jun 2020 10:12:52 +0000 (12:12 +0200)]
Rollup merge of #72964 - sajattack:libc-0.2.71-bump, r=Mark-Simulacrum
Bump libc dependency to latest version (0.2.71)
Hello,
Just a quick version bump PR. The rust-psp group had some changes merged to libc recently but they haven't made it into the compiler. We're looking to remove our forked version from our Xargo.toml. Thanks.
Dylan DPC [Thu, 4 Jun 2020 10:12:51 +0000 (12:12 +0200)]
Rollup merge of #72951 - rust-lang:Camelid-RustThanks, r=Mark-Simulacrum
Add Camelid per request
Email from @camelid:
> HI there,
>
> I’m a new contributor and I just looked at Rust Thanks and noticed that my contributions are listed under two different capitalizations of my name: “Camelid" and “camelid". Could you make them both “Camelid"?
>
> Thanks!
>
> Camelid
Dylan DPC [Thu, 4 Jun 2020 10:12:45 +0000 (12:12 +0200)]
Rollup merge of #72782 - petrochenkov:crtargs, r=varkor
rustc_target: Remove `pre_link_args_crt`
To regain some more control over the definition of `+crt-static` (https://github.com/rust-lang/rust/pull/71586).
After https://github.com/rust-lang/rust/pull/71769 this target option wasn't used anywhere except for VxWorks, and I suspect that for VxWorks its use may be redundant as well.
bors [Thu, 4 Jun 2020 04:38:48 +0000 (04:38 +0000)]
Auto merge of #72618 - Aaron1011:feature/early-sourcemap, r=petrochenkov
Make `SourceMap` available for early debug-printing of `Span`s
Normally, we debug-print `Spans` using the `SourceMap` retrieved from
the global `TyCtxt`. However, we fall back to printing out the `Span`'s
raw fields (instead of a file and line number) when we try to print a
`Span` before a `TyCtxt` is available. This makes debugging early phases
of the compile, such as parsing, much more difficult.
This commit stores a `SourceMap` in `rustc_span::GlOBALS` as a fallback.
When a `TyCtxt` is not available, we try to retrieve one from `GLOBALS`
- only if this is not available do we fall back to the raw field output.
I'm not sure how to write a test for this - however, this can be
verified locally by setting `RUSTC_LOG="rustc_parse=debug"`, and
verifying that the output contains filenames and line numbers.
> HI there,
>
> I’m a new contributor and I just looked at Rust Thanks and noticed that my contributions are listed under two different capitalizations of my name: “Camelid" and “camelid". Could you make them both “Camelid"?
>
> Thanks!
>
> Camelid