Skip to content

Rollup of 18 pull requests - #152156

Merged
rust-bors[bot] merged 45 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-hT8ON1e
Feb 5, 2026
Merged

Rollup of 18 pull requests#152156
rust-bors[bot] merged 45 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-hT8ON1e

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

ChrisDentonand others added 30 commits January 23, 2026 21:04
This makes rustc simply return an exit code from main rather than calling `std::process::exit` with an exit code. This means that drops run normally and the process exits cleanly.
Also instead of hard coding success and failure codes this uses `ExitCode::SUCCESS` and `ExitCode::FAILURE`, which in turn effectively uses `libc::EXIT_SUCCESS` and `libc::EXIT_FAILURE` (via std). These are `0` and `1` respectively for all currently supported host platforms so it doesn't actually change the exit code.
There don't appear to be any trait impls relying on this default body.
Hexagon Linux targets (hexagon-unknown-linux-musl) use in-tree
llvm-libunwind for stack unwinding. However, hexagon-unknown-qurt
uses libc_eh from the Hexagon SDK instead.
`get_resident_set_size` computed RSS by multiplying the number of pages
from `/proc/self/statm` with a hard-coded 4096-byte page size. This
produces incorrect results on systems where the runtime page size is
not 4 KiB.
Use `sysconf(_SC_PAGESIZE)` to determine the actual page size at runtime
so the RSS reported in `-Z time-passes` output is accurate across
platforms.
Also remove mentions of removed `rustc_dirty`
It's a tiny module with one trait and a default impl. It's not used in
`rustc_query_system`; all uses and non-default impls are in
`rustc_middle` and `rustc_query_impl`.
This commit moves it into `rustc_middle`, which makes things simpler
overall.
It's a better place for it, because it relates to queries.
They are defined in `rustc_query_system` but used in `rustc_query_impl`.
This is very much *not* how things are supposed to be done; I suspect
someone got lazy and took a shortcut at some point.
This commit moves the errors into `rustc_query_impl`. This requires more
lines of code to give `rustc_query_impl` an errors module, but it's
worthwhile to do things in the normal way instead of a weird exceptional
way.
It's unused. And it's nice to remove this function that didn't behave
like normal `clear` does, as the comment explained.
Return `ExitCode` from `rustc_driver::main` instead of calling `process::exit`
This makes rustc simply return an exit code from main rather than calling `std::process::exit` with an exit code. This means that drops run normally and the process exits cleanly. This is similar to what happens when an ICE occurs (due to being a panic that's caught by std's `lang_start`).
Also instead of hard coding success and failure codes this uses `ExitCode::SUCCESS` and `ExitCode::FAILURE`, which in turn effectively uses `libc::EXIT_SUCCESS` and `libc::EXIT_FAILURE` (via std). These are `0` and `1` respectively for all currently supported host platforms so it doesn't actually change the exit code.
Rename trait `DepNodeParams` to `DepNodeKey`
In query system plumbing, we usually refer to a query's explicit argument value as a “key”.
The first few commits do some preliminary cleanup that would conflict with the rename; the rename itself is in the final commit.
r? nnethercote (or compiler)
…, r=GuillaumeGomez
Convert to inline diagnostics in `rustc_hir_typeck`
For rust-lang#151366
r? @GuillaumeGomez
@rust-borsrust-borsBot 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 5, 2026
@rust-bors

This comment has been minimized.

@rust-borsrust-borsBot 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 5, 2026
@rust-bors

rust-borsBot commented Feb 5, 2026

Copy link
Copy Markdown
Contributor

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

@rust-bors
rust-borsBot merged commit 0a13b43 into rust-lang:mainFeb 5, 2026
12 checks passed
@rustbotrustbot added this to the 1.95.0 milestone Feb 5, 2026
@github-actions

Copy link
Copy Markdown
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 9f4b56a (parent) -> 0a13b43 (this PR)

Test differences

Show 1165 test diffs

Stage 0

  • errors::verify_codegen_ssa_extract_bundled_libs_convert_name_59: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_forbidden_ctarget_feature_123: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_incorrect_cgu_reuse_type_1: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_invalid_monomorphization_basic_float_type_71: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_invalid_monomorphization_float_to_int_unchecked_72: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_invalid_monomorphization_simd_argument_76: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_invalid_monomorphization_simd_third_80: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_invalid_monomorphization_unsupported_operation_104: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_no_saved_object_file_16: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_rlib_archive_build_failure_53: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_xcrun_failed_invoking_117: pass -> [missing] (J0)
  • errors::verify_codegen_ssa_xcrun_unsuccessful_118: pass -> [missing] (J0)
  • errors::verify_expand_invalid_cfg_no_predicate_16: pass -> [missing] (J0)
  • errors::verify_expand_invalid_cfg_predicate_literal_18: pass -> [missing] (J0)
  • errors::verify_expand_macro_call_unused_doc_comment_43: pass -> [missing] (J0)
  • errors::verify_expand_meta_var_dif_seq_matchers_7: pass -> [missing] (J0)
  • errors::verify_expand_metavar_still_repeating_4: pass -> [missing] (J0)
  • errors::verify_expand_proc_macro_derive_tokens_27: pass -> [missing] (J0)
  • errors::verify_hir_typeck_ctor_is_private_24: pass -> [missing] (J0)
  • errors::verify_hir_typeck_fn_item_to_variadic_function_27: pass -> [missing] (J0)
  • errors::verify_hir_typeck_union_pat_dotdot_14: pass -> [missing] (J0)
  • errors::verify_metadata_crate_not_panic_runtime_18: pass -> [missing] (J0)
  • errors::verify_metadata_failed_write_error_28: pass -> [missing] (J0)
  • errors::verify_metadata_newer_crate_version_41: pass -> [missing] (J0)
  • errors::verify_metadata_no_multiple_global_alloc_22: pass -> [missing] (J0)
  • errors::verify_metadata_renaming_no_link_12: pass -> [missing] (J0)
  • errors::verify_metadata_rustc_lib_required_2: pass -> [missing] (J0)
  • errors::verify_mir_transform_unknown_pass_name_5: pass -> [missing] (J0)
  • errors::verify_passes_custom_mir_phase_requires_dialect_101: pass -> [missing] (J0)
  • errors::verify_passes_feature_stable_twice_58: [missing] -> pass (J0)
  • errors::verify_passes_implied_feature_not_exist_81: pass -> [missing] (J0)
  • errors::verify_passes_incorrect_target_62: [missing] -> pass (J0)
  • errors::verify_passes_layout_abi_49: [missing] -> pass (J0)
  • errors::verify_passes_macro_only_attribute_29: [missing] -> pass (J0)
  • errors::verify_passes_missing_const_stab_attr_78: pass -> [missing] (J0)
  • errors::verify_passes_missing_lang_item_43: [missing] -> pass (J0)
  • errors::verify_passes_object_lifetime_err_67: pass -> [missing] (J0)
  • errors::verify_passes_proc_macro_bad_sig_84: [missing] -> pass (J0)
  • errors::verify_passes_repr_conflicting_26: [missing] -> pass (J0)
  • errors::verify_passes_rustc_pub_transparent_32: [missing] -> pass (J0)
  • errors::verify_passes_sanitize_attribute_not_allowed_89: pass -> [missing] (J0)
  • errors::verify_passes_trait_impl_const_stable_79: pass -> [missing] (J0)
  • errors::verify_passes_transparent_incompatible_71: [missing] -> pass (J0)
  • errors::verify_passes_unknown_feature_alias_80: pass -> [missing] (J0)
  • errors::verify_passes_unnecessary_stable_feature_86: pass -> [missing] (J0)
  • errors::verify_passes_unstable_attr_for_already_stable_feature_76: pass -> [missing] (J0)
  • errors::verify_resolve_cannot_be_reexported_private_32: pass -> [missing] (J0)
  • errors::verify_resolve_extern_crate_not_idiomatic_70: pass -> [missing] (J0)
  • errors::verify_resolve_forward_declared_generic_param_7: pass -> [missing] (J0)
  • errors::verify_resolve_macro_rule_never_used_69: pass -> [missing] (J0)
  • errors::verify_resolve_self_import_only_in_import_list_with_non_empty_prefix_5: pass -> [missing] (J0)
  • errors::verify_resolve_tool_only_accepts_identifiers_59: pass -> [missing] (J0)

Stage 1

  • [incremental] tests/incremental/dirty_clean.rs: pass -> [missing] (J0)
  • [incremental] tests/incremental/unchecked_dirty_clean.rs: pass -> [missing] (J0)
  • errors::metavar_exprs::verify_expand_mve_extra_tokens_39: pass -> [missing] (J1)
  • errors::verify_ast_lowering_extra_double_dot_23: pass -> [missing] (J1)
  • errors::verify_ast_lowering_invalid_asm_template_modifier_sym_17: pass -> [missing] (J1)
  • errors::verify_ast_lowering_underscore_expr_lhs_assign_3: pass -> [missing] (J1)
  • errors::verify_ast_lowering_union_default_field_values_35: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_invalid_monomorphization_mismatched_lengths_94: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_invalid_monomorphization_simd_index_out_of_bounds_90: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_no_natvis_directory_15: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_select_cpp_build_tool_workload_33: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_target_feature_safe_trait_107: pass -> [missing] (J1)
  • errors::verify_codegen_ssa_unable_to_run_dsymutil_43: pass -> [missing] (J1)
  • errors::verify_expand_count_repetition_misplaced_3: pass -> [missing] (J1)
  • errors::verify_expand_expr_repeat_no_syntax_vars_1: pass -> [missing] (J1)
  • errors::verify_expand_macro_body_stability_11: pass -> [missing] (J1)
  • errors::verify_expand_macro_call_unused_doc_comment_43: pass -> [missing] (J1)
  • errors::verify_expand_macro_const_stability_10: pass -> [missing] (J1)
  • errors::verify_expand_must_repeat_once_2: pass -> [missing] (J1)
  • errors::verify_hir_typeck_cant_dereference_10: pass -> [missing] (J1)
  • errors::verify_hir_typeck_field_multiply_specified_in_initializer_0: pass -> [missing] (J1)
  • errors::verify_hir_typeck_return_stmt_outside_of_fn_body_1: pass -> [missing] (J1)
  • errors::verify_metadata_dl_error_40: pass -> [missing] (J1)
  • errors::verify_metadata_lib_framework_apple_10: pass -> [missing] (J1)
  • errors::verify_metadata_required_panic_strategy_5: pass -> [missing] (J1)
  • errors::verify_mir_transform_fn_item_ref_8: pass -> [missing] (J1)
  • errors::verify_mir_transform_unconditional_recursion_0: pass -> [missing] (J1)
  • errors::verify_mir_transform_unused_capture_maybe_capture_ref_9: pass -> [missing] (J1)
  • errors::verify_passes_custom_mir_incompatible_dialect_and_phase_101: [missing] -> pass (J1)
  • errors::verify_passes_function_not_found_in_trait_108: pass -> [missing] (J1)
  • errors::verify_passes_inline_ignored_for_exported_65: [missing] -> pass (J1)
  • errors::verify_passes_inline_ignored_for_exported_66: pass -> [missing] (J1)
  • errors::verify_passes_may_dangle_37: pass -> [missing] (J1)
  • errors::verify_passes_missing_const_stab_attr_77: [missing] -> pass (J1)
  • errors::verify_passes_missing_const_stab_attr_78: pass -> [missing] (J1)
  • errors::verify_passes_missing_panic_handler_41: [missing] -> pass (J1)
  • errors::verify_passes_object_lifetime_err_66: [missing] -> pass (J1)
  • errors::verify_passes_repr_align_greater_than_target_max_28: pass -> [missing] (J1)
  • errors::verify_passes_trait_impl_const_stable_79: pass -> [missing] (J1)
  • errors::verify_passes_unexportable_adt_with_private_fields_97: [missing] -> pass (J1)
  • errors::verify_resolve_cannot_be_reexported_private_34: pass -> [missing] (J1)
  • errors::verify_resolve_extern_crate_not_idiomatic_70: pass -> [missing] (J1)
  • errors::verify_resolve_macro_expanded_extern_crate_cannot_shadow_extern_arguments_45: pass -> [missing] (J1)
  • errors::verify_resolve_macro_expanded_macro_exports_accessed_by_absolute_paths_24: pass -> [missing] (J1)
  • errors::verify_resolve_macro_rule_never_used_69: pass -> [missing] (J1)
  • errors::verify_resolve_macro_use_deprecated_66: pass -> [missing] (J1)
  • errors::verify_resolve_relative_2018_16: pass -> [missing] (J1)
  • errors::verify_resolve_tool_only_accepts_identifiers_59: pass -> [missing] (J1)

