Skip to content

Conversation

@dianqk
Copy link
Member

@dianqk dianqk commented Oct 10, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Qelxiros and others added 29 commits August 21, 2025 16:21
Co-authored-by: David Tolnay <dtolnay@gmail.com>
This is the target for 32-bit Cortex-A bare-metal, when using the FPU. The target is well tested by the Embedded Devices Working Group, and the soft-float target (armv7a-none-eabi) is already Tier 2.
This is the target for supporting Arm Cortex-R52 bare-metal systems, which are common in safety-critical systems.
Regression test for const promotion with Option<Ordering> https://rust.godbolt.org/z/EjxqE8WcT Fixes rust-lang#139093 Add a regression test to ensure that comparing `Option<Ordering>` to `Some(Ordering::Equal)` does not trigger unnecessary const promotion in MIR. Previously, inlined constants like `Some(Ordering::Equal)` would get promoted, leading to more complex MIR and redundant LLVM IR checks. This test verifies that both the direct form and the `let`-binding form now generate equivalent, simplified MIR. r? cjgillot
…, r=dtolnay implement Extend<{Group, Literal, Punct, Ident}> for TokenStream Tracking issue: rust-lang#112815
…, r=petrochenkov Promote armv8r-none-eabihf target to Tier 2 This PR promotes armv8r-none-eabihf to Tier 2, joining armv7r-none-eabi, armv7r-none-eabihf and armv7a-none-eabi. This PR wil be rebased once rust-lang#146419 completes the queue. > - A tier 2 target must have value to people other than its maintainers. (It may > still be a niche target, but it must not be exclusively useful for an > inherently closed group.) The `armv8r-none-eabihf` target is for the Arm Cortex-R52 processor, as found in a number of Automotive SoCs that have just been released, or are about to be released. Currently SoCs are available from NXP and Renesas. >- A tier 2 target must have a designated team of developers (the "target > maintainers") available to consult on target-specific build-breaking issues, > or if necessary to develop target-specific language or library implementation > details. This team must have at least 2 developers. The Embedded Devices Working Group's Arm Team have just started maintaining this target. > - The target must not place undue burden on Rust developers not specifically > concerned with that target. Rust developers are expected to not gratuitously > break a tier 2 target, but are not expected to become experts in every tier 2 > target, and are not expected to provide target-specific implementations for > every tier 2 target. This target is highly similar to a number of existing Tier 2 targets, including `armv7r-none-eabihf` and so it should not add undue burden. > - The target must provide documentation for the Rust community explaining how > to build for the target using cross-compilation, and explaining how to run > tests for the target. If at all possible, this documentation should show how > to run Rust programs and tests for the target using emulation, to allow > anyone to do so. If the target cannot be feasibly emulated, the documentation > should explain how to obtain and work with physical hardware, cloud systems, > or equivalent. https://doc.rust-lang.org/nightly/rustc/platform-support/armv8r-none-eabihf.html exists and was updated in rust-lang#146419 > - The target must document its baseline expectations for the features or > versions of CPUs, operating systems, libraries, runtime environments, and > similar. I believe it does. > - If introducing a new tier 2 or higher target that is identical to an existing > Rust target except for the baseline expectations for the features or versions > of CPUs, operating systems, libraries, runtime environments, and similar, > then the proposed target must document to the satisfaction of the approving > teams why the specific difference in baseline expectations provides > sufficient value to justify a separate target. The Armv8-R architecture introduces a new FPU type, the fp-armv8, and so this requires a unique target. > - Tier 2 targets must not leave any significant portions of `core` or the > standard library unimplemented or stubbed out, unless they cannot possibly be > supported on the target. It has a full libcore, as per the other arm*-none-* targets. > - The code generation backend for the target should not have deficiencies that > invalidate Rust safety properties, as evaluated by the Rust compiler team. It should be the same backend as `armv7r-none-eabihf` and friends, except for FPU support, which is already covered in `thumbv8m.main-none-eabihf`. There are no issues that I know of. > - If the target supports C code, and the target has an interoperable calling > convention for C code, the Rust target must support that C calling convention > for the platform via `extern "C"`. The C calling convention does not need to > be the default Rust calling convention for the target, however. The ABI is EABI, the same as many other Arm targets. > - The target must build reliably in CI, for all components that Rust's CI > considers mandatory. The https://github.com/rust-embedded/cortex-ar repository regularly builds this target with `-Zbuild-std=core` and it seems fine. > - The approving teams may additionally require that a subset of tests pass in > CI, such as enough to build a functional "hello world" program, `./x.py test > --no-run`, or equivalent "smoke tests". In particular, this requirement may > apply if the target builds host tools, or if the tests in question provide > substantial value via early detection of critical problems. There are no no-std tests in the tree that I'm aware of. > - Building the target in CI must not take substantially longer than the current > slowest target in CI, and should not substantially raise the maintenance > burden of the CI infrastructure. This requirement is subjective, to be > evaluated by the infrastructure team, and will take the community importance > of the target into account. Building libcore is quite fast. > - Tier 2 targets should, if at all possible, support cross-compiling. Tier 2 > targets should not require using the target as the host for builds, even if > the target supports host tools. It does. > - In addition to the legal requirements for all targets (specified in the tier > 3 requirements), because a tier 2 target typically involves the Rust project > building and supplying various compiled binaries, incorporating the target > and redistributing any resulting compiled binaries (e.g. built libraries, > host tools if any) must not impose any onerous license requirements on any > members of the Rust project, including infrastructure team members and those > operating CI systems. This is a subjective requirement, to be evaluated by > the approving teams. Just libcore required (and liballoc). No known issues here. > - Tier 2 targets must not impose burden on the authors of pull requests, or > other developers in the community, to ensure that tests pass for the target. Noted > - The target maintainers should regularly run the testsuite for the target The https://github.com/rust-embedded/cortex-ar repository will be changed to use the rustup component when available. > and should fix any test failures in a reasonably timely fashion. Noted
…hf, r=petrochenkov Promote armv7a-none-eabihf to Tier 2 This PR promotes armv7a-none-eabihf to Tier 2, to join armv7r-none-eabihf and armv7a-none-eabi. I believe it was simply an oversight that it wasn't made Tier 2 before, as most Armv7-A targets have an FPU and it often makes sense to use it. This PR wil be rebased once rust-lang#146419 completes the queue. > - A tier 2 target must have value to people other than its maintainers. (It may > still be a niche target, but it must not be exclusively useful for an > inherently closed group.) The `armv7a-none-eabihf` target is for all Arm Cortex-A processors (either 32-bit only, or in 32-bit mode) where the user wants to use the FPU. >- A tier 2 target must have a designated team of developers (the "target > maintainers") available to consult on target-specific build-breaking issues, > or if necessary to develop target-specific language or library implementation > details. This team must have at least 2 developers. The Embedded Devices Working Group's Arm Team have just started maintaining this target. > - The target must not place undue burden on Rust developers not specifically > concerned with that target. Rust developers are expected to not gratuitously > break a tier 2 target, but are not expected to become experts in every tier 2 > target, and are not expected to provide target-specific implementations for > every tier 2 target. This target is highly similar to a number of existing Tier 2 targets, including `armv7r-none-eabihf` and `armv7a-none-eabi` and so it should not add undue burden. > - The target must provide documentation for the Rust community explaining how > to build for the target using cross-compilation, and explaining how to run > tests for the target. If at all possible, this documentation should show how > to run Rust programs and tests for the target using emulation, to allow > anyone to do so. If the target cannot be feasibly emulated, the documentation > should explain how to obtain and work with physical hardware, cloud systems, > or equivalent. https://doc.rust-lang.org/nightly/rustc/platform-support/armv7a-none-eabi.html was added in rust-lang#146419. It covers the `-eabi` and the `-eabihf` targets. > - The target must document its baseline expectations for the features or > versions of CPUs, operating systems, libraries, runtime environments, and > similar. I believe it does. > - If introducing a new tier 2 or higher target that is identical to an existing > Rust target except for the baseline expectations for the features or versions > of CPUs, operating systems, libraries, runtime environments, and similar, > then the proposed target must document to the satisfaction of the approving > teams why the specific difference in baseline expectations provides > sufficient value to justify a separate target. It uses very similar FPUs to `armv7r-none-eabihf` but is otherwise the same as `armv7a-none-eabi`. > - Tier 2 targets must not leave any significant portions of `core` or the > standard library unimplemented or stubbed out, unless they cannot possibly be > supported on the target. It has a full libcore, as per the other arm*-none-* targets. > - The code generation backend for the target should not have deficiencies that > invalidate Rust safety properties, as evaluated by the Rust compiler team. It should be the same backend as `armv7r-none-eabihf` and friends, except for FPU support, which is already covered in `thumbv8m.main-none-eabihf`. There are no issues that I know of. > - If the target supports C code, and the target has an interoperable calling > convention for C code, the Rust target must support that C calling convention > for the platform via `extern "C"`. The C calling convention does not need to > be the default Rust calling convention for the target, however. The ABI is EABI, the same as many other Arm targets. > - The target must build reliably in CI, for all components that Rust's CI > considers mandatory. The https://github.com/rust-embedded/cortex-ar repository has been changed in rust-embedded/aarch32#57 to build this target with `-Zbuild-std=core`. Locally it seems fine. > - The approving teams may additionally require that a subset of tests pass in > CI, such as enough to build a functional "hello world" program, `./x.py test > --no-run`, or equivalent "smoke tests". In particular, this requirement may > apply if the target builds host tools, or if the tests in question provide > substantial value via early detection of critical problems. There are no no-std tests in the tree that I'm aware of. > - Building the target in CI must not take substantially longer than the current > slowest target in CI, and should not substantially raise the maintenance > burden of the CI infrastructure. This requirement is subjective, to be > evaluated by the infrastructure team, and will take the community importance > of the target into account. Building libcore is quite fast. > - Tier 2 targets should, if at all possible, support cross-compiling. Tier 2 > targets should not require using the target as the host for builds, even if > the target supports host tools. It does. > - In addition to the legal requirements for all targets (specified in the tier > 3 requirements), because a tier 2 target typically involves the Rust project > building and supplying various compiled binaries, incorporating the target > and redistributing any resulting compiled binaries (e.g. built libraries, > host tools if any) must not impose any onerous license requirements on any > members of the Rust project, including infrastructure team members and those > operating CI systems. This is a subjective requirement, to be evaluated by > the approving teams. Just libcore required (and liballoc). No known issues here. > - Tier 2 targets must not impose burden on the authors of pull requests, or > other developers in the community, to ensure that tests pass for the target. Noted > - The target maintainers should regularly run the testsuite for the target The https://github.com/rust-embedded/cortex-ar repository will be changed to use the rustup component when available. > and should fix any test failures in a reasonably timely fashion. Noted
…w-mitigate, r=joboet Mitigate `thread_local!` shadowing issues Mitigates rust-lang#147006 and rust-lang#99018. `@rustbot` label T-libs A-macros A-thread-locals A-hygiene
…ethercote Update rustc-perf submodule To bring in rust-lang/rustc-perf#2274, rust-lang/rustc-perf#2275 and rust-lang/rustc-perf#2276. r? `@nnethercote` try-job: dist-x86_64-linux try-job: dist-x86_64-msvc
compiletest: Use the same directive lines for EarlyProps and ignore/only/needs Currently we load each discovered test file to scan it for directives once for EarlyProps parsing, then reload and scan it once *per revision* for ignore processing. If a revision is not ignored, we then reload and scan it again during actual execution. That's a bit silly, so this PR tries to reduce the number of unnecessary file loads and line scans for directive parsing, by reusing the same collection of `DirectiveLine` values for EarlyProps and for each revision's ignores. Each individual directive still needs to be re-parsed a bunch of times, but those steps can at least avoid scanning the whole file, or having to split out names from values. --- There's more that could be done after this, such as only doing known-directive checks once per file, or embedding file paths in each `DirectiveLine`, but I decided to stop here to allow review in modest chunks. r? jieyouxu
Replace locals in debuginfo records during ref_prop and dest_prop Fixes rust-lang#147485. r? cjgillot
Remove StatementKind::Deinit. It is a remnant from the time we deaggreated MIR. Now, it is only constructed by the `LargeEnums` MIR pass, which is disabled by default.
…-checks, r=Amanieu remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of` Most likely this was just a result of copy-pasting. The attribute has no effect, because `%` always uses overflow checks. r? `@Amanieu` cc `@RalfJung`
…nkov Move `wasm32-wasip3` to the tier 3 table rust-lang#147205 says it wanted to add this as a tier 3 target but accidentally added it to the tier 2 table.
…iv_ceil, r=joboet Stabilize `NonZero<u*>::div_ceil` As per rust-lang#132968 (comment) r? libs
@rustbot rustbot added the A-compiletest Area: The compiletest test runner label Oct 10, 2025
@rustbot rustbot added T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Oct 10, 2025
@dianqk
Copy link
Member Author

dianqk commented Oct 10, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Oct 10, 2025

📌 Commit ab7d63a has been approved by dianqk

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 10, 2025
@bors
Copy link
Collaborator

bors commented Oct 10, 2025

⌛ Testing commit ab7d63a with merge cfce400...

bors added a commit that referenced this pull request Oct 10, 2025
Rollup of 12 pull requests Successful merges: - #145651 (Regression test for const promotion with Option<Ordering>) - #145722 (implement Extend<{Group, Literal, Punct, Ident}> for TokenStream) - #146520 (Promote armv8r-none-eabihf target to Tier 2) - #146522 (Promote armv7a-none-eabihf to Tier 2) - #147289 (Mitigate `thread_local!` shadowing issues) - #147515 (Update rustc-perf submodule) - #147522 (compiletest: Use the same directive lines for EarlyProps and ignore/only/needs) - #147525 (Replace locals in debuginfo records during ref_prop and dest_prop) - #147544 (Remove StatementKind::Deinit.) - #147551 (remove `#[rustc_inherit_overflow_checks]` from `is_multiple_of`) - #147553 (Move `wasm32-wasip3` to the tier 3 table) - #147562 (Stabilize `NonZero<u*>::div_ceil`) r? `@ghost` `@rustbot` modify labels: rollup
@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-debug failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
 --- stderr clang: error: unsupported option '-print-multi-os-directory' clang: error: no input files config.status: error: in `/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-tools/aarch64-unknown-linux-gnu/release/build/libffi-sys-6562d98fd0e95724/out/libffi-build/aarch64-unknown-linux-gnu': config.status: error: Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See `config.log' for more details thread 'main' (101487) panicked at /cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libffi-sys-3.3.2/build/not_msvc.rs:154:5: Configuring libffi: exit status: 1 (cd "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-tools/aarch64-unknown-linux-gnu/release/build/libffi-sys-6562d98fd0e95724/out/libffi-build" && CC="clang" CFLAGS="-O3 -ffunction-sections -fdata-sections -fPIC -gdwarf-4 -fno-omit-frame-pointer --target=aarch64-unknown-linux-gnu -Wno-implicit-function-declaration" LC_ALL="C" "sh" "./configure" "--with-pic" "--disable-shared" "--disable-docs" "--prefix" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2-tools/aarch64-unknown-linux-gnu/release/build/libffi-sys-6562d98fd0e95724/out/libffi-root") stack backtrace: 0: __rustc::rust_begin_unwind at /checkout/library/std/src/panicking.rs:698:5 1: core::panicking::panic_fmt at /checkout/library/core/src/panicking.rs:80:14 2: build_script_build::common::run_command at ./build/common.rs:13:13 3: build_script_build::not_msvc::configure_libffi at ./build/not_msvc.rs:154:5 4: build_script_build::not_msvc::build_and_link at ./build/not_msvc.rs:39:5 5: build_script_build::main at ./build/build.rs:16:9 6: core::ops::function::FnOnce::call_once at /checkout/library/core/src/ops/function.rs:250:5 note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace. 
