Skip to content

Conversation

@jhpratt
Copy link
Member

@jhpratt jhpratt commented Dec 13, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

notJoon and others added 27 commits August 12, 2025 07:49
This flag was an artifact of compiletest's old libtest-based test executor, and
currently doesn't influence compiletest's output at all.
This logic is cargo-specific anyway, so there is no need for it to be a
generally-available helper method.
The `INLINE_ALWAYS_MISMATCHING_TARGET_FEATURES` lint was missing from
this causing it to be an unknown lint when attempting to allow it.
…toyo

Update `rustc_codegen_gcc` rotate operation document

## Description

This PR resolves a TODO comment in the `rustc_codegen_gcc` backend by documenting that the rotate operations (`rotate_left` and `rotate_right`) already implement the optimized branchless algorithm from comment.

The existing implementation already uses the optimal branchless rotation pattern:
- For left rotation: `(x << n) | (x >> (-n & (width-1)))`
- For right rotation: `(x >> n) | (x << (-n & (width-1)))`

This pattern avoids branches and generates efficient machine code across different platforms, which was the goal mentioned in the original TODO.

## Changes

- Removed the TODO comment that suggested implementing the algorithm from https://blog.regehr.org/archives/1063
Use `let...else` instead of `match foo { ... _ => return };` and `if let ... else return`
…49038, r=estebank

Add proper suggestion for associated function with unknown field

Fixes rust-lang#149038

The first commit is changing the old suggestion to verbose,
the second commit is a new added suggestion.

r? ``@estebank``
…legation, r=petrochenkov

Inherit attributes in delegation

This PR adds support for inheriting attributes of the original function of the delegation and is a part of rust-lang#118212, for now we inherit only #[must_use] attribute, but we can add other attributes to inherit. The list of processed attributes can be found [here](https://github.com/aerooneqq/public-docs/blob/master/rust/delegation/processed_attributes.md).

r? ``@petrochenkov``
…r=petrochenkov

Fix: Prevent macro-expanded extern crates from shadowing extern arguments

prevents an ICE by fixing a logic bug in `build_reduced_graph.rs`.
the bug caused the compiler to correctly detect and report a shadowing error for a macro-expanded `extern crate` but then continue processing the invalid item, corrupting the resolver's internal state (`extern_prelude`) and leading to a crash in later resolution passes the fix adds an early return after the shadowing error is reported to ensure the invalid item is not added to the resolution graph.

Fixes rust-lang#149821
…sync, r=eholk

Weak for Arc pointer is marked as DynSend/DynSync

`std::sync::Weak` (weak pointer for Arc) added to DynSend and DynSync (looks like it was missed to add there when implemented).
…=jdonszelmann

Remove unused code in `cfg_old`

r? ```@jdonszelmann```

Fixes one of the todos from rust-lang#149865
bootstrap: Don't pass an unused `--color` to compiletest

- Follow-up to rust-lang#149850

---

This flag was an artifact of compiletest's old libtest-based test executor, and currently doesn't influence compiletest's output at all.

A follow-up commit also inlines `force_coloring_in_ci` into its only remaining caller, and updates its comment.
…petrochenkov

Add a sanity check in case of any duplicate nodes

A simple check in case compiler tries to encode a dep node twice like in rust-lang#141540.

Also if we'd try to mark a red node as green as it may then create a bad `DepNodeIndex` like in rust-lang#148295.

If it prevents rust-lang#141540 from emitting a faulty `dep-graph.bin` file via panic then it means you will be able to temporarily fix it by simply restarting cargo or rust-analyzer without cleaning up incremental cache.
… r=davidtwco

`declare_lint_pass` for `INLINE_ALWAYS_MISMATCHING_TARGET_FEATURES`

The `INLINE_ALWAYS_MISMATCHING_TARGET_FEATURES` lint was missing from this causing it to be an unknown lint when attempting to allow it.

r? ``@davidtwco``
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. labels Dec 13, 2025
@rustbot rustbot added A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) rollup A PR which is a rollup labels Dec 13, 2025
@jhpratt
Copy link
Member Author

jhpratt commented Dec 13, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Dec 13, 2025

📌 Commit 3eba6b1 has been approved by jhpratt

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 Dec 13, 2025
@bors
Copy link
Collaborator

bors commented Dec 13, 2025

⌛ Testing commit 3eba6b1 with merge ce63e5d...

@bors
Copy link
Collaborator

bors commented Dec 13, 2025

☀️ Test successful - checks-actions
Approved by: jhpratt
Pushing ce63e5d to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 13, 2025
@bors bors merged commit ce63e5d into rust-lang:main Dec 13, 2025
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Dec 13, 2025
@jhpratt jhpratt deleted the rollup-9p1xc2t branch December 13, 2025 10:11
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#145278 Update rustc_codegen_gcc rotate operation document 351cf89d382863f70a1e1576dce3e51857db768f (link)
#148837 Use let...else instead of `match foo { ... _ => return };… 84122849e2cac398007669cdb3555aa08e8824eb (link)
#149177 Add proper suggestion for associated function with unknown … 17aecea313ec7084c225267bc2719599561a67a5 (link)
#149843 Inherit attributes in delegation 53a14a9353c33a03fcb62623778e749943b9e970 (link)
#149860 Fix: Prevent macro-expanded extern crates from shadowing ex… 5449670ac48905dd38c8e991c39df80304f9622d (link)
#149874 Weak for Arc pointer is marked as DynSend/DynSync 2b4e9bb8861954921f7f68b415eb5631903681c3 (link)
#149903 Remove unused code in cfg_old d5c3105509c13002074981386597bc108536a4d0 (link)
#149911 bootstrap: Don't pass an unused --color to compiletest caae0160e3405883260331bc12ea8b2e783bb131 (link)
#149916 Add a sanity check in case of any duplicate nodes c482d52988d68983a1cccc1af775d646a5344cc2 (link)
#149924 declare_lint_pass for `INLINE_ALWAYS_MISMATCHING_TARGET_F… 6300a48c7920d2d1ad6257057eef2c802b2d0f76 (link)

previous master: dc47a69ed9

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

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 dc47a69 (parent) -> ce63e5d (this PR)

Test differences

Show 1060 test diffs

Stage 0

  • session_diagnostics::verify_attr_parsing_as_needed_compatibility_60: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_deprecated_item_suggestion_22: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_deprecated_item_suggestion_24: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_bad_char_2: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_bad_char_3: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_empty_1: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_malformed_65: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_start_end_3: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_doc_alias_start_end_4: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_attribute_not_attribute_5: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_doc_attribute_not_attribute_6: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_doc_keyword_not_keyword_4: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_doc_keyword_not_keyword_5: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_expects_feature_list_25: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_expects_features_26: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_expects_features_28: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_incompatible_wasm_link_51: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_align_one_arg_18: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_align_one_arg_19: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_expect_literal_integer_19: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_packed_expect_integer_13: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_packed_expect_integer_14: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_packed_one_or_zero_arg_13: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_predicate_0: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_align_need_arg_16: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_align_need_arg_17: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_generic_17: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_generic_18: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_hint_no_paren_14: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_hint_no_paren_15: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_invalid_repr_hint_no_value_15: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_limit_invalid_62: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_limit_invalid_64: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_link_ordinal_out_of_range_48: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_link_requires_name_54: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_missing_feature_10: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_missing_issue_11: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_multiple_modifiers_58: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_multiple_stability_levels_8: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_non_ident_feature_10: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_null_on_objc_class_34: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_null_on_objc_selector_37: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_raw_dylib_no_nul_53: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_rustc_promotable_pairing_21: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_soft_no_args_28: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_stability_outside_std_40: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_suffixed_literal_in_attribute_50: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_unstable_feature_bound_incompatible_stability_46: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_unused_multiple_30: [missing] -> pass (J1)
  • session_diagnostics::verify_attr_parsing_unused_multiple_32: pass -> [missing] (J1)
  • session_diagnostics::verify_attr_parsing_whole_archive_needs_static_59: [missing] -> pass (J1)

