Skip to content

Conversation

@Zalathar
Copy link
Member

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

Delta17920 and others added 30 commits February 4, 2026 03:33
This code is now in `rustc_middle`, and doesn't need any non-trivial methods,
so it can just use `TyCtxt` directly instead.
llvm will look at both
1. the values of "target-features" and
2. the function string attributes.

this removes the redundant function string attribute because it is not needed at all.
rustc sets the `+backchain` attribute through `target_features_attr(...)`
It can't be serialized to a file.
now that the analysis is only using the regular liveness shape, we don't
need to store it transposed, and thus don't need the container where it
was stored: the liveness context would be alone in the polonius context.

we thus remove the latter, and rename the former.
we may need to traverse the lazy graph multiple times:
- to record loan liveness
- to dump the localized outlives constraint in the polonius MIR dump

to do that we extract the previous loan liveness code into an abstract
traversal + visitor handling the liveness-specific parts, while the MIR
dump will be able to record constraints in its own visitor.
now that we need to hold the graph for MIR dumping, and the associated
data to traverse it, there is no difference between the main context and
diagnostics context, so we merge them.
Previously, rustc rejected HvxVectorPair types in function signatures
because the HEXAGON_FEATURES_FOR_CORRECT_FIXED_LENGTH_VECTOR_ABI array
only had entries for vectors up to 1024 bits. This caused the ABI checker
to emit "unsupported vector type" errors for 2048-bit HvxVectorPair
(used in 128-byte HVX mode).

Add 2048 byte entry to allow HvxVectorPair to be passed
in extern "C" funcs when the hvx-length128b is enabled.
Compute localized outlives constraints lazily

This PR rewrites the loan liveness algorithm to compute localized constraints lazily during traversal, to avoid the sometimes costly conversion and indexing happening in the current eager algorithm (or for now as well, the need to reshape the liveness data to better list regions live at a given point).

It thus greatly reduces the current alpha overhead, although it wasn't entirely removed of course (we're obviously doing more work to improve precision): the worst offending benchmark has a +5-6% wall-time regression — but icounts are worse looking (+13%) rn.

Best reviewed per-commit, as steps are in sequence to simplify the process or unify some things.

r? @jackh726
…-rules, r=petrochenkov

Improve code suggestion for incorrect macro_rules! usage

Fixes rust-lang#150899
@rustbot rustbot added 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Feb 13, 2026
@Zalathar
Copy link
Member Author

Rollup of everything.

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 13, 2026

📌 Commit b9ce1e0 has been approved by Zalathar

It is now in the queue for this repository.

@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 Feb 13, 2026
@Zalathar
Copy link
Member Author

Double-check the job that failed in the previous rollup:

@bors try jobs=dist-ohos-armv7

@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Feb 13, 2026
Rollup of 17 pull requests


try-job: dist-ohos-armv7
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 13, 2026

☀️ Try build successful (CI)
Build commit: 370ba45 (370ba456accad0da6cc3857efffba3685c95e396, parent: 47611e16044c68ef27bac31c35fda2ba1dc20b73)

@rust-bors rust-bors bot mentioned this pull request Feb 13, 2026
@rust-bors

This comment has been minimized.

@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 Feb 13, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 13, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 36m 21s
Pushing d7daac0 to main...

@rust-bors rust-bors bot merged commit d7daac0 into rust-lang:main Feb 13, 2026
13 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Feb 13, 2026
@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 47611e1 (parent) -> d7daac0 (this PR)

Test differences

Show 340 test diffs

Stage 1

  • [codegen] tests/codegen-llvm/backchain.rs: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/borrow-box-in-map-3026.rs: [missing] -> pass (J2)
  • [ui] tests/ui/inline-const/reject-const-block-pat-pre-expansion.rs: [missing] -> pass (J2)
  • [ui] tests/ui/issues/issue-2708.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-2895.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-2904.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-2935.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-3026.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-3029.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-3052.rs: pass -> [missing] (J2)
  • [ui] tests/ui/issues/issue-3121.rs: pass -> [missing] (J2)
  • [ui] tests/ui/match/match-nested-enum-box-3121.rs: [missing] -> pass (J2)
  • [ui] tests/ui/panics/vec-extend-after-panic-3029.rs: [missing] -> pass (J2)
  • [ui] tests/ui/parser/macro-rules-paren-name-issue-150899.rs: [missing] -> pass (J2)
  • [ui] tests/ui/resolve/enum-variant-import-2904.rs: [missing] -> pass (J2)
  • [ui] tests/ui/resolve/struct-function-same-name-2708.rs: [missing] -> pass (J2)
  • [ui] tests/ui/structs/struct-size-with-drop-2895.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/coercion/unfulfilled-unsize-coercion-recursion-limit.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/coercion/unsize-coercion-recursion-limit.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/trait-object-method-call-2935.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/trait-object-type-alias-3052.rs: [missing] -> pass (J2)
  • [ui] tests/ui/try-block/try-block-homogeneous-pre-expansion.rs: [missing] -> pass (J2)

