Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

RedDaedalus and others added 24 commits January 16, 2026 06:46
This commit removes a repetitive match statement in favor of
Option::map for Option::cloned.
Update compiler/rustc_monomorphize/src/collector.rs

Add FIXME(mgca) comment to potentially re-investigate in the future.

Co-Authored-By: Boxy <rust@boxyuwu.dev>
The attribute now has a size parameter and sorts differently:
* Explicitly omit size parameter during construction on 23+
* Tolerate alternate sorting in tests

llvm/llvm-project#171712
Move `#[doc(hidden)]` into the shared code-attribute renderer so it
matches the styling and placement of other attributes in rustdoc HTML.
`hash` and `assert_receiver_is_total_eq` have no return type. This
commit removes the `-> ()` that is currently printed for them.
and only require `target_has_reliable_f16_math` for `abs` and
`copysign`.
…illaumeGomez

rustdoc: render doc(hidden) as a code attribute

Move `#[doc(hidden)]` into the shared code-attribute renderer so it matches the styling and placement of other attributes in rustdoc HTML.

Closes rust-lang#132304
…le-fallback, r=RalfJung

fix fallback impl for select_unpredictable intrinsic

`intrinsics::select_unpredictable` does not drop the value that is not selected, but the fallback impl did not consider this behavior. This creates an observable difference between Miri and actual execution, and possibly does not play well with the `core::hint` version which has extra logic to drop the value that was not selected.
```rust
#![feature(core_intrinsics)]

fn main() {
    core::intrinsics::select_unpredictable(true, LoudDrop(0), LoudDrop(1));
    // cargo run: "0"; cargo miri run: "1 0"
}

struct LoudDrop(u8);

impl Drop for LoudDrop {
    fn drop(&mut self) {
        print!("{} ", self.0);
    }
}
```

This change let me remove the `T: [const] Destruct` bound as well, since the destructor is no longer relevant.
option: Use Option::map in Option::cloned

This commit removes a repetitive match statement in favor of Option::map for Option::cloned.
Handle unevaluated ConstKind in in_operand

fix: rust-lang#151248

r? BoxyUwU
~~I can't reproduce rust-lang#151246 in my local(x86_64-pc-windows-msvc) even before this change. 🤔
create a draft and test it in different environments.~~
…-fix, r=BoxyUwU

MGCA: Fix incorrect pretty printing of valtree arrays

Fixes rust-lang#151126

- **add failing test**
- **fix: additional check whether const array could be printed as raw bytes**

As I figured out, the problem was in `pretty_print_const_valtree`, where it tried to print unevaluated consts as if they were evaluated, which resulted in ICE.
…Amanieu

Move assert_matches to planned stable path

Another prep PR for rust-lang#137487
Fix ICE: Don't try to evaluate type_consts when eagerly collecting items

This fixes rust-lang#151246

The change is pretty straightforward if the Monomorphization strategy is eager which `-Clink-dead-code=true` sets. This then would lead to the existing code to try and evaluate a `type const` which does not have a body to evaluate leading to an ICE. The change is pretty straight forward just skip over type consts.

This also seems like a sensible choice to me since a MonoItem can only be a Fn, Static, or Asm. A type const is none of the aforementioned.

And even if it was added to the MonoItems list it would then later fail this check:
https://github.com/rust-lang/rust/blob/fe98ddcfcfb6f185dbf4adeaf439d8a756da0273/compiler/rustc_monomorphize/src/collector.rs#L438-L440
Since that explicitly checks that the MonoItem's `DefKind` is static and not anything else.

One more change is the addition of a simple test of the example code from rust-lang#151246 that checks that code compiles successfully with `-Clink-dead-code=true`.

The only other change was to make the guard checks a little easier to read by making the logic more linear instead of one big if statement.

r? @BoxyUwU
@rustbot label +F-associated_const_equality +F-min_generic_const_args
codegen: clarify some variable names around function calls

I looked at rust-lang#145932 to try to understand how it works, and quickly got lost in the variable names -- what refers to the caller, what to the callee? So here's my attempt at making those more clear. Hopefully the new names are correct.^^

Cc @JamieCunliffe
fix `f16` doctest FIXMEs

tracking issue: rust-lang#116909

Remove a bunch of fixmes, and run docs tests on all targets that (should) support them.

r? tgross35
llvm: Tolerate dead_on_return attribute changes

The attribute now has a size parameter and sorts differently. Adjust tests to tolerate this.

llvm/llvm-project#171712

r? durin42

@rustbot label llvm-main
…ve, r=Kobzol

Avoid `-> ()` in derived functions.

`hash` and `assert_receiver_is_total_eq` have no return type. This commit removes the `-> ()` that is currently printed for them.

r? @Kobzol
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Jan 22, 2026
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. O-unix Operating system: Unix-like S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-clippy Relevant to the Clippy team. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jan 22, 2026
@rust-bors rust-bors bot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 22, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 22, 2026

💔 Test for 608c882 failed: CI. Failed job:

@JonathanBrouwer
Copy link
Contributor Author

Let's retry
@bors r=1000 retry

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 22, 2026

📌 Commit d86afd2 has been approved by 1000

