Skip to content

Conversation

@Zalathar
Copy link
Member

@Zalathar Zalathar commented Dec 2, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

tinnamchoi and others added 25 commits August 20, 2025 03:39
Also rationalise the settings, and copy in the thumb base defaults,
rather than just import them, because these aren't M-profile
microcontrollers and may not want to always have the same settings.
The binary crate is a tiny stub; all of the logic and tests should be in the
library crate.

Disabling unit tests for the binary crate makes `x test compiletest` less
noisy.
This commit also renames the confusing `NotADirective` outcome, and fuses it
with `External` into a single `NotHandledHere` outcome.
Rust no longer requires MSYS2 tools like make.
I've been procrastinating long enough.
…nieu

[std][BTree] Fix behavior of `::append` to match documentation, `::insert`, and `::extend`

Resolves rust-lang#145614
…metal, r=davidtwco

Fix armv4t- and armv5te- bare metal targets

These two targets currently force on the LLVM feature `+atomics-32`. LLVM doesn't appear to actually be able to emit 32-bit load/store atomics for these targets despite this feature, and emits calls to a shim function called `__sync_lock_test_and_set_4`, which nothing in the Rust standard library supplies.

See [#t-compiler/arm > __sync_lock_test_and_set_4 on Armv5TE](https://rust-lang.zulipchat.com/#narrow/channel/242906-t-compiler.2Farm/topic/__sync_lock_test_and_set_4.20on.20Armv5TE/with/553724827) for more details.

Experimenting with clang and gcc (as logged in that zulip thread) shows that C code cannot do atomic load/stores on that architecture either (at least, not without a library call inserted).

So, the safest thing to do is probably turn off `+atomics-32` for these two Tier 3 targets.

I asked `@Lokathor` and he said he didn't even use atomics on the `armv4t-none-eabi`/`thumbv4t-none-eabi` target he maintains.

I was unable to reach `@QuinnPainter` for comment for `armv5te-none-eabi`/`thumbv5te-none-eabi`.

The second commit renames the base target spec `spec::base::thumb` to `spec::base::arm_none` and changes `armv4t-none-eabi`/`thumbv4t-none-eabi` and `armv5te-none-eabi`/`thumbv5te-none-eabi` to use it. This harmonises the frame-pointer and linker options across the bare-metal Arm EABI and EABIHF targets.

You could make an argument for harmonising `armv7a-none-*`, `armv7r-none*` and `armv8r-none-*` as well, but that can be another PR.
…eyouxu

compiletest: Prepare ignore/only conditions once in advance, without a macro

Compiletest has historically handled `ignore-*` and `only-*` directives in an extremely confusing way that makes the code hard to understand and hard to modify.

This PR therefore takes an important step away from that older design by instead evaluating a set of named boolean "conditions" in advance, and then using those conditions to help determine whether a particular directive should cause its test to be ignored or not.

As usual, there's more cleanup that I want to do here, but I've left most of it for future work to help keep this PR manageable.

r? jieyouxu
…s, r=clubby789

Mark windows-gnu* as lacking build with assertions

Knowing that `x86_64-pc-windows-gnu` has no builds with assertions, I have just copied it as `x86_64-pc-windows-gnullvm` and called a day. Obviously it should have been `false`, sorry for that.
While at it, also fix `x86_64-pc-windows-gnu`.
Prefer helper functions to identify MinGW targets
Stop adding MSYS2 to PATH

Rust no longer requires MSYS2 provided tools like make.
…r=jieyouxu

debuginfo/macro-stepping test: extend comments

Those `#locN` markers look like they are debuginfo compiletest magic (since `#break` is debuginfo compiletest magic). However, they are actually just magic strings used by the `check` commands in the test itself. This threw me off when I looked at the test (prompted by a CI failure), so let's leave a comment for the next poor soul that ends up lost in this test.

Also, for some reason the lldb instructions do not check for `#loc6`, unlike the gdb instructions. I do not know of an lldb version that actually makes the test pass (do we even run it with lldb at all on CI?), so I won't try to add a check for loc6, but let's at least add a comment to increase the chance that someone more knowledgeable about lldb and our test suite notices this in the future.
…=Kivooeo

Add myself (mati865) to the review rotation

I've been procrastinating long enough.
@rustbot rustbot added A-CI Area: Our Github Actions CI A-compiletest Area: The compiletest test runner A-meta Area: Issues & PRs about the rust-lang/rust repository itself 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. labels Dec 2, 2025
@rustbot rustbot added 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. 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. rollup A PR which is a rollup labels Dec 2, 2025
@Zalathar
Copy link
Member Author

Zalathar commented Dec 2, 2025

Rollup of everything.

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Dec 2, 2025

📌 Commit e168509 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 Dec 2, 2025
@Zalathar
Copy link
Member Author

Zalathar commented Dec 2, 2025

@bors try jobs=x86_64-msvc-1,i686-msvc-1,x86_64-mingw-1,test-various,armhf-gnu,aarch64-apple,dist-various-1

@rust-bors

This comment has been minimized.

rust-bors bot added a commit that referenced this pull request Dec 2, 2025
Rollup of 8 pull requests

try-job: x86_64-msvc-1
try-job: i686-msvc-1
try-job: x86_64-mingw-1
try-job: test-various
try-job: armhf-gnu
try-job: aarch64-apple
try-job: dist-various-1
@bors
Copy link
Collaborator

bors commented Dec 2, 2025

⌛ Testing commit e168509 with merge 63b1db0...

@rust-bors
Copy link

rust-bors bot commented Dec 2, 2025

☀️ Try build successful (CI)
Build commit: 36f3083 (36f3083ef76b17c5da86f944bd7145077bf649f2, parent: 4ad239f4156aa4e7df5ac9eb90ff0ab3d0089d1c)

@bors
Copy link
Collaborator

bors commented Dec 2, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing 63b1db0 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 2, 2025
@bors bors merged commit 63b1db0 into rust-lang:main Dec 2, 2025
13 checks passed
@rustbot rustbot added this to the 1.93.0 milestone Dec 2, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#145628 [std][BTree] Fix behavior of ::append to match documentat… c5953f5c2094b6299217a2b42a17a53f23a07c90 (link)
#149241 Fix armv4t- and armv5te- bare metal targets 97448b003133c8309aba1efc7ede7de8ea7e7ede (link)
#149470 compiletest: Prepare ignore/only conditions once in advance… 2ed769fa77f1eb70603436d4c10e2a8a22f8e9d0 (link)
#149507 Mark windows-gnu* as lacking build with assertions 55652fdd4ac00db892d16227de0ef09eb31cc021 (link)
#149508 Prefer helper functions to identify MinGW targets eb74cb4b908f94b4651d370197c6b148fed23ba7 (link)
#149516 Stop adding MSYS2 to PATH c8f126abf38b9e16e534d332d256f2755755c550 (link)
#149525 debuginfo/macro-stepping test: extend comments f74c68b6b36a0b6392666abddb24ec3d510381f2 (link)
#149526 Add myself (mati865) to the review rotation 0fbc81a632130698f1b8beca0b4d0edd155cfb17 (link)

previous master: 4ad239f415

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 Dec 2, 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 4ad239f (parent) -> 63b1db0 (this PR)

Test differences

Show 1507 test diffs

Stage 0

  • directives::tests::external_ignores: [missing] -> pass (J2)

Stage 1

  • collections::btree::map::tests::test_id_based_append: [missing] -> pass (J1)
  • collections::btree::map::tests::test_id_based_insert: [missing] -> pass (J1)

Stage 2

  • collections::btree::map::tests::test_id_based_append: [missing] -> pass (J0)
  • collections::btree::map::tests::test_id_based_insert: [missing] -> pass (J0)

Additionally, 1502 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 63b1db05801271e400954e41b8600a3cf1482363 --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-apple-various: 4508.3s -> 3239.7s (-28.1%)
  2. dist-x86_64-apple: 8324.3s -> 6453.8s (-22.5%)
  3. pr-check-1: 1680.3s -> 1975.8s (+17.6%)
  4. x86_64-rust-for-linux: 2672.5s -> 3130.8s (+17.1%)
  5. i686-gnu-2: 5198.3s -> 6031.9s (+16.0%)
  6. dist-aarch64-apple: 8039.9s -> 6777.3s (-15.7%)
  7. aarch64-apple: 9381.9s -> 8114.4s (-13.5%)
  8. x86_64-gnu-tools: 3093.9s -> 3490.1s (+12.8%)
  9. x86_64-gnu-llvm-20-1: 3192.6s -> 3578.7s (+12.1%)
  10. aarch64-gnu-llvm-20-1: 3499.3s -> 3878.5s (+10.8%)
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.

@Zalathar Zalathar deleted the rollup-15y580s branch December 2, 2025 08:24
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (63b1db0): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

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

Max RSS (memory usage)

Results (secondary -2.2%)

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

Cycles

Results (primary -3.4%)

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

Binary size

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

Bootstrap: 469.27s -> 468.853s (-0.09%)
Artifact size: 386.74 MiB -> 386.75 MiB (0.00%)

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

Labels

A-CI Area: Our Github Actions CI A-compiletest Area: The compiletest test runner A-meta Area: Issues & PRs about the rust-lang/rust repository itself 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. 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants