Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

@JonathanBrouwer JonathanBrouwer commented Jan 6, 2026

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

mu001999 and others added 21 commits December 28, 2025 15:17
Same as 147495, just keeping it up-to-date.
This was recently fixed upstream in LLVM, so we update our default
layout to match.

@rustbot label: +llvm-main
This way using pidfd_spawnp won't have to rely on procfs, avoiding an unpleasant edge-case
where the child is spawned but we can't get the pid.
And `pidfd.{try_}wait` will be able to return the exit status even after a process has been reaped.
At least on newer kernels.
`lower_anon_const_to_const_arg_direct` to
`lower_anon_const_to_const_arg_and_alloc` and
`lower_anon_const_to_const_arg`
…rait, r=jdonszelmann

Impls and impl items inherit `dead_code` lint level of the corresponding traits and trait items

https://github.com/rust-lang/rust/blob/master/compiler/rustc_passes/src/dead.rs#L360-L361 won't insert assoc items into the live set, so that impl items cannot be marked live.

This PR lets impls and impl items can inherit lint levels of the corresponding traits and trait items.

Fixes rust-lang#144060

r? ````@petrochenkov````
…nikic

rustc_codegen_llvm: update alignment for double on AIX

This was recently fixed upstream in LLVM, so we update our default layout to match.

````@rustbot```` label: +llvm-main
Refactor function names of `rustc_ast_lowering`

close: rust-lang#150062

I'll rebase after rust-lang#149114 is merged.

Would it be better to change `lower_const_path_to_const_arg` → `lower_const_path_to_const_arg_and_intern`,
`lower_array_length_to_const_arg` → `lower_array_length_to_const_arg_and_intern`?

r? ``@lcnr``
use PIDFD_GET_INFO ioctl when available

This way using pidfd_spawnp won't have to rely on procfs, avoiding an unpleasant edge-case where the child is spawned but we can't get the pid. And pidfd.{try_}wait will be able to return the exit status even after a process has been reaped. At least on newer kernels.

Tracking issue: rust-lang#82971
THIR pattern building: Move all `thir::Pat` creation into `rustc_mir_build::thir::pattern`

The code in `thir::cx::block` was the only code outside of `thir::pattern` that created `thir::Pat` nodes.

Moving it makes the signature of `pat_from_hir` a bit messier, but ensures that all `thir::Pat` creation occurs in one module. That will be useful when trying to change `thir::Pat`, e.g. by adding fields to remove the need for wrapper nodes.

There should be no change to compiler output.
MGCA: pretty printing for struct expressions and tuple calls

not sure

1. if there any tests that i need to adjust
2. if i should add any test for it
3. if humanity has come up with anything better than checking if that's first iteration or not with flag when printing sequences with separator

in case there is no tests for it and i dont have to add any, there is a demonstration of this ✨ pretty ✨ printing (this is output from `-Z unpretty=hir`)

```
fn test_errors<const N:
    usize>() {
    // accepts_enum::<{ None::<u32> }>();
    accepts_point::<Point1 { a: N, b: N }>();
    accepts_point::<Point(N, N)>();
}
```

btw it does not print const block

for this

```
accepts_point::<{ Point1 { a: const {N + 1}, b: N } }>();
```

it will print

```
accepts_point::<Point1 { a: { N + 1 }, b: N }>();
```

not sure if we want to print const blocks or not

r? BoxyUwU
Improve comment clarity in candidate_may_shadow

I think this should be the right correction, but I'm not sure.
…-ld, r=Mark-Simulacrum

Update wasm-component-ld

Same as rust-lang#147495, just keeping it up-to-date.
…ce, r=BoxyUwU

Fix ICE when transmute Assume field is invalid

This PR fixes an internal compiler error in `rustc_transmute` where initializing an `Assume` field (like `alignment`) with a non-scalar constant (like a struct) caused a panic.

The fix updates `from_const` to use `try_to_scalar()` instead of assuming the value is always a leaf. It now gracefully returns `None` for invalid types, allowing the compiler to report standard "missing field initialiser" errors instead of crashing.

Fixes rust-lang#150506
Enable merge queue in new bors

We can proactively merge this now. Note that new bors will still default to being "paused" and not running the merge queue, after being restarted:
- https://github.com/rust-lang/bors/blob/e1fafaa3b89c225069fa2aa1193096e1d66075c3/src/bors/merge_queue.rs#L101
- https://github.com/rust-lang/bors/blob/bf491ee40d1fc877af273f2ec92a2968dee8cdb7/src/github/api/mod.rs#L159
- rust-lang#112049 (comment)

We can resume it quickly with a command, to test how the merging functionality behaves.
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. O-linux Operating system: Linux O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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 Jan 6, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jan 6, 2026

📌 Commit 9c9ecb1 has been approved by JonathanBrouwer

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 Jan 6, 2026
@bors
Copy link
Collaborator