Stage 2

  • [ui] tests/ui/borrowck/borrow-box-in-map-3026.rs: [missing] -> pass (J0)
  • [ui] tests/ui/inline-const/reject-const-block-pat-pre-expansion.rs: [missing] -> pass (J0)
  • [ui] tests/ui/issues/issue-2708.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-2895.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-2904.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-2935.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-3026.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-3029.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-3052.rs: pass -> [missing] (J0)
  • [ui] tests/ui/issues/issue-3121.rs: pass -> [missing] (J0)
  • [ui] tests/ui/match/match-nested-enum-box-3121.rs: [missing] -> pass (J0)
  • [ui] tests/ui/panics/vec-extend-after-panic-3029.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/macro-rules-paren-name-issue-150899.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/enum-variant-import-2904.rs: [missing] -> pass (J0)
  • [ui] tests/ui/resolve/struct-function-same-name-2708.rs: [missing] -> pass (J0)
  • [ui] tests/ui/structs/struct-size-with-drop-2895.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/coercion/unfulfilled-unsize-coercion-recursion-limit.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/coercion/unsize-coercion-recursion-limit.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/trait-object-method-call-2935.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/trait-object-type-alias-3052.rs: [missing] -> pass (J0)
  • [ui] tests/ui/try-block/try-block-homogeneous-pre-expansion.rs: [missing] -> pass (J0)
  • [codegen] tests/codegen-llvm/backchain.rs: [missing] -> pass (J3)

Additionally, 296 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 d7daac06d87e1252d10eaa44960164faac46beff --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-x86_64-apple: 2h 21m -> 3h 23m (+43.3%)
  2. dist-aarch64-linux: 1h 54m -> 2h 26m (+28.5%)
  3. dist-aarch64-apple: 2h 21m -> 1h 48m (-23.1%)
  4. dist-apple-various: 1h 49m -> 1h 29m (-18.0%)
  5. aarch64-apple: 4h 10m -> 3h 27m (-17.1%)
  6. test-various: 1h 43m -> 1h 55m (+12.5%)
  7. x86_64-gnu-llvm-21-1: 1h 11m -> 1h 3m (-11.9%)
  8. i686-gnu-nopt-1: 2h 5m -> 2h 19m (+10.7%)
  9. x86_64-rust-for-linux: 42m 39s -> 46m (+7.8%)
  10. aarch64-gnu: 2h 4m -> 2h 14m (+7.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.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#150551 Compute localized outlives constraints lazily 03eaa73a20ddb7334d26bd05ff95d011246e45b6 (link)
#150988 Improve code suggestion for incorrect macro_rules! usage 3e6171407dd1bc91613b390d8e8ce24819a1a0a5 (link)
#152082 Move tests 41e9faa834aa8d5dd847c5150221a5c49df59cdc (link)
#152232 Add must_use for FileTimes 6e5b3320a7edb13f59c286205699c7f60e7ef606 (link)
#152329 Simplify parallel! macro 7473b5208b44c23ab7d066e1cbe6574fad110006 (link)
#152422 Change query proc macro to be more rust-analyzer friendly 3970e5cfdc4e0e0e6a91d0287c1a1e38ce33925b (link)
#152444 -Znext-solver Prevent committing unfulfilled unsized coer… ac927d065cf4774dd21f5c849a19c444c5eea67d (link)
#152486 remove redundant backchain attribute in codegen 4e678ba1c971e3097e991850bde7b12a16cd0538 (link)
#152496 Fix multi-cgu+debug builds using autodiff by delaying autod… 26a57aab283dd97f866ba0ba12e240734e514454 (link)
#152514 Collect active query jobs into struct QueryJobMap 77da52c0043c03ebca567f0455d895df88be9ec2 (link)
#152519 Fix feature gating for new try bikeshed expressions 86f7eb8e987f15b2677538af359a9a63495a175a (link)
#152520 Don't use DepContext in rustc_middle::traits::cache 74809f01d25ee78e7977d25af04ef416ad3d229f (link)
#152528 Support serializing CodegenContext e60aa037cd3c80a35e4ce0fcebc562cf6f8dd393 (link)
#152529 sparc64: enable abi compatibility test a06977c4b13d41776a21e0970e91586df473b635 (link)
#152548 reject inline const patterns pre-expansion ad8a54abb6a3074f1c785b4c9545bba455215b4e (link)
#152550 Port #[prelude_import] to the attribute parser 4ee6aff0f1c2653fc83ee26a662a020a662d4f99 (link)
#152552 Add 2048-bit HvxVectorPair support to Hexagon SIMD ABI chec… 2b08eacca500443ed7ff6ccbc7f7d535e563a4eb (link)

previous master: 47611e1604

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 (d7daac0): 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
Regressions ❌
(secondary)
0.3% [0.2%, 0.5%] 11
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

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

Cycles

Results (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)
- - 0
Regressions ❌
(secondary)
4.7% [4.7%, 4.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.8% [-7.7%, -2.3%] 4
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 482.691s -> 479.255s (-0.71%)
Artifact size: 398.13 MiB -> 398.14 MiB (0.00%)

@rustbot rustbot added the perf-regression Performance regression. label Feb 13, 2026
@JonathanBrouwer
Copy link
Contributor

Could be noise, not sure, let's wait for the next PR to see if it goes back down

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. rollup A PR which is a rollup 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.