Rollup of 13 pull requests - #161772
Conversation
Generalize the recovery to match arguments positionally against the
generic parameters, skipping those that need no explicit argument:
elided early-bound lifetimes, synthetic `impl Trait` type parameters,
and trailing type parameters with defaults. Bail only when there are
more arguments than can be matched.
Omitting such a parameter leaves fewer arguments than parameters, so the
exact-count check made recovery feed `{type error}` for the anon const
while the real lowering later fed the true type, tripping a double-feed
ICE under the `-Zthreads=0` front-end race.
Each exercises the early `type_of` query under the `-Zthreads=0` front-end race with an omittable generic parameter: a synthetic `impl Trait` param, an elided early-bound lifetime, multiple explicit args, and a defaulted trailing type parameter.
`needs_coroutine_by_move_body_def_id` asks for `type_of`, and for a body owner nested inside a const argument's anon const that goes through `typeck` of the anon const, which needs the anon const's own type. That type is never computed, only fed while the enclosing body is type-checked. Asking for it in the same pass that type-checks the bodies lets the parallel front end reach the nested body owner first, computing and caching an error type for the anon const that then conflicts with the type fed later on. Since nothing reports an error in that case, the delayed bugs surface as an ICE. Split it into a second pass over the body owners so every body has been type-checked, and every const argument lowered, before any nested body owner is asked for its type.
Recovering the type from the HIR path meant re-deriving what the generic argument lowering already works out, and only covered the cases the partial classifier recognized: free function paths resolved to `DefKind::Fn`, with no late-bound lifetimes. Anything else still cached an error type and tripped the double-feed ICE, including associated functions, tuple struct constructors, inherent type-relative paths, and const arguments in type annotations, which are not path expressions at all and so cannot be classified this way. With the by-move bodies generated after typeck the anon const's type is always fed before anything asks for it, so drop the recovery along with the tests that only exercised its argument counting. The shapes they covered are folded into the main regression test.
A naive `f32::mul_add(a as f32, b as f32, c as f32) as f16` has insufficient precision
update dependencies
…when-reliable run `f16` and `f128` tests natively when reliable
port all variadic functions to strict signature checking
These non-obvious things are worth documenting.
run _Unwind_RaiseException test on Windows
unify shim_sig and shim_sig_variadic macros
This comment has been minimized.
This comment has been minimized.
Rollup of 13 pull requests try-job: dist-various-1 try-job: test-various try-job: x86_64-gnu-aux try-job: x86_64-gnu-llvm-21-3 try-job: x86_64-msvc-1 try-job: aarch64-apple-1 try-job: aarch64-apple-2 try-job: x86_64-mingw-1 try-job: i686-msvc-1 try-job: i686-msvc-2
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 b751e7a (parent) -> 787af2b (this PR) Test differencesShow 1140 test diffsStage 1
Stage 2
Additionally, 1092 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 787af2b8c80638c51a4fc8e44f84e6891f243ec7 --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 (787af2b): comparison URL. Overall result: ❌✅ regressions and improvements - 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 (primary 0.3%, secondary 1.5%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -3.6%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeResults (primary -0.0%, secondary -0.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Bootstrap: 477.576s -> 474.247s (-0.70%) |
|
📌 Perf builds for each rolled up PR:
parent commit: b751e7a485 In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
Successful merges:
(try_)maponBox,Rc,Arc#161617 (Add custom allocators to(try_)maponBox,Rc,Arc)#[rustc_reservation_impl]#160871 (Remove#[rustc_reservation_impl])f16::mul_addnot double-rounding the result #161522 (testf16::mul_addnot double-rounding the result)r? @ghost
Create a similar rollup