bors commented Jan 6, 2026

⌛ Testing commit 9c9ecb1 with merge 4d73a00...

@bors
Copy link
Collaborator

bors commented Jan 6, 2026

☀️ Test successful - checks-actions
Approved by: JonathanBrouwer
Pushing 4d73a00 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jan 6, 2026
@bors bors merged commit 4d73a00 into rust-lang:main Jan 6, 2026
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Jan 6, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#144113 Impls and impl items inherit dead_code lint level of the … bb5b182f43276166ee617ba705894f87cf868482 (link)
#149880 rustc_codegen_llvm: update alignment for double on AIX e58cda2cb21a206b8d335b635c31d054a53a1ae9 (link)
#150122 Refactor function names of rustc_ast_lowering 54206a2a2f88e347cc783b4dd7fb1b8cc55e1409 (link)
#150412 use PIDFD_GET_INFO ioctl when available ee8f4428ad0625c51175220411aab69aabc4e04e (link)
#150670 THIR pattern building: Move all thir::Pat creation into `… 22723dab2bec5f3aa4a4ff22a0cd8bb8b7f29f25 (link)
#150695 MGCA: pretty printing for struct expressions and tuple calls 116391e33fa2567900688f632f6157f1445f813f (link)
#150698 Improve comment clarity in candidate_may_shadow d945cd6dce9cb526e1e2507643225cbab2f594ba (link)
#150706 Update wasm-component-ld 2bfbe4d9fa578ec3c8b12defeac3d4f4bcd1292f (link)
#150707 Fix ICE when transmute Assume field is invalid 686119af62d73ef4a828250020ad84448616cb35 (link)
#150708 Enable merge queue in new bors f30218a5d3571fec4c0837457adbc61a2a5979ad (link)

previous master: 74fd7516da

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

@github-actions
Copy link
Contributor

github-actions bot commented Jan 6, 2026

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 74fd751 (parent) -> 4d73a00 (this PR)

Test differences

Show 10 test diffs

Stage 1

  • [ui] tests/ui/lint/dead-code/allow-trait-or-impl.rs: [missing] -> pass (J0)
  • [ui] tests/ui/lint/dead-code/allow-unused-trait.rs: [missing] -> pass (J0)
  • [ui] tests/ui/transmutability/non_scalar_alignment_value.rs: [missing] -> pass (J0)
  • [ui] tests/ui/unpretty/struct-exprs-tuple-call-pretty-printing.rs: [missing] -> pass (J0)

Stage 2

  • [ui] tests/ui/lint/dead-code/allow-trait-or-impl.rs: [missing] -> pass (J1)
  • [ui] tests/ui/lint/dead-code/allow-unused-trait.rs: [missing] -> pass (J1)
  • [ui] tests/ui/transmutability/non_scalar_alignment_value.rs: [missing] -> pass (J1)
  • [ui] tests/ui/unpretty/struct-exprs-tuple-call-pretty-printing.rs: [missing] -> pass (J1)

Additionally, 2 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 4d73a008eaf6ba3ca067a3221e5c00602e33a5f2 --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: 7470.7s -> 11215.2s (+50.1%)
  2. dist-aarch64-apple: 7340.9s -> 8609.8s (+17.3%)
  3. tidy: 171.7s -> 150.6s (-12.3%)
  4. aarch64-msvc-2: 5761.6s -> 6307.3s (+9.5%)
  5. dist-aarch64-llvm-mingw: 5891.7s -> 5424.0s (-7.9%)
  6. dist-x86_64-llvm-mingw: 6803.6s -> 7320.3s (+7.6%)
  7. x86_64-rust-for-linux: 2727.7s -> 2521.8s (-7.5%)
  8. x86_64-msvc-2: 8263.5s -> 8886.5s (+7.5%)
  9. aarch64-gnu-llvm-20-1: 3438.0s -> 3195.5s (-7.1%)
  10. x86_64-gnu-llvm-21-3: 6588.4s -> 6144.6s (-6.7%)
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.

This was referenced Jan 6, 2026
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (4d73a00): comparison URL.

Overall result: ❌ regressions - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

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.4% [0.2%, 0.8%] 13
Regressions ❌
(secondary)
0.2% [0.1%, 0.3%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.4% [0.2%, 0.8%] 13

Max RSS (memory usage)

Results (primary -0.6%)

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

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

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.921s -> 473.709s (-0.04%)
Artifact size: 390.82 MiB -> 390.82 MiB (0.00%)

@JonathanBrouwer
Copy link
Contributor Author

Guessing this is #144113, rust-timer running at that PR

@JonathanBrouwer JonathanBrouwer added the perf-regression-triaged The performance regression has been triaged. label Jan 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. merged-by-bors This PR was explicitly merged by bors. O-linux Operating system: Linux O-unix Operating system: Unix-like perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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-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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.