]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #92155 - m-ou-se:panic-fn, r=eddyb
bors [Thu, 23 Dec 2021 05:17:47 +0000 (05:17 +0000)]
Auto merge of #92155 - m-ou-se:panic-fn, r=eddyb

Use panic() instead of panic!() in some places in core.

See https://github.com/rust-lang/rust/pull/92068 and https://github.com/rust-lang/rust/pull/92140.

This avoids the `panic!()` macro in a few potentially hot paths. This becomes more relevant when switching `core` to Rust 2021, as it'll avoid format_args!() and save some compilation time. (It doesn't make a huge difference, but still.) (Also the errors in const panic become slightly nicer.)

2 years agoAuto merge of #92216 - matthiaskrgr:rollup-luplvuc, r=matthiaskrgr
bors [Thu, 23 Dec 2021 01:47:08 +0000 (01:47 +0000)]
Auto merge of #92216 - matthiaskrgr:rollup-luplvuc, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #88858 (Allow reverse iteration of lowercase'd/uppercase'd chars)
 - #91544 (Fix duplicate derive clone suggestion)
 - #92026 (Add some JSDoc comments to rustdoc JS)
 - #92117 (kmc-solid: Add `std::sys::solid::fs::File::read_buf`)
 - #92139 (Change Backtrace::enabled atomic from SeqCst to Relaxed)
 - #92146 (Don't emit shared files when scraping examples from dependencies in Rustdoc)
 - #92208 (Quote bat script command line)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #92208 - ChrisDenton:win-bat-cmd, r=dtolnay
Matthias Krüger [Wed, 22 Dec 2021 23:28:56 +0000 (00:28 +0100)]
Rollup merge of #92208 - ChrisDenton:win-bat-cmd, r=dtolnay

Quote bat script command line

Fixes #91991

