Skip to content

Conversation

@nikic
Copy link
Contributor

@nikic nikic commented Jan 6, 2026

Scheduled release date: Feb 24
1.94 becomes stable: Mar 5

Depends on:

@rustbot
Copy link
Collaborator

rustbot commented Jan 6, 2026

These commits modify compiler targets.
(See the Target Tier Policy.)

@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. 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. labels Jan 6, 2026
@rustbot
Copy link
Collaborator

rustbot commented Jan 6, 2026

⚠️ Warning ⚠️

@nikic
Copy link
Contributor Author

nikic commented Jan 6, 2026

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Jan 6, 2026
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jan 6, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 6, 2026

☀️ Try build successful (CI)
Build commit: dabe9cd (dabe9cd2e5a1630ac5ed5f1b87f891b6dc563025, parent: da476f1942868cdf94ed88b01ea31170cfe95047)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (dabe9cd): comparison URL.

Overall result: ❌✅ regressions and improvements - please read the text below

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +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.9% [0.2%, 8.9%] 228
Regressions ❌
(secondary)
1.4% [0.2%, 8.0%] 260
Improvements ✅
(primary)
-0.8% [-1.1%, -0.3%] 6
Improvements ✅
(secondary)
-2.2% [-8.0%, -0.2%] 28
All ❌✅ (primary) 0.9% [-1.1%, 8.9%] 234

Max RSS (memory usage)

Results (primary 1.0%, 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)
1.0% [0.8%, 1.3%] 2
Regressions ❌
(secondary)
1.8% [0.9%, 2.4%] 8
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.7% [-4.8%, -2.6%] 10
All ❌✅ (primary) 1.0% [0.8%, 1.3%] 2

Cycles

Results (primary 3.2%, secondary 2.1%)

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

mean range count
Regressions ❌
(primary)
3.2% [1.6%, 10.2%] 19
Regressions ❌
(secondary)
3.3% [1.3%, 7.4%] 38
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.8% [-7.5%, -2.5%] 7
All ❌✅ (primary) 3.2% [1.6%, 10.2%] 19

Binary size

Results (primary -0.6%, secondary -1.1%)

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

mean range count
Regressions ❌
(primary)
0.1% [0.1%, 0.1%] 4
Regressions ❌
(secondary)
2.6% [0.1%, 5.1%] 2
Improvements ✅
(primary)
-0.8% [-1.5%, -0.1%] 14
Improvements ✅
(secondary)
-1.1% [-3.9%, -0.0%] 93
All ❌✅ (primary) -0.6% [-1.5%, 0.1%] 18

Bootstrap: 473.133s -> 480.877s (1.64%)
Artifact size: 390.77 MiB -> 402.18 MiB (2.92%)

@rust-bors

This comment was marked as outdated.

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels Jan 6, 2026
@rust-timer

This comment was marked as outdated.

@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 6, 2026

☔ The latest upstream changes made this pull request unmergeable. Please resolve the merge conflicts.

@bors
Copy link
Collaborator

bors commented Jan 6, 2026

