]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoRollup merge of #76939 - lcnr:const-evaluatable-cont, r=oli-obk
Dylan DPC [Wed, 23 Sep 2020 12:54:02 +0000 (14:54 +0200)]
Rollup merge of #76939 - lcnr:const-evaluatable-cont, r=oli-obk

emit errors during AbstractConst building

There changes are currently still untested, so I don't expect this to pass CI :laughing:

It seems to me like this is the direction we want to go in, though we didn't have too much of a discussion about this.

r? @oli-obk

3 years agoRollup merge of #76898 - Aaron1011:fix/item-def-span, r=oli-obk
Dylan DPC [Wed, 23 Sep 2020 12:54:00 +0000 (14:54 +0200)]
Rollup merge of #76898 - Aaron1011:fix/item-def-span, r=oli-obk

Record `tcx.def_span` instead of `item.span` in crate metadata

This was missed in PR #75465. As a result, a few places have been using
the full body span of functions, instead of just the header span.

3 years agoAuto merge of #76659 - simonvandel:76432, r=oli-obk
bors [Wed, 23 Sep 2020 08:23:00 +0000 (08:23 +0000)]
Auto merge of #76659 - simonvandel:76432, r=oli-obk

SimplifyComparisonIntegral: fix miscompilation

Fixes #76432
Only insert StorageDeads if we actually removed one.
Fixes an issue where we added StorageDead to a place with no StorageLive

r? `@oli-obk`

3 years agoAuto merge of #76850 - ecstatic-morse:const-checking-refactor, r=oli-obk
bors [Wed, 23 Sep 2020 05:40:35 +0000 (05:40 +0000)]
Auto merge of #76850 - ecstatic-morse:const-checking-refactor, r=oli-obk

Remove `qualify_min_const_fn`

~~Blocked on #76807 (the first six commits).~~

With this PR, all checks in `qualify_min_const_fn` are replicated in `check_consts`, and the former is no longer invoked. My goal was to have as few changes to test output as possible, since making sweeping changes to the code *while* doing big batches of diagnostics updates turned out to be a headache. To this end, there's a few `HACK`s in `check_consts` to achieve parity with `qualify_min_const_fn`.

The new system that replaces `is_min_const_fn` is referred to as "const-stability"  My end goal for the const-stability rules is this:
* Const-stability is only applicable to functions defined in `staged_api` crates.
* All functions not marked `rustc_const_unstable` are considered "const-stable".
    - NB. This is currently not implemented. `#[unstable]` functions are also const-unstable. This causes problems when searching for feature gates.
    - All "const-unstable" functions have an associated feature gate
* const-stable functions can only call other const-stable functions
     - `allow_internal_unstable` can be used to circumvent this.
* All const-stable functions are subject to some additional checks (the ones that were unique to `qualify_min_const_fn`)

The plan is to remove each `HACK` individually in subsequent PRs. That way, changes to error message output can be reviewed in isolation.

3 years agoAuto merge of #77063 - cuviper:llvm-11.0.0-rc3, r=nikic
bors [Wed, 23 Sep 2020 02:15:38 +0000 (02:15 +0000)]
Auto merge of #77063 - cuviper:llvm-11.0.0-rc3, r=nikic

Rebase LLVM onto 11.0.0-rc3

r? `@nikic`

3 years agoAuto merge of #76928 - lcnr:opaque-types-cache, r=tmandry
bors [Tue, 22 Sep 2020 22:52:07 +0000 (22:52 +0000)]
Auto merge of #76928 - lcnr:opaque-types-cache, r=tmandry

cache types during normalization

partially fixes #75992

reduces the following test from 14 to 3 seconds locally.

cc `@Mark-Simulacrum` would it make sense to add that test to `perf`?
```rust
#![recursion_limit="2048"]
#![type_length_limit="112457564"]

pub async fn h0(v: &String, x: &u64) { println!("{} {}", v, x) }
pub async fn h1(v: &String, x: &u64) { h0(v, x).await }
pub async fn h2(v: &String, x: &u64) { h1(v, x).await }
pub async fn h3(v: &String, x: &u64) { h2(v, x).await }
pub async fn h4(v: &String, x: &u64) { h3(v, x).await }
pub async fn h5(v: &String, x: &u64) { h4(v, x).await }
pub async fn h6(v: &String, x: &u64) { h5(v, x).await }
pub async fn h7(v: &String, x: &u64) { h6(v, x).await }
pub async fn h8(v: &String, x: &u64) { h7(v, x).await }
pub async fn h9(v: &String, x: &u64) { h8(v, x).await }

pub async fn h10(v: &String, x: &u64) { h9(v, x).await }
pub async fn h11(v: &String, x: &u64) { h10(v, x).await }
pub async fn h12(v: &String, x: &u64) { h11(v, x).await }
pub async fn h13(v: &String, x: &u64) { h12(v, x).await }
pub async fn h14(v: &String, x: &u64) { h13(v, x).await }
pub async fn h15(v: &String, x: &u64) { h14(v, x).await }
pub async fn h16(v: &String, x: &u64) { h15(v, x).await }
pub async fn h17(v: &String, x: &u64) { h16(v, x).await }
pub async fn h18(v: &String, x: &u64) { h17(v, x).await }
pub async fn h19(v: &String, x: &u64) { h18(v, x).await }

macro_rules! async_recursive {
    (29, $inner:expr) => { async { async_recursive!(28, $inner) }.await };
    (28, $inner:expr) => { async { async_recursive!(27, $inner) }.await };
    (27, $inner:expr) => { async { async_recursive!(26, $inner) }.await };
    (26, $inner:expr) => { async { async_recursive!(25, $inner) }.await };
    (25, $inner:expr) => { async { async_recursive!(24, $inner) }.await };
    (24, $inner:expr) => { async { async_recursive!(23, $inner) }.await };
    (23, $inner:expr) => { async { async_recursive!(22, $inner) }.await };
    (22, $inner:expr) => { async { async_recursive!(21, $inner) }.await };
    (21, $inner:expr) => { async { async_recursive!(20, $inner) }.await };
    (20, $inner:expr) => { async { async_recursive!(19, $inner) }.await };

    (19, $inner:expr) => { async { async_recursive!(18, $inner) }.await };
    (18, $inner:expr) => { async { async_recursive!(17, $inner) }.await };
    (17, $inner:expr) => { async { async_recursive!(16, $inner) }.await };
    (16, $inner:expr) => { async { async_recursive!(15, $inner) }.await };
    (15, $inner:expr) => { async { async_recursive!(14, $inner) }.await };
    (14, $inner:expr) => { async { async_recursive!(13, $inner) }.await };
    (13, $inner:expr) => { async { async_recursive!(12, $inner) }.await };
    (12, $inner:expr) => { async { async_recursive!(11, $inner) }.await };
    (11, $inner:expr) => { async { async_recursive!(10, $inner) }.await };
    (10, $inner:expr) => { async { async_recursive!(9, $inner) }.await };

    (9, $inner:expr) => { async { async_recursive!(8, $inner) }.await };
    (8, $inner:expr) => { async { async_recursive!(7, $inner) }.await };
    (7, $inner:expr) => { async { async_recursive!(6, $inner) }.await };
    (6, $inner:expr) => { async { async_recursive!(5, $inner) }.await };
    (5, $inner:expr) => { async { async_recursive!(4, $inner) }.await };
    (4, $inner:expr) => { async { async_recursive!(3, $inner) }.await };
    (3, $inner:expr) => { async { async_recursive!(2, $inner) }.await };
    (2, $inner:expr) => { async { async_recursive!(1, $inner) }.await };
    (1, $inner:expr) => { async { async_recursive!(0, $inner) }.await };
    (0, $inner:expr) => { async { h19(&String::from("owo"), &0).await; $inner }.await };
}

async fn f() {
    async_recursive!(14, println!("hello"));
}

fn main() {
    let _ = f();
}
```
r? `@eddyb` requires a perf run.