@bors
Copy link
Collaborator

bors commented Oct 11, 2025

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 11, 2025
@dianqk
Copy link
Member Author

dianqk commented Oct 11, 2025

@bors retry (clang: error: unsupported option '-print-multi-os-directory')

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 11, 2025
@bors
Copy link
Collaborator

bors commented Oct 11, 2025

⌛ Testing commit ab7d63a with merge 4422885...

@bors
Copy link
Collaborator

bors commented Oct 11, 2025

☀️ Test successful - checks-actions
Approved by: dianqk
Pushing 4422885 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Oct 11, 2025
@bors bors merged commit 4422885 into rust-lang:master Oct 11, 2025
11 checks passed
@rustbot rustbot added this to the 1.92.0 milestone Oct 11, 2025
@github-actions
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing b3f8586 (parent) -> 4422885 (this PR)

Test differences

Show 1050 test diffs

Stage 1

  • [mir-opt] tests/mir-opt/debuginfo/dest_prop.rs: [missing] -> pass (J2)
  • [mir-opt] tests/mir-opt/debuginfo/ref_prop.rs: [missing] -> pass (J2)
  • [mir-opt] tests/mir-opt/pre-codegen/const_promotion_option_ordering_eq.rs: [missing] -> pass (J2)
  • [ui] tests/ui/debuginfo/dest_prop_debuginfo-147485.rs: [missing] -> pass (J2)
  • [ui] tests/ui/debuginfo/ref_prop_debuginfo-147485.rs: [missing] -> pass (J2)

Stage 2

  • [mir-opt] tests/mir-opt/debuginfo/dest_prop.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/debuginfo/ref_prop.rs: [missing] -> pass (J0)
  • [mir-opt] tests/mir-opt/pre-codegen/const_promotion_option_ordering_eq.rs: [missing] -> pass (J0)
  • [ui] tests/ui/debuginfo/dest_prop_debuginfo-147485.rs: [missing] -> pass (J1)
  • [ui] tests/ui/debuginfo/ref_prop_debuginfo-147485.rs: [missing] -> pass (J1)

Additionally, 1040 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \ test-dashboard 442288534b6cf9ec4899b00c4332433b17760d96 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. aarch64-apple: 6500.8s -> 7792.3s (19.9%)
  2. pr-check-1: 1406.7s -> 1624.5s (15.5%)
  3. aarch64-gnu-llvm-20-2: 2199.5s -> 2534.9s (15.2%)
  4. dist-loongarch64-linux: 6082.5s -> 5190.8s (-14.7%)
  5. arm-android: 5629.7s -> 6378.8s (13.3%)
  6. x86_64-gnu-llvm-20: 2437.0s -> 2758.2s (13.2%)
  7. aarch64-gnu-debug: 3764.0s -> 4254.6s (13.0%)
  8. x86_64-gnu-tools: 3261.5s -> 3669.9s (12.5%)
  9. i686-gnu-nopt-1: 7136.2s -> 7987.6s (11.9%)
  10. x86_64-rust-for-linux: 2607.4s -> 2906.8s (11.5%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#145651 Regression test for const promotion with Option 2ba44283d2ed54bef286bdc2825dd18d7fd233f1 (link)
#145722 implement Extend<{Group, Literal, Punct, Ident}> for TokenS… fbbd819a05298d5b97e96be8ae46c09058d3314e (link)
#146520 Promote armv8r-none-eabihf target to Tier 2 50763218767b58f2df127f1eb0a5eb69cf26e807 (link)
#146522 Promote armv7a-none-eabihf to Tier 2 1f24cdcd5755a3f8a85cda569ea51699982900f0 (link)
#147289 Mitigate thread_local! shadowing issues b8ad43ebc53e350d410e80e9f038d6cc5290ed18 (link)
#147515 Update rustc-perf submodule 85c6b4ceee916c9f6041b924320f5c5ac1190c94 (link)
#147522 compiletest: Use the same directive lines for EarlyProps an… 722f01cfc28f9f6d771b2d20b19a7c0572a87d3d (link)
#147525 Replace locals in debuginfo records during ref_prop and des… b1710884a89dc5a81ca4bbf4b9f0aad176ca3bd2 (link)
#147544 Remove StatementKind::Deinit. b641c6d67ebce8f64362f4ea18e52655fb864edb (link)
#147551 remove #[rustc_inherit_overflow_checks] from `is_multiple… 58a36272a35bb735fa293602c7a8ca332487a1a9 (link)
#147553 Move wasm32-wasip3 to the tier 3 table 562be4ab53181c6db5c8f5ecf497673622a1c088 (link)
#147562 Stabilize NonZero<u*>::div_ceil 470528249d4cd7862e7c264fbf9e3bd21030feda (link)

previous master: b3f8586fb1

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (4422885): comparison URL.

Overall result: ❌✅ regressions and improvements - no action needed

@rustbot label: -perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.5% [1.5%, 1.5%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.2% [-0.2%, -0.2%] 1
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -0.2%, secondary -1.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.6% [2.6%, 2.6%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-1.6% [-2.3%, -0.9%] 2
Improvements ✅
(secondary)
-1.3% [-1.3%, -1.3%] 1
All ❌✅ (primary) -0.2% [-2.3%, 2.6%] 3

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 473.801s -> 473.161s (-0.14%)
Artifact size: 388.06 MiB -> 388.04 MiB (-0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-compiletest Area: The compiletest test runner A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.