It is now in the queue for this repository.

🌲 The tree is currently closed for pull requests below priority 1000. This pull request will be tested once the tree is reopened.

@rust-bors rust-bors bot 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 22, 2026
@JonathanBrouwer
Copy link
Contributor Author

Whoops, that's not how that works
@bors r+ p=1000

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 22, 2026

📌 Commit d86afd2 has been approved by JonathanBrouwer

It is now in the queue for this repository.

@JonathanBrouwer
Copy link
Contributor Author

@bors retry

@rust-bors

This comment has been minimized.

@rust-log-analyzer
Copy link
Collaborator

A job failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)

@JonathanBrouwer
Copy link
Contributor Author

Seems like github is working well enough again, will re-open the tree when the rollup is merged

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 22, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 22, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 15m 48s
Pushing 0f14563 to main...

@rust-bors rust-bors bot merged commit 0f14563 into rust-lang:main Jan 22, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Jan 22, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors treeopen

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 22, 2026

Tree is now open for merging.

@github-actions
Copy link
Contributor

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 d29e478 (parent) -> 0f14563 (this PR)

Test differences

Show 344 test diffs

Stage 1

  • [ui] tests/ui/const-generics/mgca/type_const-incemental-compile.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/mgca/wrong_type_const_arr_diag.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/mgca/wrong_type_const_arr_diag_trait.rs: [missing] -> pass (J1)

Stage 2

  • [ui] tests/ui/const-generics/mgca/type_const-incemental-compile.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/wrong_type_const_arr_diag.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/wrong_type_const_arr_diag_trait.rs: [missing] -> pass (J0)

Additionally, 338 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 0f145634fc31775477c538c532307213109599ac --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. tidy: 217.1s -> 169.3s (-22.0%)
  2. x86_64-gnu-llvm-21-1: 4674.6s -> 3727.3s (-20.3%)
  3. dist-apple-various: 4001.3s -> 4674.6s (+16.8%)
  4. x86_64-gnu-tools: 3916.8s -> 3305.8s (-15.6%)
  5. x86_64-rust-for-linux: 3229.1s -> 2734.2s (-15.3%)
  6. x86_64-gnu-gcc: 4355.8s -> 3725.3s (-14.5%)
  7. pr-check-1: 1974.3s -> 1689.5s (-14.4%)
  8. i686-gnu-2: 6224.9s -> 5368.9s (-13.8%)
  9. arm-android: 6349.3s -> 5487.4s (-13.6%)
  10. pr-check-2: 2641.8s -> 2302.4s (-12.8%)
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.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#151001 rustdoc: render doc(hidden) as a code attribute c818dbaf2cb4fb3401735d6cfe03e585e0f63050 (link)
#151042 fix fallback impl for select_unpredictable intrinsic 3d95c086e73e6d90b2f4a5693209bc72b02f61ac (link)
#151220 option: Use Option::map in Option::cloned 1f8c3b2bb64ba50ef44715deac10ba4ced27c3da (link)
#151260 Handle unevaluated ConstKind in in_operand 9fe00abee728d7899ff4c70c6081aa4468f11876 (link)
#151296 MGCA: Fix incorrect pretty printing of valtree arrays 297b546a7a654365802e093f46d96725daafa362 (link)
#151423 Move assert_matches to planned stable path 1a7cdb3e3cf4b0930036a66f24e3caec502081a1 (link)
#151441 Fix ICE: Don't try to evaluate type_consts when eagerly col… 6bbafc8afc15f49d02df6594e048ecaeee920f14 (link)
#151465 codegen: clarify some variable names around function calls f30a19872013eb879fa2f7e2a6c2af1ae3dec70e (link)
#151468 fix f16 doctest FIXMEs 5560d94e561b43a3181ac74b44969132549a9a74 (link)
#151469 llvm: Tolerate dead_on_return attribute changes d6185b5f1961564b5ab8b6f02a23ed9424e04699 (link)
#151476 Avoid -> () in derived functions. 30863b9924be54550742939b7ae2eca4b9157c93 (link)

previous master: d29e4783df

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

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (0f14563): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -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
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.7% [-0.7%, -0.7%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.7% [-0.7%, -0.7%] 1

Max RSS (memory usage)

Results (primary 5.3%, secondary -0.4%)

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

mean range count
Regressions ❌
(primary)
5.3% [1.7%, 8.8%] 2
Regressions ❌
(secondary)
4.7% [4.7%, 4.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-5.6% [-5.6%, -5.6%] 1
All ❌✅ (primary) 5.3% [1.7%, 8.8%] 2

Cycles

Results (primary 0.5%)

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

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

Binary size

Results (primary -0.0%)

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

mean range count
Regressions ❌
(primary)
0.0% [0.0%, 0.1%] 11
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.5% [-0.5%, -0.5%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.0% [-0.5%, 0.1%] 12

Bootstrap: 472.528s -> 475.466s (0.62%)
Artifact size: 383.22 MiB -> 383.19 MiB (-0.01%)

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-unix Operating system: Unix-like rollup A PR which is a rollup T-clippy Relevant to the Clippy team. 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.