Repository navigation
Rollup of 8 pull requests - #164256
Rollup of 8 pull requests#164256
Conversation
Moves the DropGlue, virtual call, VTableShim, and closure-like transformations in transform_instance into the transform_drop_glue, transform_virtual_call, transform_vtable_shim, and transform_closure_like functions, and renames variables for consistency (e.g., invoke_ty to self_ty).
Explicit tail calls on PowerPC and PowerPC64 are unimplemented in LLVM and therefore these doctests fail to compile with: rustc-LLVM ERROR: failed to perform tail call elimination on a call site marked musttail Ignore the explicit tail call doctests on those targets for now. See llvm/llvm-project#187119
…rageOrAnyOpaqueHasInferAsHidden`
The old-handler pointer is an owning pointer to an arbitrary handler, so giving it a lifetime of `&'a` is more misleading than helpful. This commit also renames the function to `LLVMRustContextTakeContextHandler`, to clarify that it removes and takes ownership of the old handler.
There is no reason to use LLVM's `DiagnosticHandlerTy` typedef here, since we control both sides of the call. This also avoids having a type with a bare `LLVM` prefix that is not actually part of the LLVM-C API.
Using a named struct instead of a tuple makes it easier to see how this callback data is used. The more verbose variable name also helps.
* Propagate reported errors from ABI checks * Cover reported layout errors during ABI checks * Give the ABI error regression test a descriptive name
Changes transform_instance to cover each InstanceKind (and ShimKind) explicitly, similarly to how encoding is done, so the intent is expressed clearly and it is known when an instance is handled (or not) and the side effects of it (also clearly), instead of relying on fallthrough behavior. This also makes adding a new InstanceKind (or ShimKind) result in a compile-time error until it is explicitly handled.
Moves the CFI and KCFI UI tests that are at the top level into the cfi and kcfi directories (removing the now redundant kcfi- prefix from their names), and renames the regression tests to <topic>-issue-<number> (removing their entries from issues.txt accordingly, and adding the missing regression test description to reveal-opaques-issue-114160.rs).
… r=lcnr Move `rustc_middle::ty::Const` to `rustc_type_ir` Part 2 Split by commit; - Move all methods from `ConstExt` from `rustc_middle`, creating small helpers to aid this. Subsequently delete `ConstExt`. - Remove `ConstExt` from imports in compiler. - Remove `ConstExt` from imports in clippy. r? lcnr
don't drop `AnyOpaqueHasInferAsHidden` when merging with `OpaqueInStorageOrAnyOpaqueHasInferAsHidden` The `match` disagrees with the method's doc comment, and it felt wrong to drop the `AnyOpaqueHasInferAsHidden` condition, leaving the `match` alone and correcting the doc comment instead, though I couldn't find a program that misbehaves because of this 🤔 r? project-trait-system-refactor
CFI: Cover each InstanceKind explicitly Changes transform_instance to cover each InstanceKind (and ShimKind) explicitly, similarly to how encoding is done, so the intent is expressed clearly and it is known when an instance is handled (or not) and the side effects of it (also clearly), instead of relying on fallthrough behavior. This also makes adding a new InstanceKind (or ShimKind) result in a compile-time error until it is explicitly handled. No functional changes intended. r? @bjorn3
…rted_abi_errors, r=petrochenkov codegen Propagate reported errors from ABI checks Fixes rust-lang#162814 The oversized array already gets an E0080 error. Normalization keeps the failed constant as an error marker in the buffer's type, though, and computing the constructor's return layout gives `ReferencesError`. The shared ABI handler then hits `span_bug!`, so we get an ICE on top of the useful error. Handle `ReferencesError` by returning its existing `ErrorGuaranteed`. The ABI checks can then return through their usual error path, and mono collection stops before codegen. I think the shared handler is the right place for this because it already decides how to report ABI failures. Const-eval handles this variant by keeping the reported error too. I reduced the async example to a small buffer constructor with no external crates. The test uses `build-fail` so it reaches the ABI checks, with default and optimized revisions to cover both paths. Rebuilt the compiler and ran both new revisions plus the existing oversized-layout test. All three passed. Compiler checks and formatting passed too. Clippy completed with existing warnings allowed.
…kertdev cg_llvm: Assorted cleanups to LLVM diagnostic handling While investigating some other changes to the LLVM bindings, I noticed a few opportunities for improvement here. Details in individual commits. There should be no change to compiler output.
…rcote restore the old behavior for `derive(Default)` on fieldless types Fixes rust-lang#164078. This restores the behavior before rust-lang#161867, where `derive(Default)` always generated `Unit {}` for any struct without fields, which some (arguably wrong) code depends on. r? @nnethercote
…s-ppc, r=folkertdev core: Ignore explicit_tail_calls doc tests on PowerPC Explicit tail calls on PowerPC and PowerPC64 are unimplemented in LLVM and therefore these doctests fail to compile with: ``` rustc-LLVM ERROR: failed to perform tail call elimination on a call site marked musttail ``` Ignore the explicit tail call doctests on those targets for now. See llvm/llvm-project#187119
This comment has been minimized.
This comment has been minimized.
Rollup of 8 pull requests try-job: dist-various-1 try-job: test-various try-job: test-x86_64-gnu-aux try-job: test-x86_64-msvc-1 try-job: test-aarch64-apple-1 try-job: test-aarch64-apple-2 try-job: test-x86_64-mingw-1 try-job: test-i686-msvc try-job: test-armhf-gnu try-job: test-x86_64-gnu-llvm-22-3
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 91e426a (parent) -> dc4a7c1 (this PR) Test differencesShow 379 test diffsStage 1
Stage 2
Additionally, 322 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 dc4a7c12eb7ada0fbf1c3f19dc6eccd27ca1e3f7 --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 (dc4a7c1): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Our benchmarks found a performance regression caused by this PR. Next Steps:
@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)This perf run didn't have relevant results for this metric. CyclesResults (primary -3.3%, secondary -3.3%)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: 489.812s -> 490.893s (0.22%) |
|
📌 Perf builds for each rolled up PR:
parent commit: 91e426a051 In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: |
|
@rust-timer triage all |
Running triage with 2 benchmarksTriage only executes the benchmarks on rollup members, that were changed significantly on the rollup.
#163258 677c568 Move
|
| mean | range | count | |
|---|---|---|---|
| Regressions ❌ (primary) |
- | - | 0 |
| Regressions ❌ (secondary) |
- | - | 0 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-0.2% | [-0.2%, -0.2%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#164173 01251c4 don't drop AnyOpaqueHasInferAsHidden when merging with OpaqueInStorageOrAnyOpaqueHasInferAsHidden
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) |
2.0% | [1.8%, 2.1%] | 3 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-0.2% | [-0.2%, -0.2%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#160230 52eed7b CFI: Cover each InstanceKind explicitly
This perf run didn't have relevant results for the `instruction count` metric.
Instruction count
This perf run didn't have relevant results for this metric.
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#163713 1834507 codegen Propagate reported errors from ABI checks
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) |
- | - | 0 |
| Improvements ✅ (primary) |
- | - | 0 |
| Improvements ✅ (secondary) |
-0.2% | [-0.2%, -0.2%] | 1 |
| All ❌✅ (primary) | - | - | 0 |
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#164205 13d57fb cg_llvm: Assorted cleanups to LLVM diagnostic handling
This perf run didn't have relevant results for the `instruction count` metric.
Instruction count
This perf run didn't have relevant results for this metric.
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#164114 2e5c167 restore the old behavior for derive(Default) on fieldless types
This perf run didn't have relevant results for the `instruction count` metric.
Instruction count
This perf run didn't have relevant results for this metric.
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#164127 e2a2091 core: Ignore explicit_tail_calls doc tests on PowerPC
This perf run didn't have relevant results for the `instruction count` metric.
Instruction count
This perf run didn't have relevant results for this metric.
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
#164204 e447c13 explicitly mark next-solver ICE in test suite
This perf run didn't have relevant results for the `instruction count` metric.
Instruction count
This perf run didn't have relevant results for this metric.
Max RSS (memory usage)
This perf run didn't have relevant results for this metric.
Cycles
This perf run didn't have relevant results for this metric.
Binary size
This perf run didn't have relevant results for this metric.
Successful merges:
rustc_middle::ty::Consttorustc_type_irPart 2 #163258 (Moverustc_middle::ty::Consttorustc_type_irPart 2)AnyOpaqueHasInferAsHiddenwhen merging withOpaqueInStorageOrAnyOpaqueHasInferAsHidden#164173 (don't dropAnyOpaqueHasInferAsHiddenwhen merging withOpaqueInStorageOrAnyOpaqueHasInferAsHidden)derive(Default)on fieldless types #164114 (restore the old behavior forderive(Default)on fieldless types)r? @ghost
Create a similar rollup