Rollup of 12 pull requests - #162798
Rollup of 12 pull requests#162798
Conversation
People have fallen over the issue where `target-cpu=cortex-r5` unexpectedly turns on FPU support, even on an EABI soft-float target. So this update attempts to document the full set of Armv7-R processors, their FPU options, and how to set things up for the precise combination you have. It is modelled after the Armv7E-M documentation.
…pture lint `drop_location_span` assumed that every closure had a valid drop location, which could cause an ICE for closures in unsupported contexts. This changes `drop_location_span` to return `Option<Span>`. If there is no valid drop location, the migration lint is not emitted because its drop-order diagnostic would be misleading. The span is computed before creating `MigrationLint` and stored there so it can be reused for the drop-order labels.
the suggestion rewrote the borrow where it was written. for a borrow coming from a macro body that is the macro definition rather than the call site, and for a macro from another crate a file the user cannot edit. it was machine applicable so rustfix would apply it and a macro invoked at more than one call site could stop compiling. gate it on can_be_used_for_suggestions so those cases fall through to the existing note that the trait is implemented for the mutable borrow but not the shared one.
Most of them don't need to be public, but there are scenarios where thing is private on one platform but public on the other, so having a lint on all the time gets complicated. Added #![warn(unreachable_pub)] in library/std/src/lib.rs Added #[allow(unreachable_pub)] on top of std::os and std::sys specifically.
Add regression test for do_not_recommend on a single impl candidate
This reverts commit d4e6b8f. Reverted commit contains incorrect comments, does not implement all the functionality it claims to, and lacks test coverage.
As previously written, AGENTS.md prohibited my LLM from performing edits as part of a prototype that I never intended to upstream. This is explicitly permitted by the policy. Text drafted by Claude Fable 5.1 and edited by me. Change [pre-approved](https://rust-lang.zulipchat.com/#narrow/channel/606558-llm-reviews/topic/AGENTS.2Emd.20forbidding.20experimentation/near/624161741) by @jyn514
…2, r=Amanieu Remove d32 feature from 32-bit Arm targets Fixes rust-lang#159973 In rust-lang#149512 I removed `-d32` from some specs, but since LLVM enables `neon` by default for v7 targets `d32` was left enabled while it should be optional on this target. For a similar reason `-d32` was removed from some armv6 targets and has been readded. This PR adds a test to ensure this specific instance does not happen again and has been tested locally on armv7-unknown-linux-gnueabihf, armv7a-none-eabihf and arm-unknown-linux-gnueabihf. It might be a good idea in general to have a test that runs `--print cfg` and captures the set of rust target features enabled to show when PRs change them, but most of these targets are not run in Rust's CI so it's out of scope for this issue. For reference, here is the manually-expanded LLVM features and their implications - necessary as these targets rely on a feature from LLVM that Rust doesn't yet expose: ``` vfp4 -> vfp3 + fp16 + vfp4d16 + vfp4sp vfp4d16 -> vfp3d16 + fp16 + fp64 + vfp4d16sp vfp4sp -> vfp3sp + fp16 + d32 + vfp4d16sp vfp4d16sp -> vfp3d16sp + fp16 vfp3 -> vfp2 + vfp3d16 + vfp3sp vfp3d16 -> vfp2 + fp64 + vfp3d16sp vfp3sp -> vfp2 + d32 + vfp3d16sp vfp3d16sp -> vfp2sp vfp2 -> vfp2sp + fp64 vfp2sp -> fpregs ```
…k-Simulacrum libtest: never iterate over all tests in `--exact` mode This should help with rust-lang/miri#5013: When running `cargo miri nextest`, nextest spawns one Miri instance for each test of the crate. If the crate has a lot of tests, a non-trivial amount of time is spent in the test harness before it even starts running the test. Turns out almost half that time is spent just making copies of all the `TestDescAndFn`. That seems silly, we have a perfectly fine static array of those sitting around in the code generated by `--test` expansion, let's just use references to that array. So this changes the `TestList` used to represent the unfiltered list of tests to use borrowed rather than owned types. That changes ripples outwards. The entry points used by the `--test` harness remain mostly unchanged (except that I renamed them as the old name did not make sense), but rustdoc has been using the old fully-owned API. Rustdoc has two codepaths, "standalone" and "merged". - For "merged", the fix is easy -- like the `--test` harness, this can just generate a static array full of `StaticTestFn` rather than populating a `Vec` at runtime. - For "standalone", things are more tricky. We need to construct an `&[&TestDescAndFn]`, which requires filling a new vector with references to the entries of an existing `Vec<TestDescAndFn>`. This also fundamentally relies on the support for dynamic test functions in libtest. Those must now always be cloneable, so they are now internally stored in `Arc` and must be `Fn`, not `FnOnce`. So compared to before there's now one more big `Vec` to fill with references to all tests, as well as some `Arc::clone`. OTOH this mode runs a full separate process for each test so I doubt this extra cost is noticeable. The alternative is to keep support for `FnOnce` dynamic tests in libtest, which is highly non-trivial due to having to plumb multiple layers of `Cow`-like handling through everything. I don't think it's worth it, given that dynamic tests are only used by "standalone" rustdoc and by the tests testing libtest. Overall this saves more than 1s when running coretests (which has 2787 tests) with a hot incremental cache with `--exact char::test_is_numeric`. Before: 7.606s After: 6.484s Given that most of that time is actually spent in rustc, not in the interpreter, that is a very big speedup for the interpreter part.
…tebank Filter do_not_recommend impls before handling a single candidate Fixed rust-lang#160717: a single candidate could appear in the suggestion despite `do_not_recommend`. The `if` block now executes only when there is exactly one implementation candidate and that candidate is not marked `do_not_recommend`. A new test checks both solvers; it fails without the fix and passes with it. These tests passed: - ./x test tests/ui/diagnostic_namespace/do_not_recommend --force-rerun - ./x test tests/ui/try-trait --force-rerun - ./x test tidy Used llm for code navigation.
… r=GuillaumeGomez,notriddle rustdoc: Revert "fix bare urls split text" This reverts commit d4e6b8f. Reverted commit contains incorrect comments, does not implement all the functionality it claims to, and lacks test coverage. If someone wishes to re-add the functionality, it should be done as postprocessing after the regex match, as regex is not capable of handling arbitrary nesting of matched pairs. Additionally, future PRs attempting to reinstate this should frame it as a change to a fuzzy heuristic, not as a simple "fix". r? @GuillaumeGomez
…e, r=Enselic hir_typeck: Don't ICE on closures without drop location in closure capture lint Resolves rust-lang#156288. `drop_location_span` assumed that every closure had a valid drop location, which could cause an ICE for closures in unsupported contexts. This changes `drop_location_span` to return `Option<Span>`. If there is no valid drop location, the migration lint is not emitted because its drop-order diagnostic would be misleading. The span is computed before creating `MigrationLint` and stored there so it can be reused for the drop-order labels.
std: make a lot of items crate private 1. Added `#![warn(unreachable_pub)]` in `library/std/src/lib.rs` 2. Added `#[allow(unreachable_pub)]` on top of `std::os` and `std::sys` specifically. r? clarfonthey
…s-not-trigger-note-issue-140171, r=chenyukang Suggest keyword order for `extern "C" const unsafe fn` closes rust-lang#140171 This implementation does not accurately follow the desired output in the issue as it could introduces a much bigger change, where as the one item suggestion approach is also decently helpful and sufficient already.
…t, r=Urgau Clean up `test/rustdoc-html` folder by moving tests where appropriate <del>Gonna likely continue a bit more before assigning a reviewer.</del> CI is happy and I think it's already big enough for a first batch. r? ghost
…on-in-macro, r=chenyukang dont suggest changing the mutability of a borrow that comes from a macro `suggest_change_mut` has no expansion guard so a borrow written in a macro body gets a `MachineApplicable` help pointing inside the macro or at a file in a dependency. with more than one local call site applying it forces the mutable borrow on every expansion and swaps `E0525` for `E0596`. adds `span.can_be_used_for_suggestions()` to the guard falling through to the existing note. with a single local call site the suggestion is correct. the span is the defect. the guard is in the shared helper so it covers all three call sites. full `tests/ui` 21979 passed 0 failed with zero existing baselines re blessed. r? @chenyukang cc @davidtwco
… r=Mark-Simulacrum Fix `path_trailing_sep` methods for Windows verbatim paths Normally on Windows the path separator is either `\` or `/` but for verbatim paths it is only `\`. Currently the unstable `path_trailing_sep` methods (rust-lang#142503) do not take that into account and just use the general `is_sep_byte` method. This PR changes it to use the internal `Components::is_sep(self, b)` method that takes into account verbatim paths.
…khyperia Improve Armv7-R documentation People have [fallen over the issue](rust-lang#128448) where `target-cpu=cortex-r5` unexpectedly turns on FPU support, even on an EABI soft-float target. So this update attempts to document the full set of Armv7-R processors, their FPU options, and how to set things up for the precise combination you have. It is modelled after the Armv7E-M documentation. I know the features it recommends are "unstable" but I really do not know any other way of controlling what kind of FPU `rustc` is generating code for. I'd love a simple `-Ctarget-cpu=cortex-r5 -Ctarget-fpu=vfp3-d16-sp` option but we don't have one at this time. This actually matters more on Armv7-R than on Armv7E-M, because `rustc` currently assumes a double-precision FPU and some hardware only has a single-precision FPU. So you *need* target features to make the target work on that hardware. * [x] No LLMs were used in the creation of this PR
AGENTS.md: Permit local experimentation, per the online policy. As previously written, AGENTS.md prohibited my LLM from performing edits as part of a prototype that I never intended to upstream. This is explicitly permitted by the policy. Text drafted by Claude Fable 5.1 and edited by me. I ran 3 or 4 test sessions with my edits and tweaked it until it performed fairly well. It's still quite strict; it is very adamant that the user makes an explicit statement that they won't be upstreaming. Change [pre-approved](https://rust-lang.zulipchat.com/#narrow/channel/606558-llm-reviews/topic/AGENTS.2Emd.20forbidding.20experimentation/near/624161741) by @jyn514 r? @jyn514
|
@bors r+ p=5 |
This comment has been minimized.
This comment has been minimized.
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 c26ce70 (parent) -> 5392d2f (this PR) Test differencesShow 347 test diffsStage 1
Stage 2
(and 107 additional test diffs) Additionally, 140 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 5392d2f545c6836dc79f209bcc14ac7179dbc4f2 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (5392d2f): comparison URL. Overall result: ❌ regressions - no action needed@rustbot label: -perf-regression Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (secondary -3.0%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -2.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 499.183s -> 498.835s (-0.07%) |
|
📌 Perf builds for each rolled up PR:
parent commit: c26ce708de In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
Successful merges:
--exactmode #161868 (libtest: never iterate over all tests in--exactmode)extern "C" const unsafe fn#162204 (Suggest keyword order forextern "C" const unsafe fn)test/rustdoc-htmlfolder by moving tests where appropriate #162372 (Clean uptest/rustdoc-htmlfolder by moving tests where appropriate)path_trailing_sepmethods for Windows verbatim paths #162643 (Fixpath_trailing_sepmethods for Windows verbatim paths)r? @ghost
Create a similar rollup