☔ The latest upstream changes (presumably #150726) made this pull request unmergeable. Please resolve the merge conflicts.

@nikic
Copy link
Contributor Author

nikic commented Jan 8, 2026

Based on helloworld, the perf regressions seem to be related to the allocator somehow. Previously tcache_alloc_small_hard was called 3 times, now it's called 189 times. The total number of allocations is smaller, but the time spent in the allocator is larger.

@nikic
Copy link
Contributor Author

nikic commented Jan 8, 2026

Or maybe the issue is not actually the allocator behavior itself. I suspect that we might have lost LTO on jemalloc and tcache_alloc_small_hard previously got inlined into malloc_default but now no longer is. Possibly updating the host toolchain at the same time so that the versions match will help.

nikic added 4 commits January 8, 2026 16:01
Since LLVM 22 the alloca must be passed directly. Do this by
stripping the addrspacecast if it exists.
@rustbot rustbot added A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Jan 8, 2026
@rustbot
Copy link
Collaborator

rustbot commented Jan 8, 2026

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@nikic
Copy link
Contributor Author

nikic commented Jan 8, 2026

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Jan 8, 2026
@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jan 8, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 8, 2026

☀️ Try build successful (CI)
Build commit: b02fa67 (b02fa67ce3a0b9c29b6368e7afc02a38bdadff30, parent: 32fe406b5e71afbb0d8b95280e50e67d1549224c)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (b02fa67): comparison URL.

Overall result: ❌✅ regressions and improvements - BENCHMARK(S) FAILED

Benchmarking this pull request means it may be perf-sensitive – we'll automatically label it not fit for rolling up. You can override this, but we strongly advise not to, due to possible changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please do so in sufficient writing along with @rustbot label: +perf-regression-triaged. If not, please fix the regressions and do another perf run. If its results are neutral or positive, the label will be automatically removed.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

❗ ❗ ❗ ❗ ❗
Warning ⚠️: The following benchmark(s) failed to build:

  • rustc
  • Job failure

❗ ❗ ❗ ❗ ❗

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)
4.1% [0.8%, 7.4%] 2
Regressions ❌
(secondary)
2.8% [0.4%, 6.2%] 6
Improvements ✅
(primary)
-0.6% [-2.6%, -0.2%] 233
Improvements ✅
(secondary)
-0.8% [-10.0%, -0.1%] 266
All ❌✅ (primary) -0.6% [-2.6%, 7.4%] 235

Max RSS (memory usage)

Results (primary 2.5%, secondary 0.5%)

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

mean range count
Regressions ❌
(primary)
2.5% [2.2%, 2.8%] 2
Regressions ❌
(secondary)
2.0% [0.6%, 3.7%] 27
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.1% [-5.6%, -2.1%] 9
All ❌✅ (primary) 2.5% [2.2%, 2.8%] 2

Cycles

Results (primary 4.1%, secondary 0.0%)

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

mean range count
Regressions ❌
(primary)
4.1% [2.4%, 8.3%] 4
Regressions ❌
(secondary)
3.1% [2.1%, 7.4%] 12
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.7% [-7.8%, -2.3%] 8
All ❌✅ (primary) 4.1% [2.4%, 8.3%] 4

Binary size

Results (primary -0.5%, secondary -1.1%)

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

mean range count
Regressions ❌
(primary)
0.1% [0.1%, 0.1%] 4
Regressions ❌
(secondary)
2.6% [0.1%, 5.1%] 2
Improvements ✅
(primary)
-0.7% [-1.5%, -0.1%] 24
Improvements ✅
(secondary)
-1.2% [-3.8%, -0.0%] 93
All ❌✅ (primary) -0.5% [-1.5%, 0.1%] 28

Bootstrap: missing data
Artifact size: 390.80 MiB -> 402.96 MiB (3.11%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Jan 8, 2026
@Kobzol
Copy link
Member

Kobzol commented Jan 8, 2026

The rustc bootstrap failure is because the try build hasn't produced the rust-dev component with LLVM, as it is skipped in "fast" try builds. rustc-perf tried to download it because LLVM changed in this PR. I wonder how could this have worked in the past few months 😮

@nikic
Copy link
Contributor Author

nikic commented Jan 8, 2026

Given that the perf run from two days ago worked, maybe something related to the bors switchover affected this?


At least the across the board regressions are gone now. Looks like we need to update the host toolchain in sync going forward to avoid this issue.

@Kobzol
Copy link
Member

Kobzol commented Jan 8, 2026

Given that the perf run from two days ago worked, maybe something related to the bors switchover affected this?

Yeah, that's most likely. But the weird thing is that I actually consider the new behavior to be correct 😆 Anyway, I'll investigate.

As Intel has walked back on the existence of AVX 10.1-256, LLVM
no longer uses evex512 and avx-10.n-512 are now avx-10.n instead,
so we can skip all the special handling on LLVM 22.
@Kobzol
Copy link
Member

Kobzol commented Jan 9, 2026

Btw, looks like your LLVM changes @Mark-Simulacrum made BOLT optimizations faster 🎉! 5m => 3m for LLVM, and 10m => 5m for rustc.

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

Labels

A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-testsuite Area: The testsuite used to check the correctness of rustc perf-regression Performance regression. 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-infra Relevant to the infrastructure team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants