]> git.lizzy.rs Git - rust.git/log
rust.git
3 years agoAuto merge of #84754 - GuillaumeGomez:toggle-migration, r=jsha
bors [Sun, 2 May 2021 19:46:10 +0000 (19:46 +0000)]
Auto merge of #84754 - GuillaumeGomez:toggle-migration, r=jsha

Migrate trait and impl blocks' toggles into

Part of #83332

After this, I think only the "global" doc comment will be used as JS toggle. Once this PR is merged, I check what remains and remove them.

There is one change that this PR brings:

![Screenshot from 2021-04-30 15-39-04](https://user-images.githubusercontent.com/3050060/116713412-0f9ce200-a9d5-11eb-979c-2e7a73d16706.png)
![Screenshot from 2021-04-30 15-39-07](https://user-images.githubusercontent.com/3050060/116713415-10357880-a9d5-11eb-9868-1ba9e5ebf65e.png)

As you can see, I had to move the "undocumented" items below, they're not mixed with the others anymore. Unfortunately, I don't see a way to keep the current appearance without JS. As a a reminder, currently it looks like this:

![Screenshot from 2021-04-30 15-39-12](https://user-images.githubusercontent.com/3050060/116713547-31966480-a9d5-11eb-90bb-686042eefeec.png)
![Screenshot from 2021-04-30 15-39-15](https://user-images.githubusercontent.com/3050060/116713549-322efb00-a9d5-11eb-94a9-cfea073120db.png)

r? `@jsha`

3 years agoImprove code readability
Guillaume Gomez [Sat, 1 May 2021 18:41:00 +0000 (20:41 +0200)]
Improve code readability

3 years agoAuto merge of #84822 - Dylan-DPC:rollup-wego8d6, r=Dylan-DPC
bors [Sun, 2 May 2021 15:01:52 +0000 (15:01 +0000)]
Auto merge of #84822 - Dylan-DPC:rollup-wego8d6, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #84358 (Update closure capture error logging for disjoint captures for disjoint captures)
 - #84392 (Make AssertKind::fmt_assert_args public)
 - #84752 (Fix debuginfo for generators)
 - #84763 (shrink doctree::Module)
 - #84821 (Fix nit in rustc_session::options)

Failed merges:

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

3 years agoRollup merge of #84821 - jyn514:fix-nit, r=Mark-Simulacrum
Dylan DPC [Sun, 2 May 2021 15:00:25 +0000 (17:00 +0200)]
Rollup merge of #84821 - jyn514:fix-nit, r=Mark-Simulacrum

Fix nit in rustc_session::options

Addresses https://github.com/rust-lang/rust/pull/84802#discussion_r624578203 - I never actually pushed the commit before that PR got merged.

r? `@Mark-Simulacrum`

3 years agoRollup merge of #84763 - tdelabro:shrink-doctree-module, r=jyn514
Dylan DPC [Sun, 2 May 2021 15:00:24 +0000 (17:00 +0200)]
Rollup merge of #84763 - tdelabro:shrink-doctree-module, r=jyn514

shrink doctree::Module

helps https://github.com/rust-lang/rust/issues/76382

3 years agoRollup merge of #84752 - lrh2000:generator-debuginfo, r=tmandry
Dylan DPC [Sun, 2 May 2021 15:00:23 +0000 (17:00 +0200)]
Rollup merge of #84752 - lrh2000:generator-debuginfo, r=tmandry

Fix debuginfo for generators

First, all fields except the discriminant (including `outer_fields`) should be put into structures inside the variant part, which gives an equivalent layout but offers us much better integration with debuggers.

Second, artificial flags in generator variants should be removed.
 - Literally, variants are not artificial. We have `yield` statements, upvars and inner variables in the source code.
 - Functionally, we don't want debuggers to suppress the variants. It contains the state of the generator, which is useful when debugging. So they shouldn't be marked artificial.
 - Debuggers may use artificial flags to find the active variant. In this case, marking variants artificial will make debuggers not work properly.

Fixes #62572.
Fixes #79009.

And refer https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Debuginfo.20for.20generators.

3 years agoRollup merge of #84392 - dario23:fmt-assert-args-pub, r=varkor,RalfJung
Dylan DPC [Sun, 2 May 2021 15:00:22 +0000 (17:00 +0200)]
Rollup merge of #84392 - dario23:fmt-assert-args-pub, r=varkor,RalfJung

Make AssertKind::fmt_assert_args public

3 years agoRollup merge of #84358 - sexxi-goose:print_captures_borrowck_rebased, r=nikomatsakis
Dylan DPC [Sun, 2 May 2021 15:00:21 +0000 (17:00 +0200)]
Rollup merge of #84358 - sexxi-goose:print_captures_borrowck_rebased, r=nikomatsakis

Update closure capture error logging for disjoint captures for disjoint captures

Improved error logging when `#![feature(capture_disjoint_fields)]` is used.

Closes https://github.com/rust-lang/project-rfc-2229/issues/8
Closes https://github.com/rust-lang/project-rfc-2229/issues/36
Closes https://github.com/rust-lang/project-rfc-2229/issues/39
Closes #76005

3 years agoFix nit in rustc_session::options
Joshua Nelson [Sun, 2 May 2021 14:08:08 +0000 (10:08 -0400)]
Fix nit in rustc_session::options

3 years agoUpdate tests
Guillaume Gomez [Fri, 30 Apr 2021 13:29:24 +0000 (15:29 +0200)]
Update tests

3 years agoAdd missing CSS rules for associated types
Guillaume Gomez [Fri, 30 Apr 2021 14:50:03 +0000 (16:50 +0200)]
Add missing CSS rules for associated types

3 years agoMigrate trait and impl blocks' toggles into
Guillaume Gomez [Wed, 28 Apr 2021 19:19:52 +0000 (21:19 +0200)]
Migrate trait and impl blocks' toggles into

3 years agoAuto merge of #84802 - jyn514:option-dead-code, r=Mark-Simulacrum
bors [Sun, 2 May 2021 11:43:39 +0000 (11:43 +0000)]
Auto merge of #84802 - jyn514:option-dead-code, r=Mark-Simulacrum

Remove dead code in `rustc_session::Options`

- Don't recompile the same functions for each debugging option
  This reduces the amount of items in the crate by quite a lot.
- Remove unused `parse_opt_list` and `parse_pathbuf_push` functions
- Remove unused macro parameters
- Remove `allow(dead_code)`.

3 years agoAuto merge of #84805 - Mark-Simulacrum:no-dup-extend, r=cjgillot
bors [Sun, 2 May 2021 09:22:13 +0000 (09:22 +0000)]
Auto merge of #84805 - Mark-Simulacrum:no-dup-extend, r=cjgillot

Avoid generating QueryMap::extend for each key type

Should be a small win on compile times for rustc_query_impl, where this ends up getting codegen'd.

3 years agofix nll test stderr
Chris Pardy [Sun, 2 May 2021 08:01:45 +0000 (04:01 -0400)]
fix nll test stderr

3 years agoAuto merge of #84750 - jyn514:nix-cargo, r=Mark-Simulacrum
bors [Sun, 2 May 2021 07:09:38 +0000 (07:09 +0000)]
Auto merge of #84750 - jyn514:nix-cargo, r=Mark-Simulacrum

Don't download cargo twice when download-rustc is set

Previously, this caused a bug on NixOS:

1. bootstrap.py would download and patch stage0/cargo
2. bootstrap.py would download nightly cargo, but extract it to
   stage0/cargo instead of ci-rustc/cargo. It would still try (and fail) to patch ci-rustc/cargo.
3. bootstrap.py would fail to build rustbuild because stage0/cargo
   wasn't patched.

The "proper" fix is to extract nightly cargo to ci-rustc instead, but it
doesn't seem to be necessary at all, so this just skips downloading it
instead.

Fixes https://github.com/rust-lang/rust/issues/84702

3 years agoAuto merge of #84725 - sebpop:arm64-isb, r=joshtriplett
bors [Sun, 2 May 2021 04:54:31 +0000 (04:54 +0000)]
Auto merge of #84725 - sebpop:arm64-isb, r=joshtriplett

[Arm64] use isb instruction instead of yield in spin loops

On arm64 we have seen on several databases that ISB (instruction synchronization
barrier) is better to use than yield in a spin loop.  The yield instruction is a
nop.  The isb instruction puts the processor to sleep for some short time.  isb
is a good equivalent to the pause instruction on x86.

Below is an experiment that shows the effects of yield and isb on Arm64 and the
time of a pause instruction on x86 Intel processors.  The micro-benchmarks use
https://github.com/google/benchmark.git

```
$ cat a.cc
static void BM_scalar_increment(benchmark::State& state) {
  int i = 0;
  for (auto _ : state)
    benchmark::DoNotOptimize(i++);
}
BENCHMARK(BM_scalar_increment);
static void BM_yield(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("yield"::);
}
BENCHMARK(BM_yield);
static void BM_isb(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("isb"::);
}
BENCHMARK(BM_isb);
BENCHMARK_MAIN();

$ g++ -o run a.cc -O2 -lbenchmark -lpthread
$ ./run

--------------------------------------------------------------
Benchmark                    Time             CPU   Iterations
--------------------------------------------------------------

AWS Graviton2 (Neoverse-N1) processor:
BM_scalar_increment      0.485 ns        0.485 ns   1000000000
BM_yield                 0.400 ns        0.400 ns   1000000000
BM_isb                    13.2 ns         13.2 ns     52993304

AWS Graviton (A-72) processor:
BM_scalar_increment      0.897 ns        0.874 ns    801558633
BM_yield                 0.877 ns        0.875 ns    800002377
BM_isb                    13.0 ns         12.7 ns     55169412

Apple Arm64 M1 processor:
BM_scalar_increment      0.315 ns        0.315 ns   1000000000
BM_yield                 0.313 ns        0.313 ns   1000000000
BM_isb                    9.06 ns         9.06 ns     77259282
```

```
static void BM_pause(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("pause"::);
}
BENCHMARK(BM_pause);

Intel Skylake processor:
BM_scalar_increment      0.295 ns        0.295 ns   1000000000
BM_pause                  41.7 ns         41.7 ns     16780553
```

Tested on Graviton2 aarch64-linux with `./x.py test`.

3 years agoAuto merge of #84638 - mark-i-m:unignore-tests, r=Mark-Simulacrum
bors [Sun, 2 May 2021 02:04:29 +0000 (02:04 +0000)]
Auto merge of #84638 - mark-i-m:unignore-tests, r=Mark-Simulacrum

Unignore a couple of tests

3 years agoAvoid generating QueryMap::extend for each key type
Mark Rousskov [Sat, 1 May 2021 21:53:34 +0000 (17:53 -0400)]
Avoid generating QueryMap::extend for each key type

3 years agoAuto merge of #84471 - jyn514:linkcheck-llvm, r=Mark-Simulacrum
bors [Sat, 1 May 2021 23:16:12 +0000 (23:16 +0000)]
Auto merge of #84471 - jyn514:linkcheck-llvm, r=Mark-Simulacrum

Allow running `x.py test --stage 2 src/tools/linkchecker` with `download-rustc = true`

Previously, the LD_LIBRARY_PATH for the linkchecker looked like
`build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib`, because the linkchecker depends on the master copy of the standard library. This is true, but doesn't include the library path for the compiler libraries:

```
/home/joshua/src/rust/rust/build/x86_64-unknown-linux-gnu/stage1-tools-bin/error_index_generator: error while loading shared libraries: libLLVM-12-rust-1.53.0-nightly.so: cannot open shared object file: No such file or directory
```

That file is in
`build/x86_64-unknown-linux-gnu/stage1/lib/libLLVM-12-rust-1.53.0-nightly.so`,
which wasn't included in the dynamic path. This adds `build/x86_64-unknown-linux-gnu/stage1/lib` to the dynamic path for the linkchecker.

3 years agoRemove unused macro parameters
Joshua Nelson [Sat, 1 May 2021 22:54:35 +0000 (18:54 -0400)]
Remove unused macro parameters

3 years agoRemove unused `parse_pathbuf_push` function
Joshua Nelson [Sat, 1 May 2021 22:49:23 +0000 (18:49 -0400)]
Remove unused `parse_pathbuf_push` function

This also remove the `allow(dead_code)`.

3 years agoDon't recompile the same functions for each debugging option
Joshua Nelson [Sat, 1 May 2021 22:48:25 +0000 (18:48 -0400)]
Don't recompile the same functions for each debugging option

This reduces the amount of items in the crate by quite a lot.

3 years agoadd docstrings and add issue to FIXMEs
Chris Pardy [Thu, 29 Apr 2021 01:53:59 +0000 (21:53 -0400)]
add docstrings and add issue to FIXMEs

3 years agoUpdate compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs
ChrisPardy [Thu, 29 Apr 2021 01:32:28 +0000 (21:32 -0400)]
Update compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs

Co-authored-by: Niko Matsakis <niko@alum.mit.edu>
3 years agoUpdate compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs
ChrisPardy [Thu, 29 Apr 2021 01:32:01 +0000 (21:32 -0400)]
Update compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs

Co-authored-by: Niko Matsakis <niko@alum.mit.edu>
3 years agoUpdate compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs
ChrisPardy [Thu, 29 Apr 2021 01:31:49 +0000 (21:31 -0400)]
Update compiler/rustc_mir/src/borrow_check/diagnostics/explain_borrow.rs

Co-authored-by: Niko Matsakis <niko@alum.mit.edu>
3 years agoClosure capture borrow diagnostics for disjoint captures
Chris Pardy [Wed, 17 Mar 2021 06:51:27 +0000 (02:51 -0400)]
Closure capture borrow diagnostics for disjoint captures

3 years agoRemove unused parse_opt_list function
Joshua Nelson [Sat, 1 May 2021 22:36:50 +0000 (18:36 -0400)]
Remove unused parse_opt_list function

3 years agoAuto merge of #84410 - BoxyUwU:blue, r=varkor
bors [Sat, 1 May 2021 21:07:10 +0000 (21:07 +0000)]
Auto merge of #84410 - BoxyUwU:blue, r=varkor

Fix generic arg mismatch errors being ignored with explicit late bound lifetimes

Fixes #83466

r? `@varkor`

3 years agoAuto merge of #83114 - cjgillot:hop, r=eddyb
bors [Sat, 1 May 2021 18:03:25 +0000 (18:03 +0000)]
Auto merge of #83114 - cjgillot:hop, r=eddyb

Move HIR parenting information out of hir_owner

Split out of #82681.

The parent of a HIR node and its content are currently bundled together, but are rarely used together.
This PR separates both information in two distinct queries for HIR owners.
This reduces incremental invalidation for HIR items that appear within a function body when this body (and the local ids) changes.

3 years agotest: *sneezes*
Ellen [Sat, 1 May 2021 17:35:56 +0000 (18:35 +0100)]
test: *sneezes*

3 years agoAuto merge of #83857 - ABouttefeux:master, r=jyn514
bors [Sat, 1 May 2021 15:36:23 +0000 (15:36 +0000)]
Auto merge of #83857 - ABouttefeux:master, r=jyn514

added --no-run option for rustdoc

resolve #59053

add `--no-run` option for `rustdoc` for compiling doc test but not running them.
Intended for use with `--persist-doctests`.

3 years agocompute where_outer on demand, remove it from Module
Timothée Delabrouille [Sat, 1 May 2021 13:33:49 +0000 (15:33 +0200)]
compute where_outer on demand, remove it from Module

3 years agoAuto merge of #84658 - Amanieu:reserved_regs, r=petrochenkov
bors [Sat, 1 May 2021 13:01:24 +0000 (13:01 +0000)]
Auto merge of #84658 - Amanieu:reserved_regs, r=petrochenkov

Be stricter about rejecting LLVM reserved registers in asm!

LLVM will silently produce incorrect code if these registers are used as operands.

cc `@rust-lang/wg-inline-asm`

3 years agoReserve x18 on AArch64 and un-reserve x16
Amanieu d'Antras [Fri, 30 Apr 2021 17:30:30 +0000 (18:30 +0100)]
Reserve x18 on AArch64 and un-reserve x16

3 years agoAuto merge of #84786 - JohnTitor:rollup-j5omx6f, r=JohnTitor
bors [Sat, 1 May 2021 09:59:54 +0000 (09:59 +0000)]
Auto merge of #84786 - JohnTitor:rollup-j5omx6f, r=JohnTitor

Rollup of 8 pull requests

Successful merges:

 - #84601 (rustdoc: Only store locations in Cache::extern_locations and calculate the other info on-demand)
 - #84704 (platform-support.md: Update for consistency with Target Tier Policy)
 - #84724 (Replace llvm::sys::fs::F_None with llvm::sys::fs::OF_None)
 - #84740 (Reset the docs' copy path button after 1 second)
 - #84749 (Sync `rustc_codegen_cranelift`)
 - #84756 (Add a ToC to the Target Tier Policy documentation)
 - #84765 (Update cargo)
 - #84774 (Fix misspelling)

Failed merges:

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

3 years agoApply suggestions from code review
Aliénore Bouttefeux [Sat, 1 May 2021 09:46:00 +0000 (11:46 +0200)]
Apply suggestions from code review

Co-authored-by: Joshua Nelson <joshua@yottadb.com>
3 years agoRollup merge of #84774 - kraai:fix-misspelling, r=jyn514
Yuki Okushi [Sat, 1 May 2021 09:32:40 +0000 (18:32 +0900)]
Rollup merge of #84774 - kraai:fix-misspelling, r=jyn514

Fix misspelling

Fix a misspelling of "or" in the source_code_based_coverage section of
*The Rust Unstable Book*.

3 years agoRollup merge of #84765 - ehuss:update-cargo, r=ehuss
Yuki Okushi [Sat, 1 May 2021 09:32:38 +0000 (18:32 +0900)]
Rollup merge of #84765 - ehuss:update-cargo, r=ehuss

Update cargo

7 commits in 4369396ce7d270972955d876eaa4954bea56bcd9..f3e13226d6d17a2bc5f325303494b43a45f53b7f
2021-04-27 14:35:53 +0000 to 2021-04-30 21:50:27 +0000
- Fix problem with metrics test. (rust-lang/cargo#9440)
- Show transfer rate when fetching/updating registry index (rust-lang/cargo#9395)
- Fix collision doc tests randomly failing. (rust-lang/cargo#9434)
- Add missing tracking issues and unstable docs. (rust-lang/cargo#9429)
- Fix dep-info files emitting paths relative to deps' roots (rust-lang/cargo#9421)
- Upgrade to GitHub-native Dependabot (rust-lang/cargo#9428)
- Only deny the `unused_mut` lint (rust-lang/cargo#9425)

3 years agoRollup merge of #84756 - badboy:toc-for-tier-policy, r=GuillaumeGomez
Yuki Okushi [Sat, 1 May 2021 09:32:37 +0000 (18:32 +0900)]
Rollup merge of #84756 - badboy:toc-for-tier-policy, r=GuillaumeGomez

Add a ToC to the Target Tier Policy documentation

The policy document is quite lengthy, I figured it might be good to have a quick way to jump to the specific tier policies.

3 years agoRollup merge of #84749 - XAMPPRocky:cranelift-rebase, r=bjorn3
Yuki Okushi [Sat, 1 May 2021 09:32:35 +0000 (18:32 +0900)]
Rollup merge of #84749 - XAMPPRocky:cranelift-rebase, r=bjorn3

Sync `rustc_codegen_cranelift`

Retrying #84746

r? ``@bjorn3``

---

Edit(bjorn3): Since the last sync there have been some refactorings around the driver code in preparation for a planned new feature. In addition ``@mominul`` implemented `-Ctarget-cpu` support and ``@XAMPPRocky`` fixed compilation of cg_clif itself for Windows with the MSVC toolchain.

3 years agoRollup merge of #84740 - r00ster91:patch-6, r=GuillaumeGomez
Yuki Okushi [Sat, 1 May 2021 09:32:35 +0000 (18:32 +0900)]
Rollup merge of #84740 - r00ster91:patch-6, r=GuillaumeGomez

Reset the docs' copy path button after 1 second

I like that this copy path button on the top next to the type/module's name changes to a check mark when you successfully clicked and copied the path but I find it really weird how the icon stays that check mark forever after the first time of clicking it. Imagine you leave that documentation tab open and come back after 2 hours and you still see that check mark in that box because you copied the path 2 hours ago. You will probably be confused and you might've forgotten what that button even does (even more so currently where this is a new feature, or when you simply don't use it often), so I really think at some point it should go back to the ⎘ icon which, at least to me, pretty clearly indicates copying, whereas the check mark (if it stays there for so long) could falsely look like a verification mark indicating "this module is verified" or something like that.
I believe after a longer period of time it's not logical to still tell the user "yes you've copied this successful".

In addition to this timeout, maybe it could be made so that you can't copy again until this cooldown of 1 second is over, but I'm not sure how useful or user-friendly that feature would be so maybe it's fine the way it is now.
Also the timeout is cleared every time you click again so if you constantly click it, it won't reset during that.

3 years agoRollup merge of #84724 - MaskRay:sys-fs, r=petrochenkov
Yuki Okushi [Sat, 1 May 2021 09:32:34 +0000 (18:32 +0900)]
Rollup merge of #84724 - MaskRay:sys-fs, r=petrochenkov

Replace llvm::sys::fs::F_None with llvm::sys::fs::OF_None

The former is deprecated.
OF_None has been available in LLVM since 2018-06.

-----

OF_None (https://reviews.llvm.org/rG1f67a3cba9b09636c56e2109d8a35ae96dc15782) exists in LLVM 9.
https://reviews.llvm.org/D101506 may drop `F_None` support.

3 years agoRollup merge of #84704 - joshtriplett:platform-support-target-tier-policy, r=pietroalbini
Yuki Okushi [Sat, 1 May 2021 09:32:33 +0000 (18:32 +0900)]
Rollup merge of #84704 - joshtriplett:platform-support-target-tier-policy, r=pietroalbini

platform-support.md: Update for consistency with Target Tier Policy

Split into five sections to match the tiers: "Tier 1 with Host Tools",
"Tier 1", "Tier 2 with Host Tools", "Tier 2", and "Tier 3". Explain each
tier briefly in prose, and link to the corresponding section of the
policy for full requirements.

Drop the `host` columns from the first four, since the different
sections distinguish that. (Keep the `host` column for "Tier 3", since
it's a single list and the `host` column just indicates if host tools
are expected to work.)

Targets with host tools always have full support for std, so drop the
`std` column from those.

Move the explanations of the `std` column next to the appropriate
tables, and drop the unknown/WIP case for tier 2 targets.

Use "target" terminology consistently throughout.

Sort each table by target name.

3 years agoRollup merge of #84601 - tdelabro:rustdoc-get-rid-of-cache-extern_locations, r=jyn514
Yuki Okushi [Sat, 1 May 2021 09:32:31 +0000 (18:32 +0900)]
Rollup merge of #84601 - tdelabro:rustdoc-get-rid-of-cache-extern_locations, r=jyn514

rustdoc: Only store locations in Cache::extern_locations and calculate the other info on-demand

 help #84588

3 years agoAuto merge of #84582 - richkadel:issue-84561, r=tmandry
bors [Sat, 1 May 2021 07:48:24 +0000 (07:48 +0000)]
Auto merge of #84582 - richkadel:issue-84561, r=tmandry

Vastly improves coverage spans for macros

Fixes: #84561
This resolves problems where macros like `trace!(...)` would show zero coverage if tracing was disabled, and `assert_eq!(...)` would show zero coverage if the assertion did not fail, because only one coverage span was generated, for the branch.

This PR started with an idea that I could just drop branching blocks with same span as expanded macro. (See the fixed issue for more details.)

That did help, but it didn't resolve everything.

I also needed to add a span specifically for the macro name (plus `!`) to ensure the macro gets coverage even if it's internal expansion adds conditional branching blocks that are retained, and would otherwise drop the outer span. Now that outer span is _only_ the `(argument, list)`, which can safely be dropped now), because the macro name has its own span.

While testing, I also noticed the spanview debug output can cause an ICE on a function with no body. The
workaround for this is included in this PR (separate commit).

r? `@tmandry`
cc? `@wesleywiser`

3 years agoFix misspelling
Matthew James Kraai [Sat, 1 May 2021 03:14:53 +0000 (20:14 -0700)]
Fix misspelling

3 years agoAuto merge of #84463 - jyn514:refactor-impl, r=CraftSpider
bors [Sat, 1 May 2021 02:53:55 +0000 (02:53 +0000)]
Auto merge of #84463 - jyn514:refactor-impl, r=CraftSpider

rustdoc: Remove unnecessary `provided_trait_methods` field from Impl

It can be calculated on-demand.

Helps with https://github.com/rust-lang/rust/issues/76382.

3 years agoRemove unnecessary `provided_trait_methods` field from Impl
Joshua Nelson [Fri, 23 Apr 2021 01:02:21 +0000 (21:02 -0400)]
Remove unnecessary `provided_trait_methods` field from Impl

It can be calculated on-demand.

3 years agoAuto merge of #84747 - pietroalbini:bump-version, r=pietroalbini
bors [Sat, 1 May 2021 00:31:56 +0000 (00:31 +0000)]
Auto merge of #84747 - pietroalbini:bump-version, r=pietroalbini

Bump version to 1.54.0

cc `@Mark-Simulacrum`
r? `@ghost`

3 years agoUpdate cargo
Eric Huss [Fri, 30 Apr 2021 22:57:47 +0000 (15:57 -0700)]
Update cargo

3 years agoAuto merge of #84719 - Mark-Simulacrum:reduce-query-impl, r=davidtwco
bors [Fri, 30 Apr 2021 22:21:07 +0000 (22:21 +0000)]
Auto merge of #84719 - Mark-Simulacrum:reduce-query-impl, r=davidtwco

Move iter_results to dyn FnMut rather than a generic

This means that we're no longer generating the iteration/locking code for each invocation site of iter_results, rather just once per query (roughly), which seems much better: this is a 15% win in instruction counts when compiling the rustc_query_impl crate. The code where this is used also is pretty cold, I suspect; the old solution didn't fully monomorphize either.

3 years agoAuto merge of #84753 - hyd-dev:update-miri, r=RalfJung
bors [Fri, 30 Apr 2021 19:55:47 +0000 (19:55 +0000)]
Auto merge of #84753 - hyd-dev:update-miri, r=RalfJung

Update Miri

To include rust-lang/miri#1783, hence fixes #84741.

r? `@RalfJung`

3 years agoAvoid using rbx in SGX inline assembly since it is reserved
Amanieu d'Antras [Fri, 30 Apr 2021 17:27:12 +0000 (18:27 +0100)]
Avoid using rbx in SGX inline assembly since it is reserved

3 years agoMerge commit '15c8d31392b9fbab3b3368b67acc4bbe5983115a' into cranelift-rebase
Erin Power [Fri, 30 Apr 2021 16:46:59 +0000 (18:46 +0200)]
Merge commit '15c8d31392b9fbab3b3368b67acc4bbe5983115a' into cranelift-rebase

3 years agoNo-op register_jit on Windows (#1170)
XAMPPRocky [Fri, 30 Apr 2021 16:44:20 +0000 (18:44 +0200)]
No-op register_jit on Windows (#1170)

* No-op register_jit on Windows

Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
3 years agoAdd a ToC to the Target Tier Policy documentation
Jan-Erik Rediger [Fri, 30 Apr 2021 15:18:58 +0000 (17:18 +0200)]
Add a ToC to the Target Tier Policy documentation

3 years agoAuto merge of #84654 - alexcrichton:update-llvm-, r=cuviper
bors [Fri, 30 Apr 2021 14:39:27 +0000 (14:39 +0000)]
Auto merge of #84654 - alexcrichton:update-llvm-, r=cuviper

Update LLVM for more wasm simd updates

This fixes the temporary regression introduced in #84339 where the wasm
target uses `fpto{s,u}i` intrinsics but the codegen for those intrinsics
with the `+nontrapping-fptoint` LLVM feature wasn't very good (aka it
didn't use the wasm instruction). The fixes brought in here fix that and
also implement the second-to-last simd instruction in LLVM.

3 years agoRemove artificial flag from generator variants
lrh2000 [Fri, 30 Apr 2021 12:02:53 +0000 (20:02 +0800)]
Remove artificial flag from generator variants

 - Literally, variants are not artificial. We have `yield` statements,
   upvars and inner variables in the source code.
 - Functionally, we don't want debuggers to suppress the variants. It
   contains the state of the generator, which is useful when debugging.
   So they shouldn't be marked artificial.
 - Debuggers may use artificial flags to find the active variant. In
   this case, marking variants artificial will make debuggers not work
   properly.

Fixes #79009.

3 years agoUpdate LLVM submodule
Amanieu d'Antras [Thu, 29 Apr 2021 00:16:53 +0000 (01:16 +0100)]
Update LLVM submodule

Fixes #84025

3 years agoUpdate LLVM for more wasm simd updates
Alex Crichton [Wed, 28 Apr 2021 14:19:49 +0000 (07:19 -0700)]
Update LLVM for more wasm simd updates

This fixes the temporary regression introduced in #84339 where the wasm
target uses `fpto{s,u}i` intrinsics but the codegen for those intrinsics
with the `+nontrapping-fptoint` LLVM feature wasn't very good (aka it
didn't use the wasm instruction). The fixes brought in here fix that and
also implement the second-to-last simd instruction in LLVM.

3 years agoUpdate Miri
hyd-dev [Fri, 30 Apr 2021 14:22:35 +0000 (22:22 +0800)]
Update Miri

3 years agoDon't download cargo twice when download-rustc is set
Joshua Nelson [Fri, 30 Apr 2021 14:19:26 +0000 (14:19 +0000)]
Don't download cargo twice when download-rustc is set

Previously, this caused a bug on NixOS:

1. bootstrap.py would download and patch stage0/cargo
2. bootstrap.py would download nightly cargo, but extract it to
   stage0/cargo instead of ci-rustc/cargo.
3. bootstrap.py would fail to build rustbuild because stage0/cargo
   wasn't patched.

The "proper" fix is to extract nightly cargo to ci-rustc instead, but it
doesn't seem to be necessary at all, so this just skips downloading it
instead.

3 years ago[cg_clif] Fix run_jit from sync
Erin Power [Fri, 30 Apr 2021 13:27:05 +0000 (15:27 +0200)]
[cg_clif] Fix run_jit from sync

3 years agobump version to 1.54.0
Pietro Albini [Fri, 30 Apr 2021 13:24:00 +0000 (15:24 +0200)]
bump version to 1.54.0

3 years agoSync rustc_codegen_cranelift 'ddd4ce25535cf71203ba3700896131ce55fde795'
Erin Power [Fri, 30 Apr 2021 12:49:58 +0000 (14:49 +0200)]
Sync rustc_codegen_cranelift 'ddd4ce25535cf71203ba3700896131ce55fde795'

3 years agoAuto merge of #84716 - joshtriplett:chroot, r=dtolnay
bors [Fri, 30 Apr 2021 12:19:37 +0000 (12:19 +0000)]
Auto merge of #84716 - joshtriplett:chroot, r=dtolnay

Add std::os::unix::fs::chroot to change the root directory of the current process

This is a straightforward wrapper that uses the existing helpers for C
string handling and errno handling.

Having this available is convenient for UNIX utility programs written in
Rust, and avoids having to call the unsafe `libc::chroot` directly and
handle errors manually, in a program that may otherwise be entirely safe
code.

3 years agoerror when --no-run is present without --test
Aliénore Bouttefeux [Fri, 30 Apr 2021 10:36:22 +0000 (12:36 +0200)]
error when --no-run is present without --test

3 years ago`copy_path` -> `window.copy_path` + add semicolon
r00ster [Fri, 30 Apr 2021 10:06:15 +0000 (12:06 +0200)]
`copy_path` -> `window.copy_path` + add semicolon

3 years agoAuto merge of #84522 - CDirkx:cmath, r=yaahc
bors [Fri, 30 Apr 2021 09:52:32 +0000 (09:52 +0000)]
Auto merge of #84522 - CDirkx:cmath, r=yaahc

Reuse `sys::unix::cmath` on other platforms

Reuse `sys::unix::cmath` on all non-`windows` platforms.

`unix` is chosen as the canonical location instead of `unsupported` or `common` because `unsupported` doesn't make sense semantically and `common` is reserved for code that is supported on all platforms. Also `unix` is already the home of some non-`windows` code that is technically not exclusive to `unix` like `unix::path`.

3 years agoApply suggestions
r00ster [Fri, 30 Apr 2021 09:42:07 +0000 (11:42 +0200)]
Apply suggestions

3 years agoRemove unused parameter
bjorn3 [Fri, 30 Apr 2021 08:52:37 +0000 (10:52 +0200)]
Remove unused parameter

3 years agoMove outer fields of enums into variant parts in debuginfo
lrh2000 [Fri, 30 Apr 2021 08:14:42 +0000 (16:14 +0800)]
Move outer fields of enums into variant parts in debuginfo

All fields except the discriminant (including `outer_fields`)
should be put into structures inside the variant part, which gives
an equivalent layout but offers us much better integration with
debuggers.

3 years agoReset the docs' copy path button after 1 second
r00ster [Fri, 30 Apr 2021 08:18:14 +0000 (10:18 +0200)]
Reset the docs' copy path button after 1 second

3 years agoRebuilt out of date tests and fixed an old bug now exposed
Rich Kadel [Fri, 30 Apr 2021 07:14:51 +0000 (00:14 -0700)]
Rebuilt out of date tests and fixed an old bug now exposed

3 years agoAdd std::os::unix::fs::chroot to change the root directory of the current process
Josh Triplett [Thu, 29 Apr 2021 20:47:28 +0000 (13:47 -0700)]
Add std::os::unix::fs::chroot to change the root directory of the current process

This is a straightforward wrapper that uses the existing helpers for C
string handling and errno handling.

Having this available is convenient for UNIX utility programs written in
Rust, and avoids having to call the unsafe `libc::chroot` directly and
handle errors manually, in a program that may otherwise be entirely safe
code.

3 years agoAuto merge of #84401 - crlf0710:impl_main_by_path, r=petrochenkov
bors [Fri, 30 Apr 2021 06:59:37 +0000 (06:59 +0000)]
Auto merge of #84401 - crlf0710:impl_main_by_path, r=petrochenkov

Implement RFC 1260 with feature_name `imported_main`.

This is the second extraction part of #84062 plus additional adjustments.
This (mostly) implements RFC 1260.

However there's still one test case failure in the extern crate case. Maybe `LocalDefId` doesn't work here? I'm not sure.

cc https://github.com/rust-lang/rust/issues/28937
r? `@petrochenkov`

3 years agoAuto merge of #84729 - jackh726:rollup-dnm8kg5, r=jackh726
bors [Thu, 29 Apr 2021 23:28:28 +0000 (23:28 +0000)]
Auto merge of #84729 - jackh726:rollup-dnm8kg5, r=jackh726

Rollup of 10 pull requests

Successful merges:

 - #84451 (Use flex more consistently)
 - #84590 (Point out that behavior might be switched on 2015 and 2018 too one day)
 - #84682 (Don't rebind in `transitive_bounds_that_define_assoc_type`)
 - #84683 (Minor grammar tweaks for readability to btree internals)
 - #84688 (Remove unnecessary CSS rules for search results)
 - #84690 (Remove unneeded bottom margin on search results)
 - #84692 (Link between std::env::{var, var_os} and std::env::{vars, vars_os})
 - #84705 (make feature recommendations optional)
 - #84706 (Drop alias `reduce` for `fold` - we have a `reduce` function)
 - #84713 (Fix labels for regression issue template)

Failed merges:

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

3 years agoRollup merge of #84713 - camelid:fix-regression-issue-template, r=Mark-Simulacrum
Jack Huey [Thu, 29 Apr 2021 23:27:27 +0000 (19:27 -0400)]
Rollup merge of #84713 - camelid:fix-regression-issue-template, r=Mark-Simulacrum

Fix labels for regression issue template

Each label needs to be separated by a comma (see the ICE issue template
for an example of correct usage).

As a result of this problem, the `regression-untriaged` label has not
been automatically added to issues opened with this template.

See c127530be76bd8aebc7b61f3b4a54f1be577f74c for another example of this.

r? `````@Mark-Simulacrum`````

3 years agoRollup merge of #84706 - joshtriplett:reduce-aliases, r=m-ou-se
Jack Huey [Thu, 29 Apr 2021 23:27:27 +0000 (19:27 -0400)]
Rollup merge of #84706 - joshtriplett:reduce-aliases, r=m-ou-se

Drop alias `reduce` for `fold` - we have a `reduce` function

Searching for "reduce" currently puts the `reduce` alias for `fold`
above the actual `reduce` function. The `reduce` function already has a
cross-reference for `fold`, and vice versa.

3 years agoRollup merge of #84705 - lcnr:const_generics-rec, r=joshtriplett
Jack Huey [Thu, 29 Apr 2021 23:27:26 +0000 (19:27 -0400)]
Rollup merge of #84705 - lcnr:const_generics-rec, r=joshtriplett

make feature recommendations optional

this is what we're already doing for other feature gates, so it's better to be consistent

3 years agoRollup merge of #84692 - r00ster91:var-var_os-vars, r=joshtriplett
Jack Huey [Thu, 29 Apr 2021 23:27:25 +0000 (19:27 -0400)]
Rollup merge of #84692 - r00ster91:var-var_os-vars, r=joshtriplett

Link between std::env::{var, var_os} and std::env::{vars, vars_os}

In #84551 I linked between `std::env::{args, args_os}` and this PR does the same but for `std::env::{var, var_os}` and `std::env::{vars, vars_os}`. Now all of `std::env::{var, var_os, vars, vars_os, args, args_os}` should each mention their `_os` or non-`_os` equivalent in the docs so that you can easily navigate between them.

3 years agoRollup merge of #84690 - GuillaumeGomez:unneeded-bottom-margin-search-results, r...
Jack Huey [Thu, 29 Apr 2021 23:27:24 +0000 (19:27 -0400)]
Rollup merge of #84690 - GuillaumeGomez:unneeded-bottom-margin-search-results, r=Nemo157

Remove unneeded bottom margin on search results

As you can see, there is still more than enough space at the bottom:

![Screenshot from 2021-04-29 11-26-57](https://user-images.githubusercontent.com/3050060/116530090-ea797800-a8dd-11eb-8eef-2288cf68e0d2.png)

r? ``````@Nemo157``````

3 years agoRollup merge of #84688 - GuillaumeGomez:remove-unnecessary-css-for-search-results...
Jack Huey [Thu, 29 Apr 2021 23:27:24 +0000 (19:27 -0400)]
Rollup merge of #84688 - GuillaumeGomez:remove-unnecessary-css-for-search-results, r=Nemo157

Remove unnecessary CSS rules for search results

Discovered that this was useless when working on https://github.com/rust-lang/docs.rs/issues/1382.

r? ````````@Nemo157````````

3 years agoRollup merge of #84683 - Ben-Lichtman:grammar, r=jonas-schievink
Jack Huey [Thu, 29 Apr 2021 23:27:23 +0000 (19:27 -0400)]
Rollup merge of #84683 - Ben-Lichtman:grammar, r=jonas-schievink

Minor grammar tweaks for readability to btree internals

I was reading through the btree implementation and I noticed some grammar that could be improved in Node.rs so here is what I think would be a minor improvement.

3 years agoRollup merge of #84682 - jackh726:transitive_bounds_rebind, r=nikomatsakis
Jack Huey [Thu, 29 Apr 2021 23:27:22 +0000 (19:27 -0400)]
Rollup merge of #84682 - jackh726:transitive_bounds_rebind, r=nikomatsakis

Don't rebind in `transitive_bounds_that_define_assoc_type`

Fixes #83737
Fixes #84604

Also fixes another issue that I don't have a test for, popped up in [zulip](https://rust-lang.zulipchat.com/#narrow/stream/144729-wg-traits/topic/Duplicate.20symbol.20error.20.2384604/near/236570445)

r? `````@nikomatsakis`````

3 years agoRollup merge of #84590 - est31:array_into_iter, r=nikomatsakis
Jack Huey [Thu, 29 Apr 2021 23:27:21 +0000 (19:27 -0400)]
Rollup merge of #84590 - est31:array_into_iter, r=nikomatsakis

Point out that behavior might be switched on 2015 and 2018 too one day

Reword documentation to make it clear that behaviour can be switched on older editions too, one day in the future. It doesn't *have* to be switched, but I think it's good to have it as an option and re-evaluate it a few months/years down the line when e.g. the crates that showed up in crater were broken by different changes in the language already.

cc #25725, #65819, #66145, #84147 , and https://github.com/rust-lang/rust/issues/84133#issuecomment-818005314

3 years agoRollup merge of #84451 - torhovland:flex, r=jsha
Jack Huey [Thu, 29 Apr 2021 23:27:20 +0000 (19:27 -0400)]
Rollup merge of #84451 - torhovland:flex, r=jsha

Use flex more consistently

Builds on #84376, related to #84354.

- Fully replaces `float: right` with `flex` on `.content .out-of-band`.
- Uses `flex` more consistently with existing usage (on `h3`, `h4`, etc.).

Tested on various widths to make sure the pages behave as before.

3 years ago[Arm64] use isb instruction instead of yield in spin loops
Sebastian Pop [Thu, 29 Apr 2021 16:15:50 +0000 (16:15 +0000)]
[Arm64] use isb instruction instead of yield in spin loops

On arm64 we have seen on several databases that ISB (instruction synchronization
barrier) is better to use than yield in a spin loop.  The yield instruction is a
nop.  The isb instruction puts the processor to sleep for some short time.  isb
is a good equivalent to the pause instruction on x86.

Below is an experiment that shows the effects of yield and isb on Arm64 and the
time of a pause instruction on x86 Intel processors.  The micro-benchmarks use
https://github.com/google/benchmark.git

$ cat a.cc
static void BM_scalar_increment(benchmark::State& state) {
  int i = 0;
  for (auto _ : state)
    benchmark::DoNotOptimize(i++);
}
BENCHMARK(BM_scalar_increment);
static void BM_yield(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("yield"::);
}
BENCHMARK(BM_yield);
static void BM_isb(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("isb"::);
}
BENCHMARK(BM_isb);
BENCHMARK_MAIN();

$ g++ -o run a.cc -O2 -lbenchmark -lpthread
$ ./run

--------------------------------------------------------------
Benchmark                    Time             CPU   Iterations
--------------------------------------------------------------

AWS Graviton2 (Neoverse-N1) processor:
BM_scalar_increment      0.485 ns        0.485 ns   1000000000
BM_yield                 0.400 ns        0.400 ns   1000000000
BM_isb                    13.2 ns         13.2 ns     52993304

AWS Graviton (A-72) processor:
BM_scalar_increment      0.897 ns        0.874 ns    801558633
BM_yield                 0.877 ns        0.875 ns    800002377
BM_isb                    13.0 ns         12.7 ns     55169412

Apple Arm64 M1 processor:
BM_scalar_increment      0.315 ns        0.315 ns   1000000000
BM_yield                 0.313 ns        0.313 ns   1000000000
BM_isb                    9.06 ns         9.06 ns     77259282

static void BM_pause(benchmark::State& state) {
  for (auto _ : state)
    asm volatile("pause"::);
}
BENCHMARK(BM_pause);

Intel Skylake processor:
BM_scalar_increment      0.295 ns        0.295 ns   1000000000
BM_pause                  41.7 ns         41.7 ns     16780553

Tested on Graviton2 aarch64-linux with `./x.py test`.

3 years agoReplace llvm::sys::fs::F_None with llvm::sys::fs::OF_None
Fangrui Song [Thu, 29 Apr 2021 22:25:17 +0000 (15:25 -0700)]
Replace llvm::sys::fs::F_None with llvm::sys::fs::OF_None

The former is deprecated.
OF_None has been available in LLVM since 2018-06.

3 years agoMove iter_results to dyn FnMut rather than a generic
Mark Rousskov [Thu, 29 Apr 2021 14:23:17 +0000 (10:23 -0400)]
Move iter_results to dyn FnMut rather than a generic

This means that we're no longer generating the iteration/locking code for each
invocation site of iter_results, rather just once per query.

This is a 15% win in instruction counts when compiling the rustc_query_impl crate.

3 years agoFix labels for regression issue template
Camelid [Thu, 29 Apr 2021 20:13:28 +0000 (13:13 -0700)]
Fix labels for regression issue template

Each label needs to be separated by a comma (see the ICE issue template
for an example of correct usage).

As a result of this problem, the `regression-untriaged` label has not
been automatically added to issues opened with this template.

See c127530be76bd8aebc7b61f3b4a54f1be577f74c for another example of this.

3 years agoAuto merge of #84708 - pnkfelix:revert-77885-everywhere, r=Mark-Simulacrum
bors [Thu, 29 Apr 2021 20:06:07 +0000 (20:06 +0000)]
Auto merge of #84708 - pnkfelix:revert-77885-everywhere, r=Mark-Simulacrum

Revert PR 77885 everywhere

Change to probe-stack=call (instead of inline-or-call) everywhere again, for now.

We had already reverted the change on stable back in PR #83412.

Since then, we've had some movement on issue #83139, but not a 100% fix.

But also since then, we had bug reported, issue #84667, that looks like outright codegen breakage, rather than problems confined to debuginfo issues.    So we are reverting PR #77885 on stable and beta. We'll reland PR #77885 (or some    variant) switching back to an LLVM-dependent selection of out-of-line call vs    inline-asm, after these other issues have been resolved.

3 years agoIntroduce a hir_owner_parent query.
Camille GILLOT [Sat, 6 Mar 2021 10:25:41 +0000 (11:25 +0100)]
Introduce a hir_owner_parent query.

3 years agoMove parenting info to index_hir.
Camille GILLOT [Fri, 5 Mar 2021 19:09:33 +0000 (20:09 +0100)]
Move parenting info to index_hir.

3 years agoDo not compute entry parent when not required.
Camille GILLOT [Wed, 3 Mar 2021 20:50:45 +0000 (21:50 +0100)]
Do not compute entry parent when not required.

3 years agoRemove parent_node.
Camille GILLOT [Wed, 3 Mar 2021 20:46:09 +0000 (21:46 +0100)]
Remove parent_node.

3 years agoSplit crate_hash from index_hir.
Camille GILLOT [Sun, 28 Feb 2021 17:58:50 +0000 (18:58 +0100)]
Split crate_hash from index_hir.

3 years agoMake current_hir_id_owner a simple tuple.
Camille GILLOT [Sun, 28 Feb 2021 15:18:06 +0000 (16:18 +0100)]
Make current_hir_id_owner a simple tuple.