3 years agoAuto merge of #76810 - Mark-Simulacrum:fix-lld-macos, r=alexcrichton
bors [Tue, 22 Sep 2020 20:35:45 +0000 (20:35 +0000)]
Auto merge of #76810 - Mark-Simulacrum:fix-lld-macos, r=alexcrichton

Don't dynamically link LLVM tools unless rustc is too

This PR initially tried to support link-shared on all of our target platforms (other than Windows), but ran into a number of difficulties:
 * LLVM doesn't really support a shared link on macOS (llvm-config runs into problems with the version suffix)
 * LLVM doesn't seem to support a shared link when cross-compiling (the libLLVM.so ends up empty and symbols are not found)

So, this PR has now been revised such that we don't attempt to dynamically link LLVM tools (even if that would, otherwise, be supported) on targets where LLVM is statically linked to rustc. Currently that's basically everything except for x86_64-unknown-linux-gnu (where we dynamically link to avoid rerunning ThinLTO in each stage).

Follow-up to #76708.
Fixes #76698.

3 years agoUse correct feature gate for unsizing casts
Dylan MacKenzie [Tue, 22 Sep 2020 17:21:58 +0000 (10:21 -0700)]
Use correct feature gate for unsizing casts

3 years agoAdd `#![feature(const_fn_transmute)]` to `rustc_ast`
Dylan MacKenzie [Tue, 22 Sep 2020 17:21:45 +0000 (10:21 -0700)]
Add `#![feature(const_fn_transmute)]` to `rustc_ast`

3 years agoRebase LLVM onto 11.0.0-rc3
Josh Stone [Tue, 22 Sep 2020 17:16:03 +0000 (10:16 -0700)]
Rebase LLVM onto 11.0.0-rc3

3 years agoReplace missing comment
Dylan MacKenzie [Fri, 18 Sep 2020 16:19:36 +0000 (09:19 -0700)]
Replace missing comment

3 years agoUse the same name everywhere for `is_const_stable_const_fn`
Dylan MacKenzie [Fri, 18 Sep 2020 16:17:13 +0000 (09:17 -0700)]
Use the same name everywhere for `is_const_stable_const_fn`

3 years agoBless compile-fail
Dylan MacKenzie [Thu, 17 Sep 2020 19:48:09 +0000 (12:48 -0700)]
Bless compile-fail

3 years agoBless tests
Dylan MacKenzie [Thu, 17 Sep 2020 17:32:07 +0000 (10:32 -0700)]
Bless tests

3 years agoUpdate const-checker to replicate `qualify_min_const_fn`
Dylan MacKenzie [Thu, 17 Sep 2020 18:14:11 +0000 (11:14 -0700)]
Update const-checker to replicate `qualify_min_const_fn`

3 years agoAdd structured errors for `qualify_min_const_fn` checks
Dylan MacKenzie [Thu, 17 Sep 2020 18:12:13 +0000 (11:12 -0700)]
Add structured errors for `qualify_min_const_fn` checks

3 years agoAllow errors to abort const checking when emitted
Dylan MacKenzie [Thu, 17 Sep 2020 18:09:52 +0000 (11:09 -0700)]
Allow errors to abort const checking when emitted

This is a hack for parity with `qualify_min_const_fn`, which only
emitted a single error.

3 years agoReturn `true` if `check_const` emits an error
Dylan MacKenzie [Thu, 17 Sep 2020 18:08:43 +0000 (11:08 -0700)]
Return `true` if `check_const` emits an error

3 years agoAdd const-stability helpers
Dylan MacKenzie [Thu, 17 Sep 2020 18:05:51 +0000 (11:05 -0700)]
Add const-stability helpers

3 years agoUpdate library functions with stability attributes
Dylan MacKenzie [Thu, 17 Sep 2020 18:02:56 +0000 (11:02 -0700)]
Update library functions with stability attributes

This may not be strictly minimal, but all unstable functions also need a
`rustc_const_unstable` attribute.

3 years agoUseful derives on `ops::Status`
Dylan MacKenzie [Thu, 17 Sep 2020 18:10:36 +0000 (11:10 -0700)]
Useful derives on `ops::Status`

3 years agoAuto merge of #76110 - FedericoPonzi:convert-openoptions-cint, r=JoshTriplett
bors [Tue, 22 Sep 2020 13:02:02 +0000 (13:02 +0000)]
Auto merge of #76110 - FedericoPonzi:convert-openoptions-cint, r=JoshTriplett

Function to convert OpenOptions to c_int

Fixes: #74943
The creation_mode and access_mode function were already available in the OpenOptions struct, but currently private. I've added a new free functions to unix/fs.rs which takes the OpenOptions, and returns the c_int to be used as parameter for the `open` call.

3 years agoAuto merge of #76626 - jyn514:x.py-changelog, r=Mark-Simulacrum
bors [Tue, 22 Sep 2020 10:36:41 +0000 (10:36 +0000)]
Auto merge of #76626 - jyn514:x.py-changelog, r=Mark-Simulacrum

Add a changelog for x.py and nag contributors until they read it

Add a changelog for x.py

- Add a changelog and instructions for updating it
- Use `changelog-seen` in `config.toml` and `VERSION` in bootstrap to determine whether the changelog has been read.  There's no way to tie reading the changelog to updating the version, so unfortunately they still have to update `config.toml` manually. Actually reading the changelog is optional, anyone can set `changelog-seen = N` without reading (although it's not recommended).
- Nag people if they haven't read the x.py changelog
  + Print message twice to make sure it's seen
- Give different error messages depending on whether the version needs to be updated or added

Closes https://github.com/rust-lang/rust/issues/76617
r? `@Mark-Simulacrum`

3 years agoenable unstable open_options_ext_as_flags feature in doc comments
Federico Ponzi [Tue, 22 Sep 2020 08:54:36 +0000 (09:54 +0100)]
enable unstable open_options_ext_as_flags feature in doc comments

3 years agoAuto merge of #76906 - Nicholas-Baron:shorten_typeck_check, r=oli-obk
bors [Tue, 22 Sep 2020 08:11:07 +0000 (08:11 +0000)]
Auto merge of #76906 - Nicholas-Baron:shorten_typeck_check, r=oli-obk

Split rustc_typeck::check into separate files

Contributing to #60302.

3 years agoAuto merge of #76799 - Mark-Simulacrum:fix-cross-compile-dist, r=alexcrichton
bors [Tue, 22 Sep 2020 06:02:21 +0000 (06:02 +0000)]
Auto merge of #76799 - Mark-Simulacrum:fix-cross-compile-dist, r=alexcrichton

Fix cross compiling dist/build invocations

I am uncertain why the first commit is not affecting CI. I suspect it's because we pass --disable-docs on most of our cross-compilation builders. The second commit doesn't affect CI because CI runs x.py dist, not x.py build.

Both commits are standalone; together they should resolve #76733. The first commit doesn't really fix that issue but rather just fixes cross-compiled x.py dist, resolving a bug introduced in #76549.

3 years agoAuto merge of #77039 - ecstatic-morse:rollup-qv3jj4a, r=ecstatic-morse
bors [Tue, 22 Sep 2020 03:45:30 +0000 (03:45 +0000)]
Auto merge of #77039 - ecstatic-morse:rollup-qv3jj4a, r=ecstatic-morse

Rollup of 13 pull requests

Successful merges:

 - #72734 (Reduce duplicate in liballoc reserve error handling)
 - #76131 (Don't use `zip` to compare iterators during pretty-print hack)
 - #76150 (Don't recommend ManuallyDrop to customize drop order)
 - #76275 (Implementation of Write for some immutable ref structs)
 - #76489 (Add explanation for E0756)
 - #76581 (do not ICE on bound variables, return `TooGeneric` instead)
 - #76655 (Make some methods of `Pin` unstable const)
 - #76783 (Only get ImplKind::Impl once)
 - #76807 (Use const-checking to forbid use of unstable features in const-stable functions)
 - #76888 (use if let instead of single match arm expressions)
 - #76914 (extend `Ty` and `TyCtxt` lints to self types)
 - #77022 (Reduce boilerplate for BytePos and CharPos)
 - #77032 (lint missing docs for extern items)

Failed merges:

r? `@ghost`

3 years agoRollup merge of #77032 - lcnr:visit-all-the-item-likes, r=davidtwco
ecstatic-morse [Tue, 22 Sep 2020 03:41:01 +0000 (20:41 -0700)]
Rollup merge of #77032 - lcnr:visit-all-the-item-likes, r=davidtwco

lint missing docs for extern items

fixes #76991

3 years agoRollup merge of #77022 - Juici:master, r=lcnr
ecstatic-morse [Tue, 22 Sep 2020 03:40:59 +0000 (20:40 -0700)]
Rollup merge of #77022 - Juici:master, r=lcnr

Reduce boilerplate for BytePos and CharPos

Reduces boilerplate code for BytePos and CharPos by using a macro to implement shared traits.

3 years agoRollup merge of #76914 - lcnr:path-no-more, r=ecstatic-morse
ecstatic-morse [Tue, 22 Sep 2020 03:40:57 +0000 (20:40 -0700)]
Rollup merge of #76914 - lcnr:path-no-more, r=ecstatic-morse

extend `Ty` and `TyCtxt` lints to self types

blocked on #76891

r? @ecstatic-morse cc @Aaron1011

3 years agoRollup merge of #76888 - matthiaskrgr:clippy_single_match_2, r=Dylan-DPC
ecstatic-morse [Tue, 22 Sep 2020 03:40:55 +0000 (20:40 -0700)]
Rollup merge of #76888 - matthiaskrgr:clippy_single_match_2, r=Dylan-DPC

use if let instead of single match arm expressions

use if let instead of single match arm expressions to compact code and reduce nesting (clippy::single_match)

3 years agoRollup merge of #76807 - ecstatic-morse:const-checking-staged-api, r=oli-obk
ecstatic-morse [Tue, 22 Sep 2020 03:40:53 +0000 (20:40 -0700)]
Rollup merge of #76807 - ecstatic-morse:const-checking-staged-api, r=oli-obk

Use const-checking to forbid use of unstable features in const-stable functions

First step towards #76618.

Currently this code isn't ever hit because `qualify_min_const_fn` runs first and catches pretty much everything. One exception is `const_precise_live_drops`, which does not use the newly added code since it runs as part of a separate pass.

Also contains some unrelated refactoring, which is split into separate commits.

r? @oli-obk

3 years agoRollup merge of #76783 - lzutao:rd_impl_kind, r=GuillaumeGomez
ecstatic-morse [Tue, 22 Sep 2020 03:40:51 +0000 (20:40 -0700)]
Rollup merge of #76783 - lzutao:rd_impl_kind, r=GuillaumeGomez

Only get ImplKind::Impl once

With this, the code panics in one place instead of two.

3 years agoRollup merge of #76655 - CDirkx:const-pin, r=ecstatic-morse
ecstatic-morse [Tue, 22 Sep 2020 03:40:49 +0000 (20:40 -0700)]
Rollup merge of #76655 - CDirkx:const-pin, r=ecstatic-morse

Make some methods of `Pin` unstable const

Make the following methods unstable const under the `const_pin` feature:
- `new`
- `new_unchecked`
- `into_inner`
- `into_inner_unchecked`
- `get_ref`
- `into_ref`
- `get_mut`
- `get_unchecked_mut`

Of these, `into_inner` and `into_inner_unchecked` require the unstable `const_precise_live_drops`.

Also adds tests for these methods in a const context.

Tracking issue: #76654

r? @ecstatic-morse

3 years agoRollup merge of #76581 - lcnr:bound-too-generic, r=eddyb
ecstatic-morse [Tue, 22 Sep 2020 03:40:47 +0000 (20:40 -0700)]
Rollup merge of #76581 - lcnr:bound-too-generic, r=eddyb

do not ICE on bound variables, return `TooGeneric` instead

fixes #73260, fixes #74634, fixes #76595

r? @nikomatsakis

3 years agoRollup merge of #76489 - GuillaumeGomez:add-explanation-e0756, r=jyn514
ecstatic-morse [Tue, 22 Sep 2020 03:40:46 +0000 (20:40 -0700)]
Rollup merge of #76489 - GuillaumeGomez:add-explanation-e0756, r=jyn514

Add explanation for E0756

r? @pickfire

3 years agoRollup merge of #76275 - FedericoPonzi:immutable-write-impl-73836, r=dtolnay
ecstatic-morse [Tue, 22 Sep 2020 03:40:44 +0000 (20:40 -0700)]
Rollup merge of #76275 - FedericoPonzi:immutable-write-impl-73836, r=dtolnay

Implementation of Write for some immutable ref structs

Fixes  #73836

3 years agoRollup merge of #76150 - matklad:droporder, r=withoutboats
ecstatic-morse [Tue, 22 Sep 2020 03:40:41 +0000 (20:40 -0700)]
Rollup merge of #76150 - matklad:droporder, r=withoutboats

Don't recommend ManuallyDrop to customize drop order

See
https://internals.rust-lang.org/t/need-for-controlling-drop-order-of-fields/12914/21
for the discussion.

TL;DR: ManuallyDrop is unsafe and footguny, but you can just ask the compiler to do all the work for you by re-ordering declarations.

Specifically, the original example from the docs is much better written as

```rust
struct Peach;
struct Banana;
struct Melon;
struct FruitBox {
    melon: Melon,
    // XXX: mind the relative drop order of the fields below
    peach: Peach,
    banana: Banana,
}
```

3 years agoRollup merge of #76131 - Aaron1011:fix/pretty-print-zip, r=lcnr
ecstatic-morse [Tue, 22 Sep 2020 03:40:39 +0000 (20:40 -0700)]
Rollup merge of #76131 - Aaron1011:fix/pretty-print-zip, r=lcnr

Don't use `zip` to compare iterators during pretty-print hack

If the right-hand iterator has exactly one more element than the
left-hand iterator, then both iterators will be fully consumed, but
the extra element will never be compared.

Split out from https://github.com/rust-lang/rust/pull/76130

3 years agoRollup merge of #72734 - pickfire:liballoc, r=KodrAus
ecstatic-morse [Tue, 22 Sep 2020 03:40:37 +0000 (20:40 -0700)]
Rollup merge of #72734 - pickfire:liballoc, r=KodrAus

Reduce duplicate in liballoc reserve error handling

Not sure if it affects compilation time.

3 years agoAuto merge of #76913 - vandenheuvel:performance_debug, r=lcnr
bors [Tue, 22 Sep 2020 00:22:24 +0000 (00:22 +0000)]
Auto merge of #76913 - vandenheuvel:performance_debug, r=lcnr

Fixing the performance regression of #76244

Issue https://github.com/rust-lang/rust/issues/74865 suggested that removing the `def_id` field from `ParamEnv` would improve performance. PR https://github.com/rust-lang/rust/pull/76244 implemented this change.

