Skip to content

Conversation

@matthiaskrgr
Copy link
Member

Successful merges:

r? @ghost

Create a similar rollup

sgasho and others added 16 commits January 4, 2026 22:56
It was added in ddee45e when SIGPIPE was controlled with an
attribute on `fn main()` which meant it could also be combined with
`#[rustc_main]`:

    #[unix_sigpipe = "sig_dfl"]
    #[rustc_main]
    fn rustc_main() {

It stopped being needed cde0cde when `#[unix_sigpipe = "..."]` was
replaced by `-Zon-broken-pipe=...`. And it will not be needed when
`-Zon-broken-pipe=...` is replaced by an Externally Implementable Item.
Let's remove this test.
In rust-lang#127273 I added a test and a FIXME comment pointing out how it does
the wrong thing. In the next commit I fixed the problem but forgot to
remove the FIXME comment, whoops.
MGCA: Support tuple expressions as direct const arguments

Tracking issue: rust-lang#132980

Fixes rust-lang#133965
Fixes rust-lang#150613

r? @BoxyUwU
enrich error info when tries to dlopen Enzyme

In rust-lang#127273 I added a test and a FIXME comment pointing out how it does the wrong thing. In the next commit I fixed the problem but forgot to remove the FIXME comment, whoops.
tests/ui/runtime/on-broken-pipe/with-rustc_main.rs: Not needed so remove

related: rust-lang#145899 (comment)

print error from EnzymeWrapper::get_or_init(sysroot) as a note

r? @ZuseZ4

e.g.

1. when libEnzyme not found

```shell
$ rustc +stage1 -Z autodiff=Enable -C lto=fat src/main.rs
error: autodiff backend not found in the sysroot: failed to find a `libEnzyme-21` folder in the sysroot candidates:
       * /Volumes/WD_BLACK_SN850X_HS_1TB/rust-lang/rust/build/aarch64-apple-darwin/stage1/lib
  |
  = note: it will be distributed via rustup in the future
```

2. when could not load libEnzyme successfully

```shell
rustc +stage1 -Z autodiff=Enable -C lto=fat src/main.rs
error: failed to load our autodiff backend: DlOpen { source: "dlopen(/Volumes/WD_BLACK_SN850X_HS_1TB/rust-lang/rust/build/aarch64-apple-darwin/stage1/lib/rustlib/aarch64-apple-darwin/lib/libEnzyme-21.dylib, 0x0005): tried: \'/Volumes/WD_BLACK_SN850X_HS_1TB/rust-lang/rust/build/aarch64-apple-darwin/stage1/lib/rustlib/aarch64-apple-darwin/lib/libEnzyme-21.dylib\' (slice is not valid mach-o file), \'/System/Volumes/Preboot/Cryptexes/OS/Volumes/WD_BLACK_SN850X_HS_1TB/rust-lang/rust/build/aarch64-apple-darwin/stage1/lib/rustlib/aarch64-apple-darwin/lib/libEnzyme-21.dylib\' (no such file), \'/Volumes/WD_BLACK_SN850X_HS_1TB/rust-lang/rust/build/aarch64-apple-darwin/stage1/lib/rustlib/aarch64-apple-darwin/lib/libEnzyme-21.dylib\' (slice is not valid mach-o file)" }
```
Fix `alloc_error_handler` signature mismatch

It was added in ddee45e ([here](https://github.com/rust-lang/rust/pull/97802/changes#diff-85dc642a7bdad363a9e37d2491230280fcd977391ba7a242bda2da9ddb55f654) to be specific) when SIGPIPE was controlled with an attribute on `fn main()` which meant it could also be combined with `#[rustc_main]`:

    #[unix_sigpipe = "sig_dfl"]
    #[rustc_main]
    fn rustc_main() {

The test stopped being needed in cde0cde when `#[unix_sigpipe = "..."]` was replaced by `-Zon-broken-pipe=...`. And it will not be needed when `-Zon-broken-pipe=...` is replaced by an Externally Implementable Item (see rust-lang#150591). Let's remove this test.

Tracking issue:
- rust-lang#150588
Stabilize `slice::element_offset`

[slice::element_offset](https://doc.rust-lang.org/std/primitive.slice.html#method.element_offset)

Partially stabilizes rust-lang#126769 (substr_range).

[FCP completed](rust-lang#126769 (comment))

The other methods are [stalled because of the new range types](rust-lang#126769 (comment)), but this method doesn't use ranges.
Remove out of date FIXME comment.

Commit rust-lang#147526 removed the following code and replaced it with the `AllocatorMethod`. However, its input is empty, resulting in behavior inconsistent with the previous code.

```rust
  create_wrapper_function(
      tcx,
      &cx,
      &mangle_internal_symbol(tcx, "__rust_alloc_error_handler"),
      Some(&mangle_internal_symbol(tcx, alloc_error_handler_name(alloc_error_handler_kind))),
      &[usize, usize], // size, align
      None,
      true,
      &CodegenFnAttrs::new(),
  );
  ```

  resolves rust-lang#150755
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Jan 8, 2026
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. F-autodiff `#![feature(autodiff)]` 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. 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. labels Jan 8, 2026
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@rust-bors rust-bors bot added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jan 8, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 8, 2026

📌 Commit bfec56b has been approved by matthiaskrgr

It is now in the queue for this repository.

@rust-bors rust-bors bot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 8, 2026
@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added the merged-by-bors This PR was explicitly merged by bors. label Jan 8, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 8, 2026

☀️ Test successful - CI
Approved by: matthiaskrgr
Pushing bca37a2 to main...

@rust-bors rust-bors bot merged commit bca37a2 into rust-lang:main Jan 8, 2026
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Jan 8, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#150675 MGCA: Support tuple expressions as direct const arguments 114ddb120d3b825abcf563a0e1fd8289e3c11231 (link)
#150696 enrich error info when tries to dlopen Enzyme 223f2d17533921240d0fcf949345d88fd6635a50 (link)
#150747 tests/ui/runtime/on-broken-pipe/with-rustc_main.rs: Not nee… 076205a64463663589df78200b73d1ac8073add2 (link)
#150757 Fix alloc_error_handler signature mismatch 6c5495b3e3f532e80840d40f1e7a8cafc6a7779a (link)
#150777 Stabilize slice::element_offset 62ed8eb16d07b8cc2286b6d7b87366e3bc8d0416 (link)
#150791 Remove out of date FIXME comment. 74fc1a09129d95938190a8d23947093b55a782f8 (link)

previous master: 598c7bde38

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 8, 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 598c7bd (parent) -> bca37a2 (this PR)

Test differences

Show 69 test diffs

Stage 1

  • [crashes] tests/crashes/133965.rs: pass -> [missing] (J0)
  • [ui] tests/ui/const-generics/mgca/adt_expr_arg_tuple_expr_complex.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/adt_expr_arg_tuple_expr_simple.rs: [missing] -> pass (J0)
  • [ui] tests/ui/duplicate/multiple-types-with-same-name-and-derive-default-133965.rs: [missing] -> pass (J0)
  • [ui] tests/ui/runtime/on-broken-pipe/with-rustc_main.rs: pass -> [missing] (J0)

Stage 2

  • [ui] tests/ui/const-generics/mgca/adt_expr_arg_tuple_expr_complex.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/mgca/adt_expr_arg_tuple_expr_simple.rs: [missing] -> pass (J1)
  • [crashes] tests/crashes/133965.rs: pass -> [missing] (J2)
  • [ui] tests/ui/runtime/on-broken-pipe/with-rustc_main.rs: ignore (only executed when the target family is unix (because SIGPIPE is a unix thing)) -> [missing] (J3)
  • [crashes] tests/crashes/133965.rs: ignore (ignored if rustc wasn't built with debug assertions) -> [missing] (J4)
  • [ui] tests/ui/duplicate/multiple-types-with-same-name-and-derive-default-133965.rs: [missing] -> ignore (ignored if rustc wasn't built with debug assertions) (J4)
  • [ui] tests/ui/duplicate/multiple-types-with-same-name-and-derive-default-133965.rs: [missing] -> pass (J5)
  • [ui] tests/ui/runtime/on-broken-pipe/with-rustc_main.rs: pass -> [missing] (J6)

Additionally, 56 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 bca37a20bd376ce3fd138e7cdee7fe704e0f8814 --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. dist-apple-various: 4053.6s -> 3524.1s (-13.1%)
  2. x86_64-gnu-miri: 5366.8s -> 4798.5s (-10.6%)
  3. aarch64-apple: 10709.4s -> 9577.3s (-10.6%)
  4. dist-powerpc-linux: 5559.5s -> 4993.8s (-10.2%)
  5. x86_64-msvc-ext2: 6028.7s -> 5424.6s (-10.0%)
  6. dist-aarch64-msvc: 5827.0s -> 6344.1s (+8.9%)
  7. x86_64-gnu: 8421.7s -> 7760.7s (-7.8%)
  8. x86_64-gnu-llvm-21-3: 7152.8s -> 6603.3s (-7.7%)
  9. pr-check-1: 1920.6s -> 1785.4s (-7.0%)
  10. i686-gnu-1: 8198.8s -> 8773.0s (+7.0%)
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

Finished benchmarking commit (bca37a2): 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
Improvements ✅
(secondary)
-0.3% [-0.6%, -0.1%] 4
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -1.7%)

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)
-1.7% [-1.7%, -1.7%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -1.7% [-1.7%, -1.7%] 1

Cycles

Results (primary -2.3%, secondary -3.0%)

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)
-2.3% [-2.8%, -1.7%] 3
Improvements ✅
(secondary)
-3.0% [-3.0%, -3.0%] 1
All ❌✅ (primary) -2.3% [-2.8%, -1.7%] 3

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 474.717s -> 475.924s (0.25%)
Artifact size: 390.81 MiB -> 390.87 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. F-autodiff `#![feature(autodiff)]` merged-by-bors This PR was explicitly merged by bors. 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-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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants