Skip to content

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

tiif and others added 30 commits March 12, 2025 14:38
Currently, the code for process aborts is duplicated across `panic_abort` and `std`. This PR uses `#[rustc_std_internal_symbol]` to make the `std` implementation available to `panic_abort` via the linker, thereby deduplicating the code.
MIR borrowck taints its output if an obligation fails. This could then cause
`check_coroutine_obligations` to silence its error, causing us to not emit
and actual error and ICE.
Implement Display for ``rustc_target::callconv::Conv``

Follow up of rust-lang#133103 (comment)
…ecked, r=scottmcm

Add as_ascii_unchecked() methods to char, u8, and str

This PR adds the `as_ascii_unchecked()` method to `char`, `u8`, and `str`, allowing users to convert these types to `ascii::Char`s (see rust-lang#110998) in an `unsafe` context without first checking for validity. This method was already available for `[u8]`, so this PR makes the API more consistent across other types.
deduplicate abort implementations

Currently, the code for process aborts is duplicated across `panic_abort` and `std`. This PR uses `#[rustc_std_internal_symbol]` to make the `std` implementation available to `panic_abort` via the linker, thereby deduplicating the code.
checktools.sh: fix bashism

Follow-up to rust-lang#140903. Turns out `tests/{pass,panic}` only properly expands in bash, not in dash. :/

r? `@WaffleLapkin`
turn lld warning on old gccs into info log

As discussed in rust-lang#140964 and IRL, this PR switches the spammy warning shown unconditionally when an old gcc doesn't support `-fuse-ld=lld` and we retry linking without it, to an info debug log so we don't lose it.

r? `@Mark-Simulacrum`

Fixes rust-lang#140964
…r-errors

Enable rust-analyzer to go from query definition to the corresponding provider field

r? `@compiler-errors`
…r=lcnr

Only select true errors in `impossible_predicates`

See description in test.

Fixes rust-lang#141119

r? lcnr
…rowck, r=compiler-errors

check coroutines with `TypingMode::Borrowck` to avoid cyclic reasoning

MIR borrowck taints its output if an obligation fails. This could then cause `check_coroutine_obligations` to silence its error, causing us to not emit and actual error and ICE.

Fixes the ICE in rust-lang/trait-system-refactor-initiative#199. It is unfortunately still a regression.

r? compiler-errors
…=fmease

Make some `match`es slightly more ergonomic in `librustdoc`

Bunch of small cleanups I found while working on other stuff, mostly getting rid of superfluous `*`s and `ref [mut]`s in `match`es,
makes the code less sigil/keyword-heavy, and slightly improves readability IMHO.
Also flattens a few nested `match`es.
@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 O-hermit Operating System: Hermit O-SGX Target: SGX O-windows Operating system: Windows S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. rollup A PR which is a rollup labels May 17, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented May 17, 2025

📌 Commit 339a46c has been approved by matthiaskrgr

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 May 17, 2025
@bors
Copy link
Collaborator

bors commented May 17, 2025

⌛ Testing commit 339a46c with merge bf5a38d...

@bors
Copy link
Collaborator

bors commented May 17, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing bf5a38d to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label May 17, 2025
@bors bors merged commit bf5a38d into rust-lang:master May 17, 2025
7 checks passed
@rustbot rustbot added this to the 1.89.0 milestone May 17, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#135808 Implement Display for rustc_target::callconv::Conv e8423b713571c57015027eb82cc1fb66420676e5 (link)
#137432 Add as_ascii_unchecked() methods to char, u8, and str b6f78fdcdf24a32ebb66a525f1cfb4873120753f (link)
#139103 deduplicate abort implementations cc229f9c0437c778e26d4ef63e9ab017528821cf (link)
#140917 checktools.sh: fix bashism f126bac1f698d552f486092e93e829fdd1048832 (link)
#141035 turn lld warning on old gccs into info log bd45f4577482a212cf2fb5a2e60cac60a773112d (link)
#141118 Enable rust-analyzer to go from query definition to the cor… 28fb6549a47e2c4367873fb6a05712287cc31228 (link)
#141121 Only select true errors in impossible_predicates 45a9e15607a7c055b7b0d411769f12f48a0cbcbe (link)
#141125 check coroutines with TypingMode::Borrowck to avoid cycli… a41f061bea785f97385bd790c0a38087c64780c9 (link)
#141131 Make some matches slightly more ergonomic in librustdoc 1d81aef5ffc5819706bab6814324c1530764c552 (link)

previous master: 2c12b4a690

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

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 2c12b4a (parent) -> bf5a38d (this PR)

Test differences

Show 34066 test diffs

Stage 1

  • cell::refcell_replace_borrows: [missing] -> pass (J0)
  • collections::btree::map::tests::test_into_iter_drop_leak_kv_panic_in_key: [missing] -> pass (J0)
  • collections::btree::map::tests::test_range_equal_empty_cases: [missing] -> pass (J0)
  • collections::linked_list::tests::test_iterator_clone: [missing] -> pass (J0)
  • f64::test_float_bits_conv: [missing] -> pass (J0)
  • io::tests::skip_until: [missing] -> pass (J0)
  • iter::adapters::copied::test_copied: [missing] -> pass (J0)
  • iter::adapters::take::test_exact_size_take_repeat: [missing] -> pass (J0)
  • num::u128::test_overflows: [missing] -> pass (J0)
  • num::u16::test_le: [missing] -> pass (J0)
  • num::u64::test_unbounded_shl: [missing] -> pass (J0)
  • num::u8::test_swap_bytes: [missing] -> pass (J0)
  • rc::test_from_box_trait_zero_sized: [missing] -> pass (J0)
  • slice::test_rotate_right: [missing] -> pass (J0)
  • sort::tests::unstable::correct_cell_i32_random_z1: [missing] -> pass (J0)
  • str::test_concat_for_different_types: [missing] -> pass (J0)
  • string::test_unsized_to_string: [missing] -> pass (J0)
  • sys_common::wtf8::tests::wtf8_to_owned: [missing] -> pass (J0)
  • hash::sip::bench_bytes_b_32: [missing] -> pass (J1)
  • iter::bench_fuse_chain_ref_sum: [missing] -> pass (J1)
  • iter::bench_fuse_ref_sum: [missing] -> pass (J1)
  • net::socket_addr::tests::bind_udp_socket_bad: [missing] -> pass (J1)
  • num::int_log::u64_log10_random_small: [missing] -> pass (J1)
  • ops::alloc_obj_with_dtor: [missing] -> pass (J1)
  • slice::rotate_huge_by9199_big: [missing] -> pass (J1)
  • slice::rotate_huge_by9199_u64: [missing] -> pass (J1)
  • sort::tests::unstable::stability_cell_i32_saw_mixed: [missing] -> pass (J1)
  • str::to_lowercase::short_pile_of_poo: [missing] -> pass (J1)
  • sys::pal::common::tests::heap_allocation_fails: [missing] -> pass (J1)
  • vec::bench_from_elem_0100: [missing] -> pass (J1)
  • error_reporting::traits::on_unimplemented_format::errors::verify_trait_selection_unknown_format_parameter_for_on_unimplemented_attr_4: [missing] -> pass (J2)
  • errors::verify_ast_passes_const_and_c_variadic_51: [missing] -> pass (J2)
  • errors::verify_mir_transform_force_inline_attr_1: [missing] -> pass (J2)
  • errors::verify_passes_implied_feature_not_exist_160: [missing] -> pass (J2)
  • errors::verify_session_sanitizer_cfi_canonical_jump_tables_requires_cfi_14: [missing] -> pass (J2)
  • session_diagnostics::verify_attr_parsing_missing_issue_8: [missing] -> pass (J2)
  • spec::tests::wasm32_wasip1_threads: [missing] -> pass (J2)
  • stable_hasher::tests::test_attribute_permutation: [missing] -> pass (J2)
  • tests::test_raw_no_start: [missing] -> pass (J2)
  • sort::tests::stable::correct_i32_all_equal: [missing] -> ignore (J3)
  • sort::tests::unstable::violate_ord_retain_orig_set_cell_i32_descending: [missing] -> ignore (J3)
  • os::unix::net::tests::test_send_vectored_fds_unix_stream: [missing] -> pass (J4)

Stage 2

  • c_str2::cstr_index_from_empty: pass -> [missing] (J0)
  • collections::hash::set::tests::test_extend_ref: pass -> [missing] (J0)
  • collections::linked_list::tests::extract_if_false: pass -> [missing] (J0)
  • collections::linked_list::tests::test_fuzz: pass -> [missing] (J0)
  • collections::vec_deque::tests::test_binary_search: pass -> [missing] (J0)
  • collections::vec_deque::tests::test_shrink_to_fit: pass -> [missing] (J0)
  • create_dir_all_bare: pass -> [missing] (J0)
  • iter::adapters::flatten::test_double_ended_flatten: pass -> [missing] (J0)
  • num::i32::test_le: pass -> [missing] (J0)
  • num::i8::test_div_floor: pass -> [missing] (J0)
  • num::i8::test_le: pass -> [missing] (J0)
  • num::u64::test_checked_next_multiple_of: pass -> [missing] (J0)
  • num::u64::test_swap_bytes: pass -> [missing] (J0)
  • num::u8::test_rotate: pass -> [missing] (J0)
  • only_one_source: pass -> [missing] (J0)
  • rwlock::test_rw_arc_poison_mapped_w_r: pass -> [missing] (J0)
  • slice::test_ends_with: pass -> [missing] (J0)
  • str::slice_index::rangeinclusive_neg_width::pass: pass -> [missing] (J0)
  • str::slice_index::simple_ascii: pass -> [missing] (J0)
  • str::test_trim: pass -> [missing] (J0)
  • string::test_remove_matches: pass -> [missing] (J0)
  • tests::smoke_no_dtor: pass -> [missing] (J0)
  • thread::tests::test_avoid_copying_the_body_spawn: pass -> [missing] (J0)
  • time::debug_formatting_precision_high: pass -> [missing] (J0)
  • vec::test_slice_from_ref: pass -> [missing] (J0)
  • vec_deque::test_param_int: pass -> [missing] (J0)
  • ascii::short::case01_black_box_read_each_byte: pass -> [missing] (J1)
  • btree::set::intersection_100_pos_vs_10k_neg: pass -> [missing] (J1)
  • fs::tests::chmod_works: pass -> [missing] (J1)
  • fs::tests::concurrent_recursive_mkdir: pass -> [missing] (J1)
  • net::udp::tests::connect_send_peek_recv: pass -> [missing] (J1)
  • sort::tests::stable::correct_dyn_val_saw_mixed: pass -> [missing] (J1)
  • sort::tests::stable::correct_string_random: pass -> [missing] (J1)
  • sort::tests::stable::stability_legacy: pass -> [missing] (J1)
  • sort::tests::unstable::correct_dyn_val_random_s95: pass -> [missing] (J1)
  • str::char_count::en_large::case03_manual_char_len: pass -> [missing] (J1)
  • str::rfind_zzz_char::short_ascii: pass -> [missing] (J1)
  • vec::bench_clone_from_01_0010_0100: pass -> [missing] (J1)
  • errors::verify_ast_passes_optional_trait_object_48: pass -> [missing] (J2)
  • errors::verify_expand_attributes_wrong_form_15: pass -> [missing] (J2)
  • errors::verify_hir_typeck_ctor_is_private_21: pass -> [missing] (J2)
  • errors::verify_incremental_create_dep_graph_37: pass -> [missing] (J2)
  • errors::verify_parse_cr_doc_comment_106: pass -> [missing] (J2)
  • errors::verify_parse_do_catch_syntax_removed_11: pass -> [missing] (J2)
  • errors::verify_parse_expected_trait_in_trait_impl_found_type_79: pass -> [missing] (J2)
  • errors::verify_parse_nonterminal_expected_statement_99: pass -> [missing] (J2)
  • errors::verify_passes_repr_conflicting_73: pass -> [missing] (J2)
  • html::length_limit::tests::forgot_to_close_tags: pass -> [missing] (J2)
  • lints::verify_lint_confusable_identifier_pair_75: pass -> [missing] (J2)
  • obligation_forest::tests::simultaneous_register_and_error: pass -> [missing] (J2)
  • spec::tests::armv7r_none_eabihf: pass -> [missing] (J2)
  • spec::tests::i386_apple_ios: pass -> [missing] (J2)
  • spec::tests::riscv64_linux_android: pass -> [missing] (J2)
  • spec::tests::riscv64imac_unknown_nuttx_elf: pass -> [missing] (J2)
  • util::comments::tests::test_line_doc_comment: pass -> [missing] (J2)
  • sort::tests::stable::panic_retain_orig_set_i32_random: ignore -> [missing] (J3)
  • sort::tests::unstable::stability_string_descending: ignore -> [missing] (J3)
  • sync::arc_drop_dereferenceable_race: pass -> [missing] (J3)

(and 16508 additional test diffs)

Additionally, 17458 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 bf5a38d118a46fb5fdff90e3dc3cbb58fe618c46 --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-apple-2: 1016.9s -> 4336.8s (326.5%)
  2. test-various: 2271.3s -> 4193.7s (84.6%)
  3. x86_64-gnu-aux: 4401.4s -> 6005.7s (36.5%)
  4. dist-apple-various: 5272.7s -> 6533.7s (23.9%)
  5. aarch64-apple: 3020.7s -> 3636.0s (20.4%)
  6. dist-arm-linux: 5357.0s -> 4534.3s (-15.4%)
  7. dist-x86_64-apple: 7517.3s -> 8402.6s (11.8%)
  8. dist-i686-msvc: 7133.3s -> 6794.6s (-4.7%)
  9. dist-x86_64-msvc-alt: 7731.4s -> 7370.5s (-4.7%)
  10. dist-i686-mingw: 7840.9s -> 8204.3s (4.6%)
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 (bf5a38d): comparison URL.

Overall result: ❌✅ regressions and improvements - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.0% [0.6%, 1.1%] 5
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.9% [-0.9%, -0.9%] 1
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -0.8%, secondary 1.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
7.0% [7.0%, 7.0%] 1
Regressions ❌
(secondary)
4.4% [3.6%, 5.0%] 3
Improvements ✅
(primary)
-8.7% [-8.7%, -8.7%] 1
Improvements ✅
(secondary)
-1.1% [-2.3%, -0.5%] 4
All ❌✅ (primary) -0.8% [-8.7%, 7.0%] 2

Cycles

Results (secondary -1.3%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.5% [0.4%, 0.7%] 3
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-3.1% [-4.6%, -1.0%] 3
All ❌✅ (primary) - - 0

Binary size

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

Bootstrap: 775.648s -> 774.349s (-0.17%)
Artifact size: 365.44 MiB -> 365.45 MiB (0.00%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
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. O-hermit Operating System: Hermit O-SGX Target: SGX O-windows Operating system: Windows 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-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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.