[`CreateProcessW`](https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createprocessw#parameters) should only be used to run exe files but it does have some (undocumented) special handling for files with `.bat` and `.cmd` extensions. Essentially those magic extensions will cause the parameters to be automatically rewritten. Example pseudo Rust code (note that `CreateProcess` starts with an optional application name followed by the application arguments):
```rust
// These arguments...
CreateProcess(None, `@"foo.bat` "hello world""`@,` ...);
// ...are rewritten as
CreateProcess(Some(r"C:\Windows\System32\cmd.exe"), `@""foo.bat` "hello world"""`@,` ...);
```

However, when setting the first parameter (the application name) as we now do, it will omit the extra level of quotes around the arguments:

```rust
// These arguments...
CreateProcess(Some("foo.bat"), `@"foo.bat` "hello world""`@,` ...);
// ...are rewritten as
CreateProcess(Some(r"C:\Windows\System32\cmd.exe"), `@"foo.bat` "hello world""`@,` ...);
```

This means the arguments won't be passed to the script as intended.

Note that running batch files this way is undocumented but people have relied on this so we probably shouldn't break it.

2 years agoRollup merge of #92146 - willcrichton:example-analyzer, r=jyn514
Matthias Krüger [Wed, 22 Dec 2021 23:28:55 +0000 (00:28 +0100)]
Rollup merge of #92146 - willcrichton:example-analyzer, r=jyn514

Don't emit shared files when scraping examples from dependencies in Rustdoc

This PR fixes #91605. The issue is that `Context::init` gets called when scraping dependencies. By default, just calling `init` calls into `write_shared` and `build_index` which register the scraped crate into a list that later gets used for the Rustdoc sidebar. The fix is to ensure that `write_shared` is not called when scraping.

r? `@jyn514`

2 years agoRollup merge of #92139 - dtolnay:backtrace, r=m-ou-se
Matthias Krüger [Wed, 22 Dec 2021 23:28:54 +0000 (00:28 +0100)]
Rollup merge of #92139 - dtolnay:backtrace, r=m-ou-se

Change Backtrace::enabled atomic from SeqCst to Relaxed

This atomic is not synchronizing anything outside of its own value, so we don't need the `Acquire`/`Release` guarantee that all memory operations prior to the store are visible after the subsequent load, nor the `SeqCst` guarantee of all threads seeing all of the sequentially consistent operations in the same order.

Using `Relaxed` reduces the overhead of `Backtrace::capture()` in the case that backtraces are not enabled.

## Benchmark

```rust
#![feature(backtrace)]

use std::backtrace::Backtrace;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::thread;
use std::time::Instant;

fn main() {
    let begin = Instant::now();
    let mut threads = Vec::new();
    for _ in 0..64 {
        threads.push(thread::spawn(|| {
            for _ in 0..10_000_000 {
                let _ = Backtrace::capture();
                static LOL: AtomicUsize = AtomicUsize::new(0);
                LOL.store(1, Ordering::Release);
            }
        }));
    }
    for thread in threads {
        let _ = thread.join();
    }
    println!("{:?}", begin.elapsed());
}
```

**Before:** 6.73 seconds
**After:** 5.18 seconds

2 years agoRollup merge of #92117 - solid-rs:fix-kmc-solid-read-buf, r=yaahc
Matthias Krüger [Wed, 22 Dec 2021 23:28:53 +0000 (00:28 +0100)]
Rollup merge of #92117 - solid-rs:fix-kmc-solid-read-buf, r=yaahc

kmc-solid: Add `std::sys::solid::fs::File::read_buf`

This PR adds `std::sys::solid::fs::File::read_buf` to catch up with the changes introduced by #81156 and fix the [`*-kmc-solid_*`](https://doc.rust-lang.org/nightly/rustc/platform-support/kmc-solid.html) Tier 3 targets..

2 years agoRollup merge of #92026 - jsha:jsdoc-search, r=GuillaumeGomez
Matthias Krüger [Wed, 22 Dec 2021 23:28:52 +0000 (00:28 +0100)]
Rollup merge of #92026 - jsha:jsdoc-search, r=GuillaumeGomez

Add some JSDoc comments to rustdoc JS

This follows the Closure Compiler dialect of JSDoc, so we can use it to do some basic type checking. We don't plan to compile with Closure Compiler, just use it to check types. See https://github.com/google/closure-compiler/wiki/ for details.

To try checking the annotations, run:

```
npm i -g google-closure-compiler
google-closure-compiler -W VERBOSE build/x86_64-unknown-linux-gnu/doc/{search-index1.59.0.js,crates1.59.0.js} src/librustdoc/html/static/js/{search.js,main.js,storage.js} --externs src/librustdoc/html/static/js/externs.js >/dev/null
```

You'll see some warnings that "String continuations are not recommended". I'm not addressing those right now.

[Discussed on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/doc.20format.20for.20JS/near/265209466).

r? `@GuillaumeGomez`

2 years agoRollup merge of #91544 - rukai:91492, r=wesleywiser
Matthias Krüger [Wed, 22 Dec 2021 23:28:51 +0000 (00:28 +0100)]
Rollup merge of #91544 - rukai:91492, r=wesleywiser

Fix duplicate derive clone suggestion

closes https://github.com/rust-lang/rust/issues/91492

The addition of:
```rust
derives.sort();
derives.dedup();
```
is what actually solves the problem.
The rest is just cleanup.

I want to improve the diagnostic message to provide the suggestion as a proper diff but ran into some problems, so I'll attempt that again in a follow up PR.

2 years agoRollup merge of #88858 - spektom:to_lower_upper_rev, r=dtolnay
Matthias Krüger [Wed, 22 Dec 2021 23:28:51 +0000 (00:28 +0100)]
Rollup merge of #88858 - spektom:to_lower_upper_rev, r=dtolnay

Allow reverse iteration of lowercase'd/uppercase'd chars

The PR implements `DoubleEndedIterator` trait for `ToLowercase` and `ToUppercase`.

This enables reverse iteration of lowercase/uppercase variants of character sequences.
One of use cases:  determining whether a char sequence is a suffix of another one.

Example:

```rust
fn endswith_ignore_case(s1: &str, s2: &str) -> bool {
    for eob in s1
        .chars()
        .flat_map(|c| c.to_lowercase())
        .rev()
        .zip_longest(s2.chars().flat_map(|c| c.to_lowercase()).rev())
    {
        match eob {
            EitherOrBoth::Both(c1, c2) => {
                if c1 != c2 {
                    return false;
                }
            }
            EitherOrBoth::Left(_) => return true,
            EitherOrBoth::Right(_) => return false,
        }
    }
    true
}
```

2 years agoAuto merge of #90408 - pierwill:untrack-localdefid-90317, r=cjgillot
bors [Wed, 22 Dec 2021 22:33:11 +0000 (22:33 +0000)]
Auto merge of #90408 - pierwill:untrack-localdefid-90317, r=cjgillot

Remove `PartialOrd`, `Ord` from `LocalDefId`

Part of work on https://github.com/rust-lang/rust/issues/90317.

2 years agoAdd some JSDoc comments to rustdoc JS
Jacob Hoffman-Andrews [Fri, 17 Dec 2021 05:17:22 +0000 (21:17 -0800)]
Add some JSDoc comments to rustdoc JS

This follows the Closure Compiler dialect of JSDoc, so we
can use it to do some basic type checking. We don't plan to
compile with Closure Compiler, just use it to check types. See
https://github.com/google/closure-compiler/wiki/ for details.

2 years agoAuto merge of #92201 - ChrisDenton:fix-tests, r=Mark-Simulacrum
bors [Wed, 22 Dec 2021 19:21:25 +0000 (19:21 +0000)]
Auto merge of #92201 - ChrisDenton:fix-tests, r=Mark-Simulacrum

Fix failing tests

Fixes tests that have been failing in CI.

I hope it's ok but I've temporarily commented out some of the Windows resolver tests. I actually have a bigger fix for that test code as part of another PR. I could separate it out and patch as necessary but I'd prefer not to rush into that if possible.

r? `@Mark-Simulacrum`

2 years agoUpdate stability attribute for double ended case mapping iterators
David Tolnay [Wed, 22 Dec 2021 18:49:51 +0000 (10:49 -0800)]
Update stability attribute for double ended case mapping iterators

2 years agoFix tests
Chris Denton [Wed, 22 Dec 2021 18:31:36 +0000 (18:31 +0000)]
Fix tests

2 years agorustc `VecGraph`: require the index type to implement Ord
pierwill [Tue, 7 Dec 2021 18:29:13 +0000 (12:29 -0600)]
rustc `VecGraph`: require the index type to implement Ord

2 years agoRequire Ord for rustc_index::SparseBitSet::last_set_in
pierwill [Tue, 7 Dec 2021 17:03:53 +0000 (11:03 -0600)]
Require Ord for rustc_index::SparseBitSet::last_set_in

2 years agoRemove `PartialOrd` and `Ord` from `LocalDefId`
pierwill [Sat, 30 Oct 2021 15:11:50 +0000 (10:11 -0500)]
Remove `PartialOrd` and `Ord` from `LocalDefId`

Implement `Ord`, `PartialOrd` for SpanData

2 years agoBless clippy test.
Mara Bos [Wed, 22 Dec 2021 16:25:44 +0000 (17:25 +0100)]
Bless clippy test.

2 years agoAuto merge of #92095 - vacuus:master, r=jyn514
bors [Tue, 21 Dec 2021 16:04:54 +0000 (16:04 +0000)]
Auto merge of #92095 - vacuus:master, r=jyn514

rustdoc: Remove 'need_backline' field from `DocFragment`

Fixes [#92084](https://github.com/rust-lang/rust/issues/92084)

2 years agoAuto merge of #92149 - fee1-dead:cache-fix, r=oli-obk
bors [Tue, 21 Dec 2021 12:49:10 +0000 (12:49 +0000)]
Auto merge of #92149 - fee1-dead:cache-fix, r=oli-obk

Fix bad caching of `~const Drop` bounds

Fixes #92111.

2 years agoUse panic() instead of panic!() in some places in core.
Mara Bos [Tue, 21 Dec 2021 09:39:00 +0000 (10:39 +0100)]
Use panic() instead of panic!() in some places in core.

2 years agoAuto merge of #92152 - matthiaskrgr:rollup-nmskpw6, r=matthiaskrgr
bors [Tue, 21 Dec 2021 09:01:25 +0000 (09:01 +0000)]
Auto merge of #92152 - matthiaskrgr:rollup-nmskpw6, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #90345 (Stabilise entry_insert)
 - #91412 (Improve suggestions for importing out-of-scope traits reexported as `_`)
 - #91770 (Suggest adding a `#[cfg(test)]` to to a test module)
 - #91823 (Make `PTR::as_ref` and similar methods `const`.)
 - #92127 (Move duplicates removal when generating results instead of when displaying them)
 - #92129 (JoinHandle docs: add missing 'the')
 - #92131 (Sync rustc_codegen_cranelift)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #92131 - bjorn3:sync_cg_clif-2021-12-20, r=bjorn3
Matthias Krüger [Tue, 21 Dec 2021 07:33:43 +0000 (08:33 +0100)]
Rollup merge of #92131 - bjorn3:sync_cg_clif-2021-12-20, r=bjorn3

Sync rustc_codegen_cranelift

The main highlight this sync is improved support for inline assembly. Thanks `@nbdd0121!` Inline assembly is still disabled by default for builds in the main rust repo though. Cranelift will now also be built from the crates.io releases rather than the git repo. Git repos are incompatible with vendoring.

r? `@ghost`

`@rustbot` label +A-codegen +A-cranelift +T-compiler

2 years agoRollup merge of #92129 - RalfJung:join-handle-docs, r=jyn514
Matthias Krüger [Tue, 21 Dec 2021 07:33:42 +0000 (08:33 +0100)]
Rollup merge of #92129 - RalfJung:join-handle-docs, r=jyn514

JoinHandle docs: add missing 'the'

2 years agoRollup merge of #92127 - GuillaumeGomez:search-results-duplicate-removal, r=jsha
Matthias Krüger [Tue, 21 Dec 2021 07:33:41 +0000 (08:33 +0100)]
Rollup merge of #92127 - GuillaumeGomez:search-results-duplicate-removal, r=jsha

Move duplicates removal when generating results instead of when displaying them

Currently, we store 200 results per tab and then display them. However, it was possible to have duplicates which is why we have this check. However, instead of doing it when displaying the results, it's much better instead to do it even before to simplify the display part a bit.

r? `@jsha`

2 years agoRollup merge of #91823 - woppopo:const_ptr_as_ref, r=lcnr
Matthias Krüger [Tue, 21 Dec 2021 07:33:40 +0000 (08:33 +0100)]
Rollup merge of #91823 - woppopo:const_ptr_as_ref, r=lcnr

Make `PTR::as_ref` and similar methods `const`.

Tracking issue: #91822
Feature gate: `#![feature(const_ptr_as_ref)]`

```rust
// core::ptr
impl<T: ?Sized> *const T {
    pub const unsafe fn as_ref<'a>(self) -> Option<&'a T>;
    pub const unsafe fn as_uninit_ref<'a>(self) -> Option<&'a MaybeUninit<T>>
    where
        T: Sized;
    pub const unsafe fn as_uninit_slice<'a>(self) -> Option<&'a [MaybeUninit<T>]>;
}

impl<T: ?Sized> *mut T {
    pub const unsafe fn as_ref<'a>(self) -> Option<&'a T>;
    pub const unsafe fn as_uninit_ref<'a>(self) -> Option<&'a MaybeUninit<T>>
    where
        T: Sized;
    pub const unsafe fn as_mut<'a>(self) -> Option<&'a mut T>;
    pub const unsafe fn as_uninit_mut<'a>(self) -> Option<&'a mut MaybeUninit<T>>
    where
        T: Sized;
    pub const unsafe fn as_uninit_slice<'a>(self) -> Option<&'a [MaybeUninit<T>]>;
    pub const unsafe fn as_uninit_slice_mut<'a>(self) -> Option<&'a mut [MaybeUninit<T>]>;
}

impl<T: Sized> NonNull<T> {
    pub const unsafe fn as_uninit_ref<'a>(&self) -> &'a MaybeUninit<T>;
    pub const unsafe fn as_uninit_mut<'a>(&mut self) -> &'a mut MaybeUninit<T>;
}

impl<T: ?Sized> NonNull<T> {
    pub const unsafe fn as_ref<'a>(&self) -> &'a T;
    pub const unsafe fn as_mut<'a>(&mut self) -> &'a mut T;
    pub const unsafe fn as_uninit_slice<'a>(&self) -> &'a [MaybeUninit<T>];
    pub const unsafe fn as_uninit_slice_mut<'a>(&self) -> &'a mut [MaybeUninit<T>];
}
```

2 years agoRollup merge of #91770 - TaKO8Ki:suggest-adding-cfg-test, r=joshtriplett
Matthias Krüger [Tue, 21 Dec 2021 07:33:39 +0000 (08:33 +0100)]
Rollup merge of #91770 - TaKO8Ki:suggest-adding-cfg-test, r=joshtriplett

Suggest adding a `#[cfg(test)]` to to a test module

closes #88138

2 years agoRollup merge of #91412 - compiler-errors:issue-86035, r=oli-obk
Matthias Krüger [Tue, 21 Dec 2021 07:33:37 +0000 (08:33 +0100)]
Rollup merge of #91412 - compiler-errors:issue-86035, r=oli-obk

Improve suggestions for importing out-of-scope traits reexported as `_`

1. Fix up the `parent_map` query to prefer visible parents that _don't_ export items with the name `_`.
    * I'm not sure if I modified this query properly. Not sure if we want to check for other idents than `kw::Underscore`.
    * This also has the side-effect of not doing BFS on any modules re-exported as `_`, but I think that's desirable here too (or else we get suggestions for paths like `a::_::b` like in [this doctest example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=d9505ea45bb80adf40bb991298f952be)).
2. Bail in `try_print_visible_def_path` if the `def_id` is re-exported as `_`, which will fall back to printing the def-id's real (definition) path.
    * Side-effect of this is that we print paths that are not actually public, but it seems we already sometimes suggest `use`ing paths that are private anyways. See [this doctest example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=bad513ed3241f8ff87579eed8046ad10) for demonstration of current behavior.
3. Suggest a glob-import (for example `my_library::prelude::*`) if the trait in question is only pub-exported as `_`, as a fallback.
    ```
    use foo::bar::prelude::*; // trait MyTrait
    ```
    * I think this is good fallback behavior to suggest instead of doing nothing. Thanks to the original issue filer for suggesting this.

I was somewhat opinionated about behaviors in this PR, and I'm totally open to limiting the impact of my changes or only landing parts of this. Happy to receive feedback if there are better ways to the same end.

Fixes #86035

2 years agoRollup merge of #90345 - passcod:entry-insert, r=dtolnay
Matthias Krüger [Tue, 21 Dec 2021 07:33:37 +0000 (08:33 +0100)]
Rollup merge of #90345 - passcod:entry-insert, r=dtolnay

Stabilise entry_insert

This stabilises `HashMap:Entry::insert_entry` etc. Tracking issue #65225. It will need an FCP.

This was implemented in #64656 two years ago.

This PR includes the rename and change discussed in https://github.com/rust-lang/rust/issues/65225#issuecomment-910652430, happy to split if needed.

2 years agoAuto merge of #91903 - tmiasko:bit-set-hash, r=jackh726
bors [Tue, 21 Dec 2021 05:42:10 +0000 (05:42 +0000)]
Auto merge of #91903 - tmiasko:bit-set-hash, r=jackh726

Implement StableHash for BitSet and BitMatrix via Hash

This fixes an issue where bit sets / bit matrices the same word
content but a different domain size would receive the same hash.

2 years agoFix bad caching of `~const Drop` bounds
Deadbeef [Tue, 21 Dec 2021 05:23:59 +0000 (13:23 +0800)]
Fix bad caching of `~const Drop` bounds

2 years agoFixup tests for issue-86035
Michael Goulet [Wed, 1 Dec 2021 02:27:04 +0000 (18:27 -0800)]
Fixup tests for issue-86035

2 years agoSuggest glob-import if we need to import a trait, but it has no visible name
Michael Goulet [Wed, 1 Dec 2021 01:20:38 +0000 (17:20 -0800)]
Suggest glob-import if we need to import a trait, but it has no visible name

2 years agoBail if printing item named `_` in `try_print_visible_def_path`
Michael Goulet [Wed, 1 Dec 2021 01:19:37 +0000 (17:19 -0800)]
Bail if printing item named `_` in `try_print_visible_def_path`

2 years agoPrefer visibility paths where items are not named `_`
Michael Goulet [Wed, 1 Dec 2021 01:18:48 +0000 (17:18 -0800)]
Prefer visibility paths where items are not named `_`

2 years agoTest for issue-86035
Michael Goulet [Wed, 1 Dec 2021 01:53:39 +0000 (17:53 -0800)]
Test for issue-86035

2 years agoAuto merge of #92126 - RalfJung:miri, r=RalfJung
bors [Tue, 21 Dec 2021 02:28:46 +0000 (02:28 +0000)]
Auto merge of #92126 - RalfJung:miri, r=RalfJung

update Miri

Fixes https://github.com/rust-lang/rust/issues/92101
r? `@ghost`

2 years agokmc-solid: Add `std::sys::solid::fs::File::read_buf`
Tomoaki Kawada [Mon, 20 Dec 2021 05:20:48 +0000 (14:20 +0900)]
kmc-solid: Add `std::sys::solid::fs::File::read_buf`

Catching up with commit 3b263ceb5cb89b6d53b5a03b47ec447c3a7f7765

2 years agoAuto merge of #92144 - rust-lang:tmandry-patch-1, r=Mark-Simulacrum
bors [Mon, 20 Dec 2021 23:19:14 +0000 (23:19 +0000)]
Auto merge of #92144 - rust-lang:tmandry-patch-1, r=Mark-Simulacrum

Add tmandry to .mailmap

2 years agoAdd tmandry to .mailmap
Tyler Mandry [Mon, 20 Dec 2021 23:16:44 +0000 (15:16 -0800)]
Add tmandry to .mailmap

2 years agoBump insert_entry stabilization to Rust 1.59
David Tolnay [Mon, 20 Dec 2021 21:14:06 +0000 (13:14 -0800)]
Bump insert_entry stabilization to Rust 1.59

2 years agoChange Backtrace::enabled atomic from SeqCst to Relaxed
David Tolnay [Mon, 20 Dec 2021 20:34:10 +0000 (12:34 -0800)]
Change Backtrace::enabled atomic from SeqCst to Relaxed

2 years agoMerge commit '97e504549371d7640cf011d266e3c17394fdddac' into sync_cg_clif-2021-12-20
bjorn3 [Mon, 20 Dec 2021 17:56:35 +0000 (18:56 +0100)]
Merge commit '97e504549371d7640cf011d266e3c17394fdddac' into sync_cg_clif-2021-12-20

2 years agoFix taking address of truly unsized type field of unsized adt
bjorn3 [Mon, 20 Dec 2021 17:49:43 +0000 (18:49 +0100)]
Fix taking address of truly unsized type field of unsized adt

2 years agoJoinHandle docs: add missing 'the'
Ralf Jung [Mon, 20 Dec 2021 17:30:29 +0000 (18:30 +0100)]
JoinHandle docs: add missing 'the'

2 years agoRustup to rustc 1.59.0-nightly (e95e084a1 2021-12-19)
bjorn3 [Mon, 20 Dec 2021 17:21:55 +0000 (18:21 +0100)]
Rustup to rustc 1.59.0-nightly (e95e084a1 2021-12-19)

2 years agoSync from rust 84f962a89bac3948ed116f1ad04c2f4793fb69ea
bjorn3 [Mon, 20 Dec 2021 17:12:18 +0000 (18:12 +0100)]
Sync from rust 84f962a89bac3948ed116f1ad04c2f4793fb69ea

2 years agoMove duplicates removal when generating results instead of when displaying them
Guillaume Gomez [Mon, 20 Dec 2021 17:01:04 +0000 (18:01 +0100)]
Move duplicates removal when generating results instead of when displaying them

2 years agoupdate Miri
Ralf Jung [Mon, 20 Dec 2021 16:02:29 +0000 (17:02 +0100)]
update Miri

2 years agoAuto merge of #92108 - r00ster91:patch-6, r=jyn514
bors [Mon, 20 Dec 2021 14:53:48 +0000 (14:53 +0000)]
Auto merge of #92108 - r00ster91:patch-6, r=jyn514

paniced -> panicked

2 years agoAuto merge of #91924 - Aaron1011:serialize-adt-def, r=michaelwoerister
bors [Mon, 20 Dec 2021 10:35:48 +0000 (10:35 +0000)]
Auto merge of #91924 - Aaron1011:serialize-adt-def, r=michaelwoerister

Fully serialize AdtDef

This avoids needing to invoke the `adt_def` query during
the decoding of another query's result.

Split out from https://github.com/rust-lang/rust/pull/91919
See https://github.com/rust-lang/rust/issues/91696#issuecomment-993043710

2 years agoAuto merge of #92041 - Aaron1011:remove-speculative-evaluation, r=jackh726
bors [Mon, 20 Dec 2021 07:30:16 +0000 (07:30 +0000)]
Auto merge of #92041 - Aaron1011:remove-speculative-evaluation, r=jackh726

Remove 'speculative evaluation' of predicates

Performing 'speculative evaluation' introduces caching bugs that
cannot be fixed without invasive changes to projection.

Hopefully, we can win back most of the performance lost by
re-adding 'cache completion'

Fixes #90662

2 years agoAuto merge of #91900 - pitaj:fix-91714, r=jyn514
bors [Mon, 20 Dec 2021 04:21:12 +0000 (04:21 +0000)]
Auto merge of #91900 - pitaj:fix-91714, r=jyn514

rustdoc: make `--passes` and `--no-defaults` have no effect

Fixes #91714

One potential issue is that currently there is no stable way to achieve `--document-hidden-items`. This affects test `issue-15347`.

I also had to modify the tests `issue-42875` and `no-compiler-export`. Regardless of combinations of `--document-hidden-items` and `--document-private-items`, I was unable to get these to pass without the modifications. I left behind a comment noting the change.

2 years agoAuto merge of #91844 - nnethercote:rm-ObligationCauseData-2, r=Mark-Simulacrum
bors [Mon, 20 Dec 2021 00:40:58 +0000 (00:40 +0000)]
Auto merge of #91844 - nnethercote:rm-ObligationCauseData-2, r=Mark-Simulacrum

Eliminate `ObligationCauseData`

This makes `Obligation` two words bigger, but avoids allocating a lot of the time.

I previously tried this in #73983 and it didn't help much, but local timings look more promising now.

r? `@ghost`

2 years agoRemove 'need_backline' field of `DocFragment`
Roc Yu [Mon, 20 Dec 2021 00:38:59 +0000 (19:38 -0500)]
Remove 'need_backline' field of `DocFragment`

2 years agoOmit check of a successive line in loop
vacuus [Sun, 19 Dec 2021 02:54:59 +0000 (21:54 -0500)]
Omit check of a successive line in loop

I think that s == "" is the only edge case (as it makes iter.next() return None the first time). The early return is necessary so that the last character of 'out' isn't popped if s == "" && !frag.need_backline

2 years agoEliminate `ObligationCauseData`.
Nicholas Nethercote [Thu, 11 Nov 2021 01:01:12 +0000 (12:01 +1100)]
Eliminate `ObligationCauseData`.

This makes `Obligation` two words bigger, but avoids allocating a lot of
the time.

I previously tried this in #73983 and it didn't help much, but local
timings look more promising now.

2 years agopaniced -> panicked
r00ster [Sun, 19 Dec 2021 20:08:19 +0000 (21:08 +0100)]
paniced -> panicked

2 years agoAuto merge of #92106 - matthiaskrgr:rollup-zw6t1mu, r=matthiaskrgr
bors [Sun, 19 Dec 2021 17:14:12 +0000 (17:14 +0000)]
Auto merge of #92106 - matthiaskrgr:rollup-zw6t1mu, r=matthiaskrgr

Rollup of 4 pull requests

Successful merges:

 - #91791 (Fix an ICE when lowering a float with missing exponent magnitude)
 - #91878 (Remove `in_band_lifetimes` from `rustc_infer`)
 - #91895 (Remove `in_band_lifetimes` for `rustc_monomorphize`)
 - #92029 (Explicitly set no ELF flags for .rustc section)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRollup merge of #92029 - nikic:section-flags-fix, r=davidtwco
Matthias Krüger [Sun, 19 Dec 2021 16:38:35 +0000 (17:38 +0100)]
Rollup merge of #92029 - nikic:section-flags-fix, r=davidtwco

Explicitly set no ELF flags for .rustc section

For a data section, the object crate will set the SHF_ALLOC by default, which is exactly what we don't want. Explicitly set sh_flags to zero to avoid this.

I checked with `objdump -h` that this produces the right flags for ELF.

Fixes #92013.

2 years agoRollup merge of #91895 - pitaj:91867-monomorphize, r=Aaron1011
Matthias Krüger [Sun, 19 Dec 2021 16:38:34 +0000 (17:38 +0100)]
Rollup merge of #91895 - pitaj:91867-monomorphize, r=Aaron1011

Remove `in_band_lifetimes` for `rustc_monomorphize`

#91867

2 years agoRollup merge of #91878 - LegionMammal978:less-inband-infer, r=Aaron1011
Matthias Krüger [Sun, 19 Dec 2021 16:38:33 +0000 (17:38 +0100)]
Rollup merge of #91878 - LegionMammal978:less-inband-infer, r=Aaron1011

Remove `in_band_lifetimes` from `rustc_infer`

See #91867 for more information.

This crate actually had a typo `'ctx` in one of its functions:
```diff
-pub fn same_type_modulo_infer(a: Ty<'tcx>, b: Ty<'ctx>) -> bool {
+pub fn same_type_modulo_infer<'tcx>(a: Ty<'tcx>, b: Ty<'tcx>) -> bool {
```
Also, I wasn't entirely sure about the lifetimes in `suggest_new_region_bound`:
```diff
 pub fn suggest_new_region_bound(
-    tcx: TyCtxt<'tcx>,
+    tcx: TyCtxt<'_>,
     err: &mut DiagnosticBuilder<'_>,
     fn_returns: Vec<&rustc_hir::Ty<'_>>,
```
Should all of those lifetimes really be distinct?

2 years agoRollup merge of #91791 - terrarier2111:fix-float-ice, r=nagisa
Matthias Krüger [Sun, 19 Dec 2021 16:38:33 +0000 (17:38 +0100)]
Rollup merge of #91791 - terrarier2111:fix-float-ice, r=nagisa

Fix an ICE when lowering a float with missing exponent magnitude

This fixes: https://github.com/rust-lang/rust/issues/91434

2 years agoAuto merge of #92099 - matthiaskrgr:rollup-4gwv67m, r=matthiaskrgr
bors [Sun, 19 Dec 2021 12:36:56 +0000 (12:36 +0000)]
Auto merge of #92099 - matthiaskrgr:rollup-4gwv67m, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #91141 (Revert "Temporarily rename int_roundings functions to avoid conflicts")
 - #91984 (Remove `in_band_lifetimes` from `rustc_middle`)
 - #92028 (Sync portable-simd to fix libcore build for AVX-512 enabled targets)
 - #92042 (Enable `#[thread_local]` for all windows-msvc targets)
 - #92071 (Update example code for Vec::splice to change the length)
 - #92077 (rustdoc: Remove unused `collapsed` field)
 - #92081 (rustdoc: Remove unnecessary `need_backline` function)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoFix an ICE when lowering a float with missing exponent magnitude
threadexception [Sat, 11 Dec 2021 14:42:25 +0000 (15:42 +0100)]
Fix an ICE when lowering a float with missing exponent magnitude

Co-authored-by: Simonas Kazlauskas <github@kazlauskas.me>
2 years agoRollup merge of #92081 - jyn514:need-backline, r=GuillaumeGomez
Matthias Krüger [Sun, 19 Dec 2021 09:45:56 +0000 (10:45 +0100)]
Rollup merge of #92081 - jyn514:need-backline, r=GuillaumeGomez

rustdoc: Remove unnecessary `need_backline` function

r? `@GuillaumeGomez`

2 years agoRollup merge of #92077 - jyn514:remove-collapsed, r=GuillaumeGomez
Matthias Krüger [Sun, 19 Dec 2021 09:45:55 +0000 (10:45 +0100)]
Rollup merge of #92077 - jyn514:remove-collapsed, r=GuillaumeGomez

rustdoc: Remove unused `collapsed` field

`render/context` always runs after `run_global_context`, so it was always set to `true`.

This is a holdover from when rustdoc allowed configuring passes, but the `collapse-docs` pass was
removed ages ago, and the ability to configure passes is about to be removed.

Found while reviewing https://github.com/rust-lang/rust/pull/91305.

2 years agoRollup merge of #92071 - ajtribick:patch-1, r=the8472
Matthias Krüger [Sun, 19 Dec 2021 09:45:54 +0000 (10:45 +0100)]
Rollup merge of #92071 - ajtribick:patch-1, r=the8472

Update example code for Vec::splice to change the length

The current example for `Vec::splice` illustrates the replacement of a section of length 2 with a new section of length 2. This isn't a particularly interesting case for splice, and makes it look a bit like a shorthand for the kind of manipulations that could be done with a mutable slice.

In order to provide a stronger example, this updates the example to use different lengths for the source and destination regions, and uses a slice from the middle of the vector to illustrate that this does not necessarily have to be at the beginning or the end.

Resolves #92067

2 years agoRollup merge of #92042 - ChrisDenton:msvc-static-tls, r=nagisa
Matthias Krüger [Sun, 19 Dec 2021 09:45:53 +0000 (10:45 +0100)]
Rollup merge of #92042 - ChrisDenton:msvc-static-tls, r=nagisa

Enable `#[thread_local]` for all windows-msvc targets

As it stands, `#[thread_local]` is enabled haphazardly for msvc. It seems all 64-bit targets have it enabled, but not 32-bit targets unless they're also UWP targets (perhaps because UWP was added more recently?). So this PR simply enables it for 32-bit targets as well. I can't think of a reason not to and I've confirmed by running tests locally which pass.

See also #91659

2 years agoRollup merge of #92028 - petrochenkov:psimd, r=Mark-Simulacrum
Matthias Krüger [Sun, 19 Dec 2021 09:45:52 +0000 (10:45 +0100)]
Rollup merge of #92028 - petrochenkov:psimd, r=Mark-Simulacrum

Sync portable-simd to fix libcore build for AVX-512 enabled targets

Fixes https://github.com/rust-lang/rust/pull/91484#issuecomment-989933534
cc ``@workingjubilee``

2 years agoRollup merge of #91984 - Aaron1011:rustc-middle-lifetime, r=oli-obk
Matthias Krüger [Sun, 19 Dec 2021 09:45:51 +0000 (10:45 +0100)]
Rollup merge of #91984 - Aaron1011:rustc-middle-lifetime, r=oli-obk

Remove `in_band_lifetimes` from `rustc_middle`

See #91867

This was mostly straightforward. In several places, I take advantage
of the fact that lifetimes are non-hygenic: a macro declares the
'tcx' lifetime, which is then used in types passed in as macro
arguments.

2 years agoRollup merge of #91141 - jhpratt:int_roundings, r=joshtriplett
Matthias Krüger [Sun, 19 Dec 2021 09:45:50 +0000 (10:45 +0100)]
Rollup merge of #91141 - jhpratt:int_roundings, r=joshtriplett

Revert "Temporarily rename int_roundings functions to avoid conflicts"

This reverts commit 3ece63b64e192146fcdd1724e25856a93d7626aa.

This should be okay because #90329 has been merged.

r? `@joshtriplett`

2 years agoAuto merge of #91957 - nnethercote:rm-SymbolStr, r=oli-obk
bors [Sun, 19 Dec 2021 09:31:37 +0000 (09:31 +0000)]
Auto merge of #91957 - nnethercote:rm-SymbolStr, r=oli-obk

Remove `SymbolStr`

This was originally proposed in https://github.com/rust-lang/rust/pull/74554#discussion_r466203544. As well as removing the icky `SymbolStr` type, it allows the removal of a lot of `&` and `*` occurrences.

Best reviewed one commit at a time.

r? `@oli-obk`

2 years agoAuto merge of #91957 - nnethercote:rm-SymbolStr, r=oli-obk
bors [Sun, 19 Dec 2021 09:31:37 +0000 (09:31 +0000)]
Auto merge of #91957 - nnethercote:rm-SymbolStr, r=oli-obk

Remove `SymbolStr`

This was originally proposed in https://github.com/rust-lang/rust/pull/74554#discussion_r466203544. As well as removing the icky `SymbolStr` type, it allows the removal of a lot of `&` and `*` occurrences.

Best reviewed one commit at a time.

r? `@oli-obk`

2 years agoAuto merge of #91871 - camelid:urlpartsbuilder, r=GuillaumeGomez
bors [Sun, 19 Dec 2021 06:26:07 +0000 (06:26 +0000)]
Auto merge of #91871 - camelid:urlpartsbuilder, r=GuillaumeGomez

rustdoc: Add `UrlPartsBuilder`

This is a type for efficiently and easily constructing the part of a URL
after the domain: `nightly/core/str/struct.Bytes.html`.

It allows simplifying some code and avoiding some allocations in the
`href_*` functions.

It will also allow making `Cache.paths` et al. use `Symbol` without
having to allocate `String`s in the `href_*` functions. `String`s would
be necessary otherwise because `Symbol::as_str()` returns `SymbolStr`,
whose `Deref<Target = str>` impl requires the `str` to not outlive it.
This is the primary motivation for the addition of `UrlPartsBuilder`.

2 years agoAuto merge of #89831 - Aaron1011:project-caching-speedup, r=jackh726
bors [Sun, 19 Dec 2021 03:33:19 +0000 (03:33 +0000)]
Auto merge of #89831 - Aaron1011:project-caching-speedup, r=jackh726

Re-introduce concept of projection cache 'completion'

Instead of clearing out the cache entirely, we store
the intermediate evaluation result into the cache entry.
This accomplishes several things:

* We avoid the performance hit associated with re-evaluating
  the sub-obligations
* We avoid causing issues with incremental compilation, since
  the final evaluation result is always the same
* We avoid affecting other uses of the same `InferCtxt` which
  might care about 'side effects' from processing the sub-obligations
  (e,g. region constraints). Only code that is specifically aware
   of the new 'complete' code is affected

2 years agoAuto merge of #92090 - matthiaskrgr:rollup-pbyqddi, r=matthiaskrgr
bors [Sun, 19 Dec 2021 00:24:56 +0000 (00:24 +0000)]
Auto merge of #92090 - matthiaskrgr:rollup-pbyqddi, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #91834 (Update browser-ui-test version and improve rustdoc-gui tests readability)
 - #91894 (Remove `in_band_lifetimes` from `rustc_incremental`)
 - #91932 (Add user seed to `-Z randomize-layout`)
 - #91956 (fix(rustc_lint): better detect when parens are necessary)
 - #92020 (Remove P: Unpin bound on impl Stream for Pin)
 - #92063 (docs: fix typo)
 - #92082 (rustdoc: Write doc-comments directly instead of using FromIterator)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRe-introduce concept of projection cache 'completion'
Aaron Hill [Sat, 9 Oct 2021 16:29:39 +0000 (11:29 -0500)]
Re-introduce concept of projection cache 'completion'

Instead of clearing out the cache entirely, we store
the intermediate evaluation result into the cache entry.
This accomplishes several things:

* We avoid the performance hit associated with re-evaluating
  the sub-obligations
* We avoid causing issues with incremental compilation, since
  the final evaluation result is always the same
* We avoid affecting other uses of the same `InferCtxt` which
  might care about 'side effects' from processing the sub-obligations
  (e,g. region constraints). Only code that is specifically aware
   of the new 'complete' code is affected

2 years agoRollup merge of #92082 - jyn514:remove-from-iterator, r=jyn514
Matthias Krüger [Sat, 18 Dec 2021 23:38:44 +0000 (00:38 +0100)]
Rollup merge of #92082 - jyn514:remove-from-iterator, r=jyn514

rustdoc: Write doc-comments directly instead of using FromIterator

The FromIterator impl made the code much harder to understand. The types
don't make sense until you realize there's a custom FromIterator impl.

This is the first commit from https://github.com/rust-lang/rust/pull/91305; since ``@camelid`` wrote it originally I don't feel bad unilaterally approving it.

r? ``@ghost``
``@bors`` r+

Note that this will conflict with https://github.com/rust-lang/rust/pull/92078.

2 years agoRollup merge of #92063 - OverOrion:patch-1, r=jyn514
Matthias Krüger [Sat, 18 Dec 2021 23:38:43 +0000 (00:38 +0100)]
Rollup merge of #92063 - OverOrion:patch-1, r=jyn514

docs: fix typo

Add missing `'s` to ` Let check it out.`

2 years agoRollup merge of #92020 - Folyd:stream-unpin, r=m-ou-se
Matthias Krüger [Sat, 18 Dec 2021 23:38:42 +0000 (00:38 +0100)]
Rollup merge of #92020 - Folyd:stream-unpin, r=m-ou-se

Remove P: Unpin bound on impl Stream for Pin

Similar to https://github.com/rust-lang/rust/pull/81363.

2 years agoRollup merge of #91956 - notriddle:notriddle/unused-parens-range, r=nagisa
Matthias Krüger [Sat, 18 Dec 2021 23:38:41 +0000 (00:38 +0100)]
Rollup merge of #91956 - notriddle:notriddle/unused-parens-range, r=nagisa

fix(rustc_lint): better detect when parens are necessary

Fixes #90807

2 years agoRollup merge of #91932 - Kixiron:randomize-seed, r=nagisa
Matthias Krüger [Sat, 18 Dec 2021 23:38:41 +0000 (00:38 +0100)]
Rollup merge of #91932 - Kixiron:randomize-seed, r=nagisa

Add user seed to `-Z randomize-layout`

Allows users of -`Z randomize-layout` to provide `-Z layout-seed=<seed>` in order to further randomizing type layout randomization. Extension of [compiler-team/#457](https://github.com/rust-lang/compiler-team/issues/457), allows users to change struct layouts without changing code and hoping that item path hashes change, aiding in detecting layout errors

2 years agoRollup merge of #91894 - pitaj:91867-incremental, r=Aaron1011
Matthias Krüger [Sat, 18 Dec 2021 23:38:40 +0000 (00:38 +0100)]
Rollup merge of #91894 - pitaj:91867-incremental, r=Aaron1011

Remove `in_band_lifetimes` from `rustc_incremental`

#91867

2 years agoRollup merge of #91834 - GuillaumeGomez:improve-gui-test-readability, r=jsha
Matthias Krüger [Sat, 18 Dec 2021 23:38:39 +0000 (00:38 +0100)]
Rollup merge of #91834 - GuillaumeGomez:improve-gui-test-readability, r=jsha

Update browser-ui-test version and improve rustdoc-gui tests readability

Since the `0.5.1`, we can use trailing commas. I also used the opportunity to clean up the existing tests.

r? `@notriddle`

2 years agoAuto merge of #91837 - Kobzol:stable-hash-map-avoid-sort, r=the8472
bors [Sat, 18 Dec 2021 21:23:37 +0000 (21:23 +0000)]
Auto merge of #91837 - Kobzol:stable-hash-map-avoid-sort, r=the8472

Avoid sorting in hash map stable hashing

Suggested by `@the8472` [here](https://github.com/rust-lang/rust/pull/89404#issuecomment-991813333). I hope that I understood it right, I replaced the sort with modular multiplication, which should be commutative.

Can I ask for a perf. run? However, locally it didn't help at all. Creating the `StableHasher` all over again is probably slowing it down quite a lot. And using `FxHasher` is not straightforward, because the keys and values only implement `HashStable` (and probably they shouldn't be just hashed via `Hash` anyway for it to actually be stable).

Maybe the `StableHash` interface could be changed somehow to better suppor these scenarios where the hasher is short-lived. Or the `StableHasher` implementation could have variants with e.g. a shorter buffer for these scenarios.

2 years agoAdd cron job to test against latest cranelift version every day
bjorn3 [Sat, 18 Dec 2021 17:55:33 +0000 (18:55 +0100)]
Add cron job to test against latest cranelift version every day

Fixes #1212

2 years agoAuto merge of #92065 - matthiaskrgr:rollup-qmpcsuj, r=matthiaskrgr
bors [Sat, 18 Dec 2021 18:08:51 +0000 (18:08 +0000)]
Auto merge of #92065 - matthiaskrgr:rollup-qmpcsuj, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #91566 (Apply path remapping to DW_AT_GNU_dwo_name when producing split DWARF)
 - #91926 (Remove `in_band_lifetimes` from `rustc_metadata`)
 - #91931 (Remove `in_band_lifetimes` from `rustc_codegen_llvm`)
 - #92024 (rustc_codegen_llvm: Give each codegen unit a unique DWARF name on all platforms, not just Apple ones.)
 - #92037 (Use a const ParamEnv when in default_method_body_is_const)
 - #92047 (Set `RUST_BACKTRACE=0` when running location-detail tests)
 - #92050 (Add a space and 2 grave accents )

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoExplicitly set no ELF flags for .rustc section
Nikita Popov [Fri, 17 Dec 2021 10:26:39 +0000 (11:26 +0100)]
Explicitly set no ELF flags for .rustc section

For a data section, the object crate will set the SHF_ALLOC by
default, which is exactly what we don't want. Explicitly set
sh_flags to zero to avoid this.

2 years agoWrite code directly instead of using FromIterator
Noah Lev [Wed, 24 Nov 2021 22:07:37 +0000 (14:07 -0800)]
Write code directly instead of using FromIterator

The FromIterator impl made the code much harder to understand. The types
don't make sense until you realize there's a custom FromIterator impl.

2 years agoRemove unnecessary `need_backline` function
Joshua Nelson [Sat, 18 Dec 2021 17:32:40 +0000 (11:32 -0600)]
Remove unnecessary `need_backline` function

2 years agoRemove `collapsed` field
Joshua Nelson [Sat, 18 Dec 2021 16:44:58 +0000 (10:44 -0600)]
Remove `collapsed` field

`render/context` always runs after `run_global_context`, so it was always set to `true`.

This is a holdover from when rustdoc allowed configuring passes, but the `collapse-docs` pass was
removed ages ago, and the ability to configure passes is about to be removed.

2 years agoUpdate example code for Vec::splice to change the length
ajtribick [Sat, 18 Dec 2021 14:59:33 +0000 (15:59 +0100)]
Update example code for Vec::splice to change the length

2 years agoAuto merge of #92064 - matthiaskrgr:rollup-tgj2pai, r=matthiaskrgr
bors [Sat, 18 Dec 2021 15:01:32 +0000 (15:01 +0000)]
Auto merge of #92064 - matthiaskrgr:rollup-tgj2pai, r=matthiaskrgr

Rollup of 7 pull requests

Successful merges:

 - #91858 (pass -Wl,-z,origin to set DF_ORIGIN when using rpath)
 - #91923 (Remove `in_band_lifetimes` from `rustc_query_impl`)
 - #91925 (Remove `in_band_lifetimes` from `rustc_privacy`)
 - #91977 (Clean up search code and unify function returned values)
 - #92018 (Fix typo in "new region bound" suggestion)
 - #92022 (Eliminate duplicate codes of expected_found_bool)
 - #92032 (hir: Do not introduce dummy type names for `extern` blocks in def paths)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup

2 years agoRemove triple method from FunctionCx
bjorn3 [Sat, 18 Dec 2021 14:46:30 +0000 (15:46 +0100)]
Remove triple method from FunctionCx

Instead use the default_call_conv field on TargetFrontendConfig to get
the default CallConv.

2 years agoSlightly reduce the amount of fx.module references
bjorn3 [Sat, 18 Dec 2021 14:33:31 +0000 (15:33 +0100)]
Slightly reduce the amount of fx.module references

2 years agoRollup merge of #92050 - r00ster91:patch-5, r=camelid
Matthias Krüger [Sat, 18 Dec 2021 13:49:45 +0000 (14:49 +0100)]
Rollup merge of #92050 - r00ster91:patch-5, r=camelid

Add a space and 2 grave accents

I only noticed this because I have this implementation copy pasted in some places in my code and I really can't wait for this to be stabilized...

2 years agoRollup merge of #92047 - Aaron1011:location-detail-backtrace, r=Mark-Simulacrum
Matthias Krüger [Sat, 18 Dec 2021 13:49:44 +0000 (14:49 +0100)]
Rollup merge of #92047 - Aaron1011:location-detail-backtrace, r=Mark-Simulacrum

Set `RUST_BACKTRACE=0` when running location-detail tests

This ensures that the output does not depend on environment variables
set in the shell.

2 years agoRollup merge of #92037 - fee1-dead:fix_env_dmbic, r=oli-obk
Matthias Krüger [Sat, 18 Dec 2021 13:49:42 +0000 (14:49 +0100)]
Rollup merge of #92037 - fee1-dead:fix_env_dmbic, r=oli-obk

Use a const ParamEnv when in default_method_body_is_const

r? `@oli-obk`

This PR fixes the param_env function to return `constness: Const` correctly for trait methods marked with `#[default_method_body_is_const]`. The snippet below is erroneously accepted by the compiler and has been fixed by this change. ([Playground](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=12dc6681b2eeee5f604203d96259eeb4))

```rust
#![feature(const_fn_trait_bound)]
#![feature(const_trait_impl)]

trait Tr {}
impl Tr for () {}

const fn foo<T>() where T: ~const Tr {}

pub trait Foo {
    #[default_method_body_is_const]
    fn foo() {
        foo::<()>();
    }
}
```

2 years agoRollup merge of #92024 - pcwalton:per-codegen-unit-names, r=davidtwco
Matthias Krüger [Sat, 18 Dec 2021 13:49:41 +0000 (14:49 +0100)]
Rollup merge of #92024 - pcwalton:per-codegen-unit-names, r=davidtwco

rustc_codegen_llvm: Give each codegen unit a unique DWARF name on all platforms, not just Apple ones.

To avoid breaking split DWARF, we need to ensure that each codegen unit has a
unique `DW_AT_name`. This is because there's a remote chance that different
codegen units for the same module will have entirely identical DWARF entries
for the purpose of the DWO ID, which would violate Appendix F ("Split Dwarf
Object Files") of the DWARF 5 specification. LLVM uses the algorithm specified
in section 7.32 "Type Signature Computation" to compute the DWO ID, which does
not include any fields that would distinguish compilation units. So we must
embed the codegen unit name into the `DW_AT_name`.

Closes #88521.