Stage 1

  • session_diagnostics::verify_attr_parsing_deprecated_item_suggestion_22: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_bad_char_3: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_empty_1: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_malformed_63: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_start_end_3: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_doc_alias_start_end_4: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_doc_keyword_not_keyword_4: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_expected_single_version_literal_25: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_expected_version_literal_26: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_expects_feature_list_27: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_ill_formed_attribute_input_33: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_align_one_arg_18: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_align_one_arg_19: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_incorrect_repr_format_packed_one_or_zero_arg_13: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_invalid_alignment_value_41: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_invalid_alignment_value_43: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_invalid_attr_unsafe_49: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_invalid_link_modifier_57: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_invalid_predicate_0: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_invalid_repr_generic_18: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_invalid_repr_hint_no_value_15: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_invalid_since_27: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_invalid_since_29: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_link_framework_apple_52: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_link_requires_name_54: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_missing_note_8: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_missing_since_6: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_missing_since_7: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_naked_functions_incompatible_attribute_47: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_non_ident_feature_10: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_null_on_export_32: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_null_on_objc_selector_35: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_objc_selector_expected_string_literal_37: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_objc_selector_expected_string_literal_39: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_raw_dylib_no_nul_55: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_raw_dylib_only_windows_54: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_raw_dylib_only_windows_56: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_repr_ident_44: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_rustc_allowed_unstable_pairing_22: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_rustc_promotable_pairing_21: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_soft_no_args_28: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_soft_no_args_30: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_stability_outside_std_38: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_stability_outside_std_40: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_suffixed_literal_in_attribute_48: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_unknown_version_literal_29: [missing] -> pass (J0)
  • session_diagnostics::verify_attr_parsing_unstable_feature_bound_incompatible_stability_46: pass -> [missing] (J0)
  • session_diagnostics::verify_attr_parsing_unused_multiple_32: pass -> [missing] (J0)

Stage 2

  • [ui] tests/ui/resolve/ice-inconsistent-resolution-149821.rs: [missing] -> pass (J2)

(and 166 additional test diffs)

Additionally, 794 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 ce63e5d9ea20f15a70c6fdc4d4de7aee352fd965 --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. x86_64-rust-for-linux: 3208.8s -> 2690.2s (-16.2%)
  2. aarch64-gnu-llvm-20-2: 2580.7s -> 2165.6s (-16.1%)
  3. x86_64-gnu-llvm-21-1: 3753.9s -> 3167.6s (-15.6%)
  4. aarch64-gnu-llvm-20-1: 3871.9s -> 3301.6s (-14.7%)
  5. x86_64-gnu-miri: 5198.1s -> 4444.7s (-14.5%)
  6. x86_64-gnu-llvm-20: 2831.1s -> 2436.1s (-14.0%)
  7. pr-check-1: 1944.8s -> 1674.9s (-13.9%)
  8. x86_64-gnu-gcc: 3539.2s -> 3052.0s (-13.8%)
  9. x86_64-gnu-tools: 3760.0s -> 3271.3s (-13.0%)
  10. dist-x86_64-apple: 7918.2s -> 6966.5s (-12.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 (ce63e5d): comparison URL.

Overall result: ❌ regressions - 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.2% [0.2%, 0.2%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (secondary -0.8%)

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
Improvements ✅
(secondary)
-0.8% [-1.0%, -0.7%] 5
All ❌✅ (primary) - - 0

Cycles

Results (secondary -3.3%)

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

Binary size

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

Bootstrap: 475.622s -> 476.217s (0.13%)
Artifact size: 389.31 MiB -> 389.30 MiB (-0.00%)

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-compiletest Area: The compiletest test runner 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) A-testsuite Area: The testsuite used to check the correctness of rustc 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-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler 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.