Skip to content

Conversation

@Zalathar
Copy link
Member

@Zalathar Zalathar commented Nov 6, 2025

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

folkertdev and others added 17 commits October 16, 2025 11:03
document that the detect macros expand to `true` when the feature is statically enabled
Some sanitizers are part of a system's ABI, like the shadow call stack
on Aarch64 and RISC-V Fuchsia. Typically ABI options have other
spellings, but LLVM has, for historical reasons, marked this as a
sanitizer instead of an alternate ABI option. As a result, Fuchsia
targets may not be compiled against the correct ABI unless this option
is set. This hasn't caused correctness problems, since the backend
reserves the SCS register, and thus preserves its value. But this is an
issue for unwinding, as the SCS will not be an array of PCs describing
the call complete call chain, and will have gaps from callers that don't
use the correct ABI.

In the long term, I'd like to see all the sanitizer configs that all
frontends copy from clang moved into llvm's libFrontend, and exposed so
that frontend consumers can use a small set of simple APIs to use
sanitizers in a consistent way across the LLVM ecosystem, but that work
is not yet ready today.
While looking at the pretty-printers, I found a few minor oddities in
StdNonZeroNumberProvider.

First, gdb.Type.fields() already returns a sequence, so there's no
need to call list().

Second, it's more idiomatic for the (somewhat misnamed) to_string
method to simply return the underlying gdb.Value.  This also lets gdb
apply whatever formats were passed to `print`, as the new test shows.

Third, there's no need to use the field's name when looking up a field
in a value, the gdb.Field itself can be used.
gdb doesn't have a way to know when an object hasn't yet been
initialized, and in this case, if a pretty-printer returns an absurd
number of children, this can result in apparent hangs in some modes.
This came up specifically with DAP, see this bug report:

    https://sourceware.org/bugzilla/show_bug.cgi?id=33594

This patch (mostly) addresses this potential issue in the Rust
pretty-printers, by adding 'num_children' methods.  In particular a
method like this is added when the number of children is variable and
also relatively easy to compute.  (I.e., I didn't attempt the btree
printers.)

Supplying num_children is good for DAP regardless of the
initialization problem, because DAP requires a count of child objects
and this is more efficient than enumerating the children, which is
gdb's fallback approach.
The link had a stray character that generated an invalid link.
…bel, r=Amanieu

Make named asm_labels lint not trigger on hexagon register spans

Fixes rust-lang#143021
…ochenkov

Add default sanitizers to TargetOptions

Some sanitizers are part of a system's ABI, like the shadow call stack on Aarch64 and RISC-V Fuchsia. Typically ABI options have other spellings, but LLVM has, for historical reasons, marked this as a sanitizer instead of an alternate ABI option. As a result, Fuchsia targets may not be compiled against the correct ABI unless this option is set. This hasn't caused correctness problems, since the backend reserves the SCS register, and thus preserves its value. But this is an issue for unwinding, as the SCS will not be an array of PCs describing the call complete call chain, and will have gaps from callers that don't use the correct ABI.

In the long term, I'd like to see all the sanitizer configs that all frontends copy from clang moved into llvm's libFrontend, and exposed so that frontend consumers can use a small set of simple APIs to use sanitizers in a consistent way across the LLVM ecosystem, but that work is not yet ready today.
…rue, r=Amanieu

std-detect: improve detect macro docs

Specifically, document that the detect macros expand to `true` when the feature is statically enabled.

Now that we have a bunch of these macros, perhaps we should streamline further how they are documented?

r? ``@Amanieu``
…ror-handling, r=lolbinarycat

[rustdoc] Gracefully handle error in case we cannot run the compiler in doctests

Fixes bug reported in [this comment](rust-lang#102981 (comment)).

r? ``@lolbinarycat``
Minor fixes to StdNonZeroNumberProvider for gdb

While looking at the pretty-printers, I found a few minor oddities in StdNonZeroNumberProvider.

First, gdb.Type.fields() already returns a sequence, so there's no need to call list().

Second, it's more idiomatic for the (somewhat misnamed) to_string method to simply return the underlying gdb.Value.  This also lets gdb apply whatever formats were passed to `print`, as the new test shows.

Third, there's no need to use the field's name when looking up a field in a value, the gdb.Field itself can be used.
Add num_children method to some gdb pretty-printers

gdb doesn't have a way to know when an object hasn't yet been initialized, and in this case, if a pretty-printer returns an absurd number of children, this can result in apparent hangs in some modes. This came up specifically with DAP, see this bug report:

    https://sourceware.org/bugzilla/show_bug.cgi?id=33594

This patch (mostly) addresses this potential issue in the Rust pretty-printers, by adding 'num_children' methods.  In particular a method like this is added when the number of children is variable and also relatively easy to compute.  (I.e., I didn't attempt the btree printers.)

Supplying num_children is good for DAP regardless of the initialization problem, because DAP requires a count of child objects and this is more efficient than enumerating the children, which is gdb's fallback approach.
Fix broken qemu-cskyv2 link

The link had a stray character that generated an invalid link.
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs 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-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. rollup A PR which is a rollup labels Nov 6, 2025
@Zalathar
Copy link
Member Author

Zalathar commented Nov 6, 2025

Attempted rollup of everything except one iffy, but the included iffy failed merge.

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Nov 6, 2025

📌 Commit 7c58e15 has been approved by Zalathar

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 Nov 6, 2025
@bors
Copy link
Collaborator

bors commented Nov 6, 2025

⌛ Testing commit 7c58e15 with merge 642c19b...

@bors
Copy link
Collaborator

bors commented Nov 6, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing 642c19b to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Nov 6, 2025
@bors bors merged commit 642c19b into rust-lang:master Nov 6, 2025
12 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Nov 6, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#143037 Make named asm_labels lint not trigger on hexagon register … 8a0fff49f36fad642e3a6316012a93c1f53c4737 (link)
#147043 Add default sanitizers to TargetOptions 1dd854d6eabc7de1add7741eb48b9e5fb1477545 (link)
#147586 std-detect: improve detect macro docs 516cadc8d4c9e26654bddf6a47a4bccfa8a3580f (link)
#147912 [rustdoc] Gracefully handle error in case we cannot run the… 5c67f7be035ad08d7d0c5cbbc554025b1d327a55 (link)
#148540 Minor fixes to StdNonZeroNumberProvider for gdb cfcc5c2b4c6b0d91f0af9ad5d0cd364ff55a2cf5 (link)
#148541 Add num_children method to some gdb pretty-printers d4ec6e580a2487b7c6c8c75d4ffa7e96e8c37b4e (link)
#148549 Fix broken qemu-cskyv2 link fa7aa7ee2f21727d8fb1b43223b96165bac31400 (link)

previous master: 401ae55427

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

github-actions bot commented Nov 6, 2025

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 401ae55 (parent) -> 642c19b (this PR)

Test differences

Show 18 test diffs

Stage 0

  • tests::test_hexagon_register_span_patterns: [missing] -> pass (J1)

Stage 1

  • [run-make] tests/run-make/rustdoc-test-builder: [missing] -> pass (J1)
  • [ui] tests/ui/asm/hexagon-register-pairs.rs: [missing] -> pass (J1)
  • tests::test_hexagon_register_span_patterns: [missing] -> pass (J4)

Stage 2

  • [run-make] tests/run-make/rustdoc-test-builder: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc-test-builder: [missing] -> ignore (ignored if target does not support std) (J2)
  • [ui] tests/ui/asm/hexagon-register-pairs.rs: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/asm/hexagon-register-pairs.rs: [missing] -> pass (J5)

Additionally, 10 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 642c19bfc3a5c1de985bf5d0cc8207ac9d22708a --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-android: 1566.8s -> 1133.5s (-27.7%)
  2. aarch64-apple: 8475.3s -> 7306.7s (-13.8%)
  3. tidy: 211.3s -> 183.4s (-13.2%)
  4. pr-check-1: 1731.0s -> 1946.7s (+12.5%)
  5. x86_64-gnu-llvm-20-1: 3700.8s -> 3244.0s (-12.3%)
  6. i686-gnu-nopt-1: 8407.6s -> 7438.8s (-11.5%)
  7. x86_64-gnu-tools: 3351.3s -> 3709.3s (+10.7%)
  8. x86_64-gnu-aux: 6871.2s -> 6230.3s (-9.3%)
  9. x86_64-msvc-ext3: 6005.5s -> 6537.0s (+8.8%)
  10. dist-x86_64-solaris: 4942.9s -> 5368.5s (+8.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 (642c19b): 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.0% [0.0%, 0.0%] 1
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 3.5%)

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

Binary size

Results (secondary -0.0%)

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

Bootstrap: 474.482s -> 474.467s (-0.00%)
Artifact size: 390.74 MiB -> 390.76 MiB (0.01%)

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

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs 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-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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants