Skip to content

Rollup of 18 pull requests#152156

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

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

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

Failed merges:

r? @ghost

Create a similar rollup

ChrisDenton and 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
@rustbot rustbot added 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. labels Feb 5, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Feb 5, 2026

📌 Commit f163864 has been approved by JonathanBrouwer

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

rust-bors bot commented Feb 5, 2026

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

@rust-bors rust-bors bot merged commit 0a13b43 into rust-lang:main Feb 5, 2026
12 checks passed
@rustbot rustbot added this to the 1.95.0 milestone Feb 5, 2026
@github-actions
Copy link
Contributor

github-actions bot commented Feb 5, 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 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
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#150379 Return ExitCode from rustc_driver::main instead of call… 9a2ef25174b8436e5da46d3122d8752c377b5110 (link)
#152020 Remove dummy loads on offload codegen 11c9795cf55390393c54a14f79a863dc55799430 (link)
#152023 Some rustc_query_system cleanups 615f2590e0057cac19b09187cd073ea36f4fe806 (link)
#152033 Rename trait DepNodeParams to DepNodeKey c92ddcf2a442239408bbbe038bde771f07e82b6a (link)
#152068 Convert to inline diagnostics in rustc_resolve 3f9c2e253f37fe291467585b8e81ae8f65d39960 (link)
#152081 Port depgraph testing attributes to parser 670d3e642cf24e76e7ed0361fb52a295301a601e (link)
#152090 Port reexport_test_harness_main to attr parser 73c0253b17d237220b71088acab56470627373af (link)
#152105 Convert to inline diagnostics in rustc_ast_lowering d4b94a1b0d530ab4c0756e36a3bf0efdc3b8944e (link)
#152108 Convert to inline diagnostics in rustc_expand 2c676f0116c11d029c7d70fa8518d87f78c468f2 (link)
#152110 Fix incorrect RSS on systems with non-4K page size 7c79b8afb167ef4ee97efaf00b51736ecb1379c5 (link)
#152111 bootstrap: exclude hexagon-unknown-qurt from llvm-libunwind… a19990cc39732be009cfd8fc435a3f46cbc2e4cb (link)
#152114 Convert to inline diagnostics in rustc_mir_transform e81fa3f719369159249b5468221782f2bf4d2b85 (link)
#152115 Convert to inline diagnostics in rustc_metadata 60e7852efadb0ddcbd4ad856d5236b21abf20c6f (link)
#152116 Remove rustdoc GUI flaky test b457a185f247e21f189bc25ffdfe75bce0b5f32e (link)
#152118 Convert to inline diagnostics in rustc_codegen_ssa b4698af4531fa94ad09be8b5f978f40270eda182 (link)
#152128 Adopt matches-logical-or-141497.rs to LLVM HEAD 3419d07c1e51a89a5828b72b2cae950941e9e7f0 (link)
#152142 Convert to inline diagnostics in rustc_hir_typeck f767a8866fdb5ad4aa0a6cb28a17c82ba7ed61f6 (link)
#152145 Disable flaky test oneshot::recv_timeout_before_send e481a764ec454d760bd2915673bd83bedd97d160 (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
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.

mean range count
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.

mean range count
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.

mean range count
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%)

@rustbot rustbot added the perf-regression Performance regression. label Feb 5, 2026
@lqd
Copy link
Member

lqd commented Feb 5, 2026

what

@JonathanBrouwer
Copy link
Contributor Author

JonathanBrouwer commented Feb 5, 2026

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
Copy link
Member

lqd commented Feb 5, 2026

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

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. perf-regression Performance regression. rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) 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.