Generally, [results](https://perf.rust-lang.org/compare.html?start=80fc9b0ecb29050d45b17c64af004200afd3cfc2&end=5ef250dd2ad618ee339f165e9b711a1b4746887d) were as expected: an instruction count decrease of about a percent. The instruction count for the unicode crates increased by about 3%, which `@nnethercote` speculated to be caused by a quirk of inlining or codegen. As the results were generally positive, and for chalk integration, this was also a step in the right direction, the PR was r+'d regardless.

However, [wall-time performance results](https://perf.rust-lang.org/compare.html?start=a055c5a1bd95e029e9b31891db63b6dc8258b472&end=7402a394471a6738a40fea7d4f1891666e5a80c5&stat=task-clock) show a much larger performance degradation: 25%, as [mentioned](https://github.com/rust-lang/rust/pull/76244#issuecomment-694459840) by `@Mark-Simulacrum.`

This PR, for now, reverts #76244 and attempts to find out, which change caused the regression.

3 years agoAuto merge of #76683 - simonvandel:inst-combine-deref, r=oli-obk
bors [Mon, 21 Sep 2020 22:04:16 +0000 (22:04 +0000)]
Auto merge of #76683 - simonvandel:inst-combine-deref, r=oli-obk

Add optimization to avoid load of address

Look for the sequence
```rust
_2 = &_1;
...
_5 = (*_2)
```

in which we can replace the last statement with `_5 = _1` to avoid the load of _2

3 years agolint missing docs for extern items
Bastian Kauschke [Mon, 21 Sep 2020 21:48:39 +0000 (23:48 +0200)]
lint missing docs for extern items

3 years agoreview
Bastian Kauschke [Mon, 21 Sep 2020 21:25:52 +0000 (23:25 +0200)]
review

3 years agoRun the test with explicit -O such that Add is generated instead of CheckedAdd
Simon Vandel Sillesen [Mon, 21 Sep 2020 20:15:30 +0000 (22:15 +0200)]
Run the test with explicit -O such that Add is generated instead of CheckedAdd

This makes the test run deterministic regardless of noopt testruns

3 years agoAdd optimization to avoid load of address
Simon Vandel Sillesen [Sun, 13 Sep 2020 20:38:36 +0000 (22:38 +0200)]
Add optimization to avoid load of address

3 years agoadd test for closures in abstract consts
Bastian Kauschke [Mon, 21 Sep 2020 20:01:18 +0000 (22:01 +0200)]
add test for closures in abstract consts

3 years agoAuto merge of #77003 - joshtriplett:remove-duplicate-link-libraries, r=Mark-Simulacrum
bors [Mon, 21 Sep 2020 19:52:13 +0000 (19:52 +0000)]
Auto merge of #77003 - joshtriplett:remove-duplicate-link-libraries, r=Mark-Simulacrum

Remove duplicated library links between std and libc

The libc crate is already responsible for linking in the appropriate
libraries, and std doing the same thing results in duplicated library
names on the linker command line. Removing this duplication slightly
reduces linker time, and makes it simpler to adjust the set or order of
linked libraries in one place (such as to add static linking support).

3 years agobless tests
Bastian Kauschke [Mon, 21 Sep 2020 19:50:00 +0000 (21:50 +0200)]
bless tests

3 years agoDon't use `zip` to compare iterators during pretty-print hack
Aaron Hill [Sun, 30 Aug 2020 22:08:16 +0000 (18:08 -0400)]
Don't use `zip` to compare iterators during pretty-print hack

If the right-hand iterator has exactly one more element than the
left-hand iterator, then both iterators will be fully consumed, but
the extra element will never be compared.

3 years agoRecord `tcx.def_span` instead of `item.span` in crate metadata
Aaron Hill [Sat, 19 Sep 2020 01:49:11 +0000 (21:49 -0400)]
Record `tcx.def_span` instead of `item.span` in crate metadata

This was missed in PR #75465. As a result, a few places have been using
the full body span of functions, instead of just the header span.

3 years agoAdd explanation for E0756
Guillaume Gomez [Tue, 8 Sep 2020 19:02:18 +0000 (21:02 +0200)]
Add explanation for E0756

3 years agoRemove cast to usize for BytePos and CharPos
James Whaley [Mon, 21 Sep 2020 18:42:43 +0000 (19:42 +0100)]
Remove cast to usize for BytePos and CharPos

The case shouldn't be necessary and implicitly truncating BytePos is not
desirable.

3 years agoadd test
Bastian Kauschke [Mon, 21 Sep 2020 18:28:52 +0000 (20:28 +0200)]
add test

3 years agoAuto merge of #76680 - Julian-Wollersberger:nongeneric_ensure_sufficient_stack, r...
bors [Mon, 21 Sep 2020 17:32:57 +0000 (17:32 +0000)]
Auto merge of #76680 - Julian-Wollersberger:nongeneric_ensure_sufficient_stack, r=jyn514

Make `ensure_sufficient_stack()` non-generic, using cargo-llvm-lines

Inspired by [this blog post](https://blog.mozilla.org/nnethercote/2020/08/05/how-to-speed-up-the-rust-compiler-some-more-in-2020/) from `@nnethercote,` I used [cargo-llvm-lines](https://github.com/dtolnay/cargo-llvm-lines/) on the rust compiler itself, to improve it's compile time. This PR contains only one low-hanging fruit, but I also want to share some measurements.

The function `ensure_sufficient_stack()` was monomorphized 1500 times, and with it the `stacker` and `psm` crates, for a total of 1.5% of all llvm IR lines. With some trickery I convert the generic closure into a dynamic one, and thus all that code is only monomorphized once.

# Measurements
Getting these numbers took some fiddling with CLI flags and I [modified](https://github.com/Julian-Wollersberger/cargo-llvm-lines/blob/master/src/main.rs#L115) cargo-llvm-lines to read from a folder instead of invoking cargo. Commands I used:
```
./x.py clean
RUSTFLAGS="--emit=llvm-ir -C link-args=-fuse-ld=lld -Z self-profile=profile" CARGOFLAGS_BOOTSTRAP="-Ztimings" RUSTC_BOOTSTRAP=1 ./x.py build -i --stage 1 library/std

# Then manually copy all .ll files into a folder I hardcoded in cargo-llvm-lines in main.rs#L115
cd ../cargo-llvm-lines
cargo run llvm-lines
```

The result is this list (see [first 500 lines](https://github.com/Julian-Wollersberger/cargo-llvm-lines/blob/master/llvm-lines-rustc-before.txt) ), before the change:
```
  Lines            Copies        Function name
  -----            ------        -------------
  16894211 (100%)  58417 (100%)  (TOTAL)
   2223855 (13.2%)   502 (0.9%)  rustc_query_system::query::plumbing::get_query_impl::{{closure}}
   1331918 (7.9%)   1287 (2.2%)  hashbrown::raw::RawTable<T>::reserve_rehash
    774434 (4.6%)  12043 (20.6%) core::ptr::drop_in_place
    294170 (1.7%)    499 (0.9%)  rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
    245410 (1.5%)   1552 (2.7%)  psm::on_stack::with_on_stack
    210311 (1.2%)      1 (0.0%)  rustc_target::spec::load_specific
    200962 (1.2%)    513 (0.9%)  rustc_query_system::query::plumbing::get_query_impl
    190704 (1.1%)      1 (0.0%)  rustc_middle::ty::query::<impl rustc_middle::ty::context::TyCtxt>::alloc_self_profile_query_strings
    180272 (1.1%)    468 (0.8%)  rustc_query_system::query::plumbing::load_from_disk_and_cache_in_memory
    177396 (1.1%)    114 (0.2%)  rustc_query_system::query::plumbing::force_query_impl
    161134 (1.0%)    445 (0.8%)  rustc_query_system::dep_graph::graph::DepGraph<K>::with_anon_task
    141551 (0.8%)    186 (0.3%)  rustc_query_system::query::plumbing::incremental_verify_ich
    110191 (0.7%)      7 (0.0%)  rustc_middle::ty::context::_DERIVE_rustc_serialize_Decodable_D_FOR_TypeckResults::<impl rustc_serialize::serialize::Decodable<__D> for rustc_middle::ty::context::TypeckResults>::decode::{{closure}}
    108590 (0.6%)    420 (0.7%)  core::ops::function::FnOnce::call_once
     88488 (0.5%)     21 (0.0%)  rustc_query_system::dep_graph::graph::DepGraph<K>::try_mark_previous_green
     86368 (0.5%)      1 (0.0%)  rustc_middle::ty::query::stats::query_stats
     85654 (0.5%)   3973 (6.8%)  <&T as core::fmt::Debug>::fmt
     84475 (0.5%)      1 (0.0%)  rustc_middle::ty::query::Queries::try_collect_active_jobs
     81220 (0.5%)    862 (1.5%)  <hashbrown::raw::RawIterHash<T> as core::iter::traits::iterator::Iterator>::next
     77636 (0.5%)     54 (0.1%)  core::slice::sort::recurse
     66484 (0.4%)    461 (0.8%)  <hashbrown::raw::RawIter<T> as core::iter::traits::iterator::Iterator>::next
```

All `.ll` files together had 4.4GB. After my change they had 4.2GB. So a few percent less code LLVM has to process. Hurray!
Sadly, I couldn't measure an actual wall-time improvement. Watching YouTube while compiling added to much noise...

Here is the top of the list after the change:
```
  16460866 (100%)  58341 (100%)  (TOTAL)
   1903085 (11.6%)   504 (0.9%)  rustc_query_system::query::plumbing::get_query_impl::{{closure}}
   1331918 (8.1%)   1287 (2.2%)  hashbrown::raw::RawTable<T>::reserve_rehash
    777796 (4.7%)  12031 (20.6%) core::ptr::drop_in_place
    551462 (3.4%)   1519 (2.6%)  rustc_data_structures::stack::ensure_sufficient_stack::{{closure}}
```
Note that the total was reduced by 430 000 lines and `psm::on_stack::with_on_stack` has disappeared. Instead `rustc_data_structures::stack::ensure_sufficient_stack::{{closure}}` appeared. I'm confused about that one, but it seems to consist of inlined calls to `rustc_query_system::*` stuff.

Further note the other two big culprits in this list: `rustc_query_system` and `hashbrown`. These two are monomorphized many times, the query system summing to more than 20% of all lines, not even counting code that's probably inlined elsewhere.
Assuming compile times scale linearly with llvm-lines, that means a possible 20% compile time reduction.

Reducing eg. `get_query_impl` would probably need a major refactoring of the qery system though. _Everything_ in there is generic over multiple types, has associated types and passes generic Self arguments by value. Which means you can't simply make things `dyn`.

---------------------------------------
This PR is a small step to make rustc compile faster and thus make contributing to rustc less painful. Nonetheless I love Rust and I find the work around rustc fascinating :)

3 years agoReduce boilerplate for BytePos and CharPos
James Whaley [Mon, 21 Sep 2020 17:27:43 +0000 (18:27 +0100)]
Reduce boilerplate for BytePos and CharPos

3 years agoAdded back the '// ignore-file-length' with an explanation
Nicholas-Baron [Mon, 21 Sep 2020 16:16:55 +0000 (09:16 -0700)]
Added back the '// ignore-file-length' with an explanation

3 years agoAuto merge of #77013 - RalfJung:rollup-84ut0xq, r=RalfJung
bors [Mon, 21 Sep 2020 15:06:20 +0000 (15:06 +0000)]
Auto merge of #77013 - RalfJung:rollup-84ut0xq, r=RalfJung

Rollup of 10 pull requests

Successful merges:

 - #76439 (Add error explanation for E0755)
 - #76521 (Fix segfault if pthread_getattr_np fails)
 - #76835 (make replace_prefix only take &str as arguments )
 - #76967 (Revert adding Atomic::from_mut.)
 - #76977 (Add a regression test for copy propagation miscompilation)
 - #76981 (liballoc bench use imported path Bencher)
 - #76983 (BTreeMap: extra testing & fixed comments)
 - #76996 (Fix typo in rustc_lexer docs)
 - #77009 (Dogfood total_cmp in the test crate)
 - #77012 (update Miri for another bugfix)

Failed merges:

 - #76489 (Add explanation for E0756)

r? `@ghost`

3 years agoRollup merge of #77012 - RalfJung:miri, r=RalfJung
Ralf Jung [Mon, 21 Sep 2020 13:30:51 +0000 (15:30 +0200)]
Rollup merge of #77012 - RalfJung:miri, r=RalfJung

update Miri for another bugfix

3 years agoRollup merge of #77009 - est31:dogfood_total_cmp, r=lcnr
Ralf Jung [Mon, 21 Sep 2020 13:30:49 +0000 (15:30 +0200)]
Rollup merge of #77009 - est31:dogfood_total_cmp, r=lcnr

Dogfood total_cmp in the test crate

3 years agoRollup merge of #76996 - LingMan:patch-1, r=ecstatic-morse
Ralf Jung [Mon, 21 Sep 2020 13:30:47 +0000 (15:30 +0200)]
Rollup merge of #76996 - LingMan:patch-1, r=ecstatic-morse

Fix typo in rustc_lexer docs

Also add an Oxford comma while we're editing that line.

3 years agoRollup merge of #76983 - ssomers:btree_extra_test, r=Mark-Simulacrum
Ralf Jung [Mon, 21 Sep 2020 13:30:46 +0000 (15:30 +0200)]
Rollup merge of #76983 - ssomers:btree_extra_test, r=Mark-Simulacrum

BTreeMap: extra testing & fixed comments

r? @Mark-Simulacrum

3 years agoRollup merge of #76981 - pickfire:patch-5, r=Mark-Simulacrum
Ralf Jung [Mon, 21 Sep 2020 13:30:44 +0000 (15:30 +0200)]
Rollup merge of #76981 - pickfire:patch-5, r=Mark-Simulacrum

liballoc bench use imported path Bencher

test is already in scope, no need to use the full path

3 years agoRollup merge of #76977 - tmiasko:issue-76740, r=wesleywiser
Ralf Jung [Mon, 21 Sep 2020 13:30:42 +0000 (15:30 +0200)]
Rollup merge of #76977 - tmiasko:issue-76740, r=wesleywiser

Add a regression test for copy propagation miscompilation

3 years agoRollup merge of #76967 - fusion-engineering-forks:revert-atomic-from-mut, r=kodrAus
Ralf Jung [Mon, 21 Sep 2020 13:30:41 +0000 (15:30 +0200)]
Rollup merge of #76967 - fusion-engineering-forks:revert-atomic-from-mut, r=kodrAus

Revert adding Atomic::from_mut.

This reverts #74532, which made too many assumptions about platforms, breaking some things.

Will need to be added later with a better way of gating on proper alignment, without hardcoding cfg(target_arch)s.

---

To be merged if fixing from_mut (#76965) takes too long.

r? @ghost

3 years agoRollup merge of #76835 - matthiaskrgr:replace_prefix, r=lcnr
Ralf Jung [Mon, 21 Sep 2020 13:30:39 +0000 (15:30 +0200)]
Rollup merge of #76835 - matthiaskrgr:replace_prefix, r=lcnr

make replace_prefix only take &str as arguments

included the clippy::manual strip commit to not run into merge conflicts later.

r? @lcnr

3 years agoRollup merge of #76521 - tavianator:fix-pthread-getattr-destroy, r=Amanieu
Ralf Jung [Mon, 21 Sep 2020 13:30:37 +0000 (15:30 +0200)]
Rollup merge of #76521 - tavianator:fix-pthread-getattr-destroy, r=Amanieu

Fix segfault if pthread_getattr_np fails

glibc [destroys][1] the passed pthread_attr_t if pthread_getattr_np()
fails.  Destroying it again leads to a segfault.  Fix it by only
destroying it on success for glibc.

[1]: https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/pthread_getattr_np.c;h=ce437205e41dc05653e435f6188768cccdd91c99;hb=HEAD#l205

3 years agoRollup merge of #76439 - GuillaumeGomez:add-error-explanation-e0755, r=pickfire,jyn514
Ralf Jung [Mon, 21 Sep 2020 13:30:34 +0000 (15:30 +0200)]
Rollup merge of #76439 - GuillaumeGomez:add-error-explanation-e0755, r=pickfire,jyn514

Add error explanation for E0755

r? @pickfire

3 years agoupdate Miri for another bugfix
Ralf Jung [Mon, 21 Sep 2020 13:26:50 +0000 (15:26 +0200)]
update Miri for another bugfix

3 years agoAdd a changelog for x.py
Joshua Nelson [Sat, 12 Sep 2020 02:55:16 +0000 (22:55 -0400)]
Add a changelog for x.py

- Add a changelog and instructions for updating it
- Use `changelog-seen` in `config.toml` and `VERSION` in bootstrap to determine whether the changelog has been read
- Nag people if they haven't read the x.py changelog
  + Print message twice to make sure it's seen
- Give different error messages depending on whether the version needs to be updated or added

3 years agoAuto merge of #74040 - lcnr:const-occurs-check, r=nikomatsakis
bors [Mon, 21 Sep 2020 12:52:09 +0000 (12:52 +0000)]
Auto merge of #74040 - lcnr:const-occurs-check, r=nikomatsakis

fix unification of const variables

r? `@nikomatsakis` `@varkor` `@eddyb` let's just ping everyone here :sweat_smile:

3 years agoDon't recommend ManuallyDrop to customize drop order
Aleksey Kladov [Mon, 31 Aug 2020 10:32:37 +0000 (12:32 +0200)]
Don't recommend ManuallyDrop to customize drop order

See
https://internals.rust-lang.org/t/need-for-controlling-drop-order-of-fields/12914/21
for the discussion.

TL;DR: ManuallyDrop is unsafe and footguny, but you can just ask the
compiler to do all the work for you by re-ordering declarations.

3 years agoadd tests
Bastian Kauschke [Wed, 9 Sep 2020 07:43:53 +0000 (09:43 +0200)]
add tests

3 years agocheck for cycles when unifying const variables
Bastian Kauschke [Wed, 9 Sep 2020 07:43:47 +0000 (09:43 +0200)]
check for cycles when unifying const variables

3 years agoAuto merge of #77004 - RalfJung:rollup-usac4nv, r=RalfJung
bors [Mon, 21 Sep 2020 10:26:59 +0000 (10:26 +0000)]
Auto merge of #77004 - RalfJung:rollup-usac4nv, r=RalfJung

Rollup of 13 pull requests

Successful merges:

 - #76135 (Stabilize some Option methods as const)
 - #76628 (Add sample defaults for config.toml )
 - #76846 (Avoiding unnecesary allocations at rustc_errors)
 - #76867 (Use intra-doc links in core/src/iter when possible)
 - #76868 (Finish moving to intra doc links for std::sync)
 - #76872 (Remove DeclareMethods)
 - #76936 (Add non-`unsafe` `.get_mut()` for `Unsafecell`)
 - #76958 (Replace manual as_nanos and as_secs_f64 reimplementations)
 - #76959 (Replace write_fmt with write!)
 - #76961 (Add test for issue #34634)
 - #76962 (Use const_cstr macro in consts.rs)
 - #76963 (Remove unused static_assert macro)
 - #77000 (update Miri)

Failed merges:

r? `@ghost`

3 years agoDogfood total_cmp in the test crate
est31 [Mon, 21 Sep 2020 10:13:26 +0000 (12:13 +0200)]
Dogfood total_cmp in the test crate

3 years agofix InterpCx resolve
Bastian Kauschke [Wed, 9 Sep 2020 07:43:18 +0000 (09:43 +0200)]
fix InterpCx resolve

3 years agoRollup merge of #77000 - RalfJung:miri, r=RalfJung
Ralf Jung [Mon, 21 Sep 2020 08:40:49 +0000 (10:40 +0200)]
Rollup merge of #77000 - RalfJung:miri, r=RalfJung

update Miri

I'd like to get https://github.com/rust-lang/miri/pull/1556 out there to avoid some backwards-incompatible changes.
r? @ghost Cc @rust-lang/miri

3 years agoRollup merge of #76963 - est31:remove_static_assert, r=oli-obk
Ralf Jung [Mon, 21 Sep 2020 08:40:47 +0000 (10:40 +0200)]
Rollup merge of #76963 - est31:remove_static_assert, r=oli-obk

Remove unused static_assert macro

3 years agoRollup merge of #76962 - est31:const_cstr, r=oli-obk
Ralf Jung [Mon, 21 Sep 2020 08:40:45 +0000 (10:40 +0200)]
Rollup merge of #76962 - est31:const_cstr, r=oli-obk

Use const_cstr macro in consts.rs

3 years agoRollup merge of #76961 - bugadani:test-34634, r=Mark-Simulacrum
Ralf Jung [Mon, 21 Sep 2020 08:40:43 +0000 (10:40 +0200)]
Rollup merge of #76961 - bugadani:test-34634, r=Mark-Simulacrum

Add test for issue #34634

Closes #34634

3 years agoRollup merge of #76959 - est31:write, r=oli-obk
Ralf Jung [Mon, 21 Sep 2020 08:40:41 +0000 (10:40 +0200)]
Rollup merge of #76959 - est31:write, r=oli-obk

Replace write_fmt with write!

Latter is simpler

3 years agoRollup merge of #76958 - est31:ns, r=oli-obk
Ralf Jung [Mon, 21 Sep 2020 08:40:39 +0000 (10:40 +0200)]
Rollup merge of #76958 - est31:ns, r=oli-obk

Replace manual as_nanos and as_secs_f64 reimplementations

3 years agoRollup merge of #76936 - danielhenrymantilla:unsafecell_get_mut, r=RalfJung
Ralf Jung [Mon, 21 Sep 2020 08:40:37 +0000 (10:40 +0200)]
Rollup merge of #76936 - danielhenrymantilla:unsafecell_get_mut, r=RalfJung

Add non-`unsafe` `.get_mut()` for `Unsafecell`

  - Tracking issue: https://github.com/rust-lang/rust/issues/76943

As discussed in: https://internals.rust-lang.org/t/add-non-unsafe-get-mut-for-unsafecell/12407

  - ### [Rendered documentation](https://modest-dubinsky-1f9f47.netlify.app/core/cell/struct.unsafecell)

This PR tries to move the sound `&mut UnsafeCell<T> -> &mut T` projection that all the "downstream" constructions were already relying on, up to the root abstraction, where it rightfully belongs, and officially blessing it.

  - this **helps reduce the amount of `unsafe` snippets out there** (_c.f._, the second commit of this PR: https://github.com/rust-lang/rust/pull/76936/commits/09503fd1b30c83ca605546fa3f899721e41e68c6)

The fact that this getter is now expose for `UnsafeCell<T>` itself, will also help convey the idea that **`UnsafeCell` is not magical _w.r.t._ `&mut` accesses**, contrary to what some people incorrectly think.

  - Even the standard library itself at some point had such a confusion, _c.f._ this comment where there is a mention of multi-threaded (and thus _shared_) access despite dealing with exclusive references over unique ownership: https://github.com/rust-lang/rust/blob/59fb88d061544a035f3043b47594b34789204cee/library/core/src/cell.rs#L498-L499

r? @RalfJung

3 years agoRollup merge of #76872 - khyperia:remove_declare_methods, r=eddyb
Ralf Jung [Mon, 21 Sep 2020 08:40:35 +0000 (10:40 +0200)]
Rollup merge of #76872 - khyperia:remove_declare_methods, r=eddyb

Remove DeclareMethods

Most of the `DeclareMethods` API was only used internally by rustc_codegen_llvm. As such, it makes no sense to require other backends to implement them.

(`get_declared_value` and `declare_cfn` were used, in one place, specific to the `main` symbol, which I've replaced with a more specialized function to allow more flexibility in implementation - the intent is that `declare_c_main` can go away once we do something more clever, e.g. @eddyb has ideas around having a MIR shim or somesuch we can explore in a follow-up PR)

3 years agoRollup merge of #76868 - poliorcetics:intra-doc-std-sync, r=jyn514
Ralf Jung [Mon, 21 Sep 2020 08:40:33 +0000 (10:40 +0200)]
Rollup merge of #76868 - poliorcetics:intra-doc-std-sync, r=jyn514

Finish moving to intra doc links for std::sync

Helps with #75080.

@rustbot modify labels: T-doc A-intra-doc-links

r? @jyn514

3 years agoRollup merge of #76867 - poliorcetics:intra-doc-core-iter, r=jyn514
Ralf Jung [Mon, 21 Sep 2020 08:40:32 +0000 (10:40 +0200)]
Rollup merge of #76867 - poliorcetics:intra-doc-core-iter, r=jyn514

Use intra-doc links in core/src/iter when possible

Helps with #75080.

I also updated lots of links to use `fn()` instead of `fn` when possible.

@rustbot modify labels: T-doc A-intra-doc-links

r? @jyn514

3 years agoRollup merge of #76846 - botika:master, r=davidtwco
Ralf Jung [Mon, 21 Sep 2020 08:40:30 +0000 (10:40 +0200)]
Rollup merge of #76846 - botika:master, r=davidtwco

Avoiding unnecesary allocations at rustc_errors

Simplify the code avoiding allocations with easy alternative

3 years agoRollup merge of #76628 - jyn514:default-config-files, r=Mark-Simulacrum
Ralf Jung [Mon, 21 Sep 2020 08:40:28 +0000 (10:40 +0200)]
Rollup merge of #76628 - jyn514:default-config-files, r=Mark-Simulacrum

Add sample defaults for config.toml

- Allow including defaults in `src/bootstrap/defaults` using `profile = "..."`.
- Add default config files, with a README noting they're experimental and asking you to open an issue if you run into trouble. The config files have comments explaining why the defaults are set.
- Combine config files using the `merge` dependency.

This introduces a new dependency on `merge` that hasn't yet been vetted.

I want to improve the output when `include = "x"` isn't found:

```
thread 'main' panicked at 'fs::read_to_string(&file) failed with No such file or directory (os error 2) ("configuration file did not exist")', src/bootstrap/config.rs:522:28
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failed to run: /home/joshua/rustc/build/bootstrap/debug/bootstrap test tidy
Build completed unsuccessfully in 0:00:00
```

However that seems like it could be fixed in a follow-up.

Closes #76619

3 years agoRollup merge of #76135 - CDirkx:const-option, r=dtolnay,oli-obk
Ralf Jung [Mon, 21 Sep 2020 08:40:26 +0000 (10:40 +0200)]
Rollup merge of #76135 - CDirkx:const-option, r=dtolnay,oli-obk

Stabilize some Option methods as const

Stabilize the following methods of `Option` as const:
 - `is_some`
 - `is_none`
 - `as_ref`

These methods are currently const under the unstable feature `const_option` (tracking issue: #67441).
I believe these methods to be eligible for stabilization because of the stabilization of #49146 (Allow if and match in constants) and the trivial implementations, see also:  [PR#75463](https://github.com/rust-lang/rust/pull/75463).

Related: #76225

3 years agoRemove duplicated library links between std and libc
Josh Triplett [Mon, 21 Sep 2020 04:13:04 +0000 (21:13 -0700)]
Remove duplicated library links between std and libc

The libc crate is already responsible for linking in the appropriate
libraries, and std doing the same thing results in duplicated library
names on the linker command line. Removing this duplication slightly
reduces linker time, and makes it simpler to adjust the set or order of
linked libraries in one place (such as to add static linking support).

3 years agoAuto merge of #76843 - kornelski:longtypetofile, r=ecstatic-morse
bors [Mon, 21 Sep 2020 08:20:38 +0000 (08:20 +0000)]
Auto merge of #76843 - kornelski:longtypetofile, r=ecstatic-morse

Let user see the full type of type-length limit error

Seeing the full type of the error is sometimes essential to diagnosing the problem, but the type itself is too long to be displayed in the terminal in a useful fashion. This change solves this dilemma by writing the full offending type name to a file, and displays this filename as a note.

> note: the full type name been written to '$TEST_BUILD_DIR/issues/issue-22638/issue-22638.long-type.txt'

Closes #76777

3 years agoupdate Miri
Ralf Jung [Mon, 21 Sep 2020 07:42:34 +0000 (09:42 +0200)]
update Miri

3 years agoAdd an unused field of type `Option<DefId>` to `ParamEnv` struct.
Bram van den Heuvel [Sat, 19 Sep 2020 10:06:17 +0000 (12:06 +0200)]
Add an unused field of type `Option<DefId>` to `ParamEnv` struct.

3 years agoUpdate library/std/src/process.rs
Federico Ponzi [Mon, 21 Sep 2020 07:12:40 +0000 (08:12 +0100)]
Update library/std/src/process.rs

Co-authored-by: David Tolnay <dtolnay@gmail.com>
3 years agoUpdates stability attributes to the current nightly version
Federico Ponzi [Mon, 21 Sep 2020 06:52:59 +0000 (08:52 +0200)]
Updates stability attributes to the current nightly version

3 years agoAuto merge of #75974 - SkiFire13:peekmut-opt-sift, r=LukasKalbertodt
bors [Mon, 21 Sep 2020 05:31:01 +0000 (05:31 +0000)]
Auto merge of #75974 - SkiFire13:peekmut-opt-sift, r=LukasKalbertodt

Avoid useless sift_down when std::collections::binary_heap::PeekMut is never mutably dereferenced

If `deref_mut` is never called then it's not possible for the element to be mutated without internal mutability, meaning there's no need to call `sift_down`.

This could be a little improvement in cases where you want to mutate the biggest element of the heap only if it satisfies a certain predicate that needs only read access to the element.

3 years agoFix typo in rustc_lexer docs
LingMan [Mon, 21 Sep 2020 03:43:39 +0000 (05:43 +0200)]
Fix typo in rustc_lexer docs

Also add an Oxford comma while we're editing that line.

3 years agoAuto merge of #76806 - jethrogb:jb/update-llvm, r=cuviper
bors [Mon, 21 Sep 2020 03:32:01 +0000 (03:32 +0000)]
Auto merge of #76806 - jethrogb:jb/update-llvm, r=cuviper

Update LLVM

This (partially?) addresses rust-lang/rust#74632

r? `@cuviper`

3 years agoMoved all functions prefixed with 'check' to a separate file
Nicholas-Baron [Sat, 19 Sep 2020 20:51:59 +0000 (13:51 -0700)]
Moved all functions prefixed with 'check' to a separate file