(and 1033 additional test diffs)

Additionally, 32 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 0a13b4361264236cb40afebea97973e6dc366de3 --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-gnu-llvm-20-2: 1h 27m -> 1h 39m (+13.9%)
  2. x86_64-gnu-gcc: 1h 1m -> 1h 8m (+11.4%)
  3. x86_64-gnu-stable: 2h 18m -> 2h 34m (+11.1%)
  4. dist-ohos-x86_64: 1h 12m -> 1h 20m (+10.4%)
  5. x86_64-gnu-llvm-21-1: 1h 8m -> 1h 15m (+10.0%)
  6. x86_64-gnu-llvm-21-3: 1h 45m -> 1h 55m (+9.7%)
  7. dist-riscv64-linux: 1h 31m -> 1h 22m (-9.6%)
  8. aarch64-gnu-llvm-20-2: 49m 29s -> 54m 13s (+9.6%)
  9. dist-x86_64-apple: 2h 21m -> 2h 9m (-8.6%)
  10. x86_64-rust-for-linux: 49m 28s -> 53m 26s (+8.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
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR#MessagePerf Build Sha
#150379Return ExitCode from rustc_driver::main instead of call…9a2ef25174b8436e5da46d3122d8752c377b5110 (link)
#152020Remove dummy loads on offload codegen11c9795cf55390393c54a14f79a863dc55799430 (link)
#152023Some rustc_query_system cleanups615f2590e0057cac19b09187cd073ea36f4fe806 (link)
#152033Rename trait DepNodeParams to DepNodeKeyc92ddcf2a442239408bbbe038bde771f07e82b6a (link)
#152068Convert to inline diagnostics in rustc_resolve3f9c2e253f37fe291467585b8e81ae8f65d39960 (link)
#152081Port depgraph testing attributes to parser670d3e642cf24e76e7ed0361fb52a295301a601e (link)
#152090Port reexport_test_harness_main to attr parser73c0253b17d237220b71088acab56470627373af (link)
#152105Convert to inline diagnostics in rustc_ast_loweringd4b94a1b0d530ab4c0756e36a3bf0efdc3b8944e (link)
#152108Convert to inline diagnostics in rustc_expand2c676f0116c11d029c7d70fa8518d87f78c468f2 (link)
#152110Fix incorrect RSS on systems with non-4K page size7c79b8afb167ef4ee97efaf00b51736ecb1379c5 (link)
#152111bootstrap: exclude hexagon-unknown-qurt from llvm-libunwind…a19990cc39732be009cfd8fc435a3f46cbc2e4cb (link)
#152114Convert to inline diagnostics in rustc_mir_transforme81fa3f719369159249b5468221782f2bf4d2b85 (link)
#152115Convert to inline diagnostics in rustc_metadata60e7852efadb0ddcbd4ad856d5236b21abf20c6f (link)
#152116Remove rustdoc GUI flaky testb457a185f247e21f189bc25ffdfe75bce0b5f32e (link)
#152118Convert to inline diagnostics in rustc_codegen_ssab4698af4531fa94ad09be8b5f978f40270eda182 (link)
#152128Adopt matches-logical-or-141497.rs to LLVM HEAD3419d07c1e51a89a5828b72b2cae950941e9e7f0 (link)
#152142Convert to inline diagnostics in rustc_hir_typeckf767a8866fdb5ad4aa0a6cb28a17c82ba7ed61f6 (link)
#152145Disable flaky test oneshot::recv_timeout_before_sende481a764ec454d760bd2915673bd83bedd97d160 (link)

previous master: 9f4b56a5ae

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
Copy Markdown
Collaborator

Finished benchmarking commit (0a13b43): comparison URL.

Overall result: ❌✅ regressions and improvements - 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.

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
1.1%[1.1%, 1.1%]1
Improvements ✅
(primary)
-0.3%[-0.5%, -0.2%]9
Improvements ✅
(secondary)
-1.8%[-7.0%, -0.1%]64
All ❌✅ (primary)-0.3%[-0.5%, -0.2%]9

Max RSS (memory usage)

Results (primary -1.5%, secondary -2.5%)

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

meanrangecount
Regressions ❌
(primary)
1.3%[1.3%, 1.3%]1
Regressions ❌
(secondary)
2.7%[2.7%, 2.7%]1
Improvements ✅
(primary)
-2.2%[-2.7%, -1.7%]4
Improvements ✅
(secondary)
-2.9%[-4.2%, -1.6%]12
All ❌✅ (primary)-1.5%[-2.7%, 1.3%]5

Cycles

Results (secondary -1.8%)

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

meanrangecount
Regressions ❌
(primary)
--0
Regressions ❌
(secondary)
3.6%[3.6%, 3.6%]1
Improvements ✅
(primary)
--0
Improvements ✅
(secondary)
-3.1%[-4.0%, -2.7%]4
All ❌✅ (primary)--0

Binary size

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

Bootstrap: 474.797s -> 474.495s (-0.06%)
Artifact size: 397.94 MiB -> 397.91 MiB (-0.01%)

@rustbotrustbot added the perf-regression Performance regression. label Feb 5, 2026
@lqd

lqd commented Feb 5, 2026

Copy link
Copy Markdown
Member

what

@JonathanBrouwer

JonathanBrouwer commented Feb 5, 2026

Copy link
Copy Markdown
MemberAuthor

Probably the inline diagnostics PRs? That's crazy, wasn't expecting that.
I'll run a few individual PRs to confirm when their perf builds are done

Im guessing: The old code parsed ALL ftl files at rustc startup, the new code parses messages on-demand (and at compile time for validation), the improved benchmarks are all relatively fast already so procentually this is a significant speedup

@lqd

lqd commented Feb 5, 2026

Copy link
Copy Markdown
Member

maybe yeah. benchmarks exercising diagnostics code paths noticeably is somewhat suboptimal lol

@jdonszelmann

Copy link
Copy Markdown
Contributor

hahaha, that's crazy

@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

Started two perf builds on #152068 and #152142 to verify the theory

@JonathanBrouwer

Copy link
Copy Markdown
MemberAuthor

Based on those results, this is definitely the diagnostic PRs
Only 1 regression and that one looks like noise to me

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label Feb 5, 2026
@JonathanBrouwer
JonathanBrouwer deleted the rollup-hT8ON1e branch August 21, 2026 08:24
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributesArea: Attributes (`#[…]`, `#![…]`)A-compiletestArea: The compiletest test runnerA-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-query-systemArea: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html)A-testsuiteArea: The testsuite used to check the correctness of rustcmerged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.rollupA PR which is a rollupT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-clippyRelevant to the Clippy team.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.T-rustdoc-frontendRelevant 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.

15 participants

@JonathanBrouwer@rust-timer@lqd@jdonszelmann@rustbot@ChrisDenton@Zalathar@Ozzy1423@Sa4dUs@GuillaumeGomez@androm3da@heiher@zmodem@jamie-osec@nnethercote