Skip to content

Conversation

@workflows-miri
Copy link

Update rustc to rust-lang/rust@4ba1cf9.

RalfJung and others added 24 commits September 3, 2025 09:14
Skip typeck for items w/o their own typeck context

Skip items which forward typeck to their ancestor.

Should remove some potential but unnecessary typeck query waits, hence might improve performance for the parallel frontend.

Thanks to `@ywxt` for a fix suggestion

Fixes rust-lang/rust#141951
std: optimize `dlsym!` macro and add a test for it

The `dlsym!` macro always ensures that the name string is nul-terminated, so there is no need to perform the check at runtime. Also, acquire loads are generally faster than a load and a barrier, so use them. This is only false in the case where the symbol is missing, but that shouldn't matter too much.
match clang's `va_arg` assembly on arm targets

tracking issue: rust-lang/rust#44930

For this example

```rust
#![feature(c_variadic)]

#[unsafe(no_mangle)]
unsafe extern "C" fn variadic(a: f64, mut args: ...) -> f64 {
    let b = args.arg::<f64>();
    let c = args.arg::<f64>();

    a + b + c
}
```

We currently generate (via llvm):

```asm
variadic:
    sub     sp, sp, #12
    stmib   sp, {r2, r3}
    vmov    d0, r0, r1
    add     r0, sp, #4
    vldr    d1, [sp, #4]
    add     r0, r0, #15
    bic     r0, r0, #7
    vadd.f64        d0, d0, d1
    add     r1, r0, #8
    str     r1, [sp]
    vldr    d1, [r0]
    vadd.f64        d0, d0, d1
    vmov    r0, r1, d0
    add     sp, sp, #12
    bx      lr
```

LLVM is not doing a good job. In fact, it's well-known that LLVM's implementation of `va_arg` is kind of bad, and we implement it ourselves (based on clang) for many targets already. For arm,  our own `emit_ptr_va_arg` saves 3 instructions.

Next, it turns out it's important for LLVM to explicitly start and end the lifetime of the `va_list`. In rust-lang/rust#146059 I already end the lifetime, but when looking at this again, I noticed that it is important to also start it, see https://godbolt.org/z/EGqvKTTsK: failing to explicitly start the lifetime uses an extra register.

So, the combination of `emit_ptr_va_arg` with starting/ending the lifetime makes rustc emit exactly the instructions that clang generates::

```asm
variadic:
    sub     sp, sp, #12
    stmib   sp, {r2, r3}
    vmov    d16, r0, r1
    vldr    d17, [sp, #4]
    vadd.f64        d16, d16, d17
    vldr    d17, [sp, #12]
    vadd.f64        d16, d16, d17
    vmov    r0, r1, d16
    add     sp, sp, #12
    bx      lr
```

The arguments to `emit_ptr_va_arg` are based on [the clang implementation](https://github.com/llvm/llvm-project/blob/03dc2a41f3d9a500e47b513de5c5008c06860d65/clang/lib/CodeGen/Targets/ARM.cpp#L798-L844).

r? ``@workingjubilee`` (I can re-roll if your queue is too full, but you do seem like the right person here)

try-job: armhf-gnu
thread parking: fix docs and examples

Fixes rust-lang/rust#145816

r? ```@joboet```
Cc ```@m-ou-se``` ```@Amanieu```
support integer literals in `${concat()}`

Tracking issue: rust-lang/rust#124225

Adds support for using integer literals as arguments to `${concat()}` macro expressions.
Integer formatting such as `1_000` is preserved by this.
check before test for hardware capabilites in bits 32~63 of usize

This commit tries to fix rust-lang/rust#146230.

`std::arch::is_aarch64_feature_detected` panics on aarch64 ILP32 targets.

After some digging, the real problem is

https://github.com/rust-lang/rust/blob/91edc3ebccc4daa46c20a93f4709862376da1fdd/library/std_detect/src/detect/os/linux/aarch64.rs#L210-L241

checks bits 32~63 of usize unconditionally on normal aarch64 LP64 target and aarch64 ILP32 target.

Here I propose to move these to a block guarded by `#[cfg(target_pointer_width="64")]`.

See rust-lang/rust#146230 for more detailed analysis.

r?  ```@Amanieu```
…r=Kobzol

tidy: make behavior of extra-checks more uniform
…illaumeGomez

Update `browser-ui-test` version to `0.22.2`

Mostly some internal improvements and new commands (like `store-count`).

r? ```@lolbinarycat```
…rycat

Improve suggestion in case a bare URL is surrounded by brackets

Fixes rust-lang/rust#146162.

With this change, output looks like this:

```
  |
1 | //! [https://github.com]
  |     ^^^^^^^^^^^^^^^^^^^^ help: use an automatic link instead: `<https://github.com>`
  |
  = note: bare URLs are not automatically turned into clickable links
  = note: `#[warn(rustdoc::bare_urls)]` on by default
```

cc ```@fmease```
r? ```@lolbinarycat```
Bump miow to 0.60.1

Updates the `miow` crate to 0.60.1, which removes the final use of `windows-sys` 0.48.0.
Implement `Socket::take_error` for Hermit

This PR fixes an unused-imports compilation error introduced in 845311a065a5638c516ed96c73b09862b176b329 and implements `Socket::take_error` for Hermit.

Hermit's `Socket::take_error` implementation works exactly like the one for Unix.

r? joboet
rwlock tests: fix miri macos test regression

rust-lang/rust#144648 broke the attributes that ignore the tests on Miri; this patch should fix that.
…meGomez

Change the default value of `gcc.download-ci-gcc` to `true`

It makes sense for the vast majority of uses (rust-lang/rustc-dev-guide#2587 (comment)).

r? ```@GuillaumeGomez```
fix cfg for poison test macro

Fixes test regression in rust-lang/rust#144648
Continuation of rust-lang/rust#146433

I think this is right? Not really sure how to test this myself to be honest.

r? ```@RalfJung```

I'll also leave the improvement to the test macro for a separate PR (described [here](rust-lang/rust#146433 (comment))) since I've never done something like that before. Though since this fixes all of the tests, it might not be necessary since anyone in the future will see the `cfg()` and not `cfg_attr()`?
…lolbinarycat

[rustdoc] Correctly handle literal search on paths

Fixes rust-lang/rust#146129.

cc ```@notriddle```
r? ```@lolbinarycat```
Fix `libgccjit` symlink when we build GCC locally

Unblocks rust-lang/rust#146414.

r? ```@GuillaumeGomez```
test: remove an outdated normalization for rustc versions

These "you are using $RUSTC_VERSION" help messages were removed in
rust-lang/rust#142943, but rust-lang/rust#142681 started before that and
merged later, so its normalization is vestigial.
Rollup of 15 pull requests

Successful merges:

 - rust-lang/rust#144549 (match clang's `va_arg` assembly on arm targets)
 - rust-lang/rust#145895 (thread parking: fix docs and examples)
 - rust-lang/rust#146308 (support integer literals in `${concat()}`)
 - rust-lang/rust#146323 (check before test for hardware capabilites in bits 32~63 of usize)
 - rust-lang/rust#146332 (tidy: make behavior of extra-checks more uniform)
 - rust-lang/rust#146374 (Update `browser-ui-test` version to `0.22.2`)
 - rust-lang/rust#146413 (Improve suggestion in case a bare URL is surrounded by brackets)
 - rust-lang/rust#146426 (Bump miow to 0.60.1)
 - rust-lang/rust#146432 (Implement `Socket::take_error` for Hermit)
 - rust-lang/rust#146433 (rwlock tests: fix miri macos test regression)
 - rust-lang/rust#146435 (Change the default value of `gcc.download-ci-gcc` to `true`)
 - rust-lang/rust#146439 (fix cfg for poison test macro)
 - rust-lang/rust#146448 ([rustdoc] Correctly handle literal search on paths)
 - rust-lang/rust#146449 (Fix `libgccjit` symlink when we build GCC locally)
 - rust-lang/rust#146455 (test: remove an outdated normalization for rustc versions)

r? `@ghost`
`@rustbot` modify labels: rollup
…xyUwU

consider item bounds for non-yet-defined opaque types

Based on rust-lang/rust#140405.

fixes rust-lang/trait-system-refactor-initiative#182
fixes rust-lang/trait-system-refactor-initiative#196
fixes rust-lang/trait-system-refactor-initiative#205

there's some jank here, see rust-lang/trait-system-refactor-initiative#229

## Design

If the self type is an inference variable which has been sub-unified with am opaque type, we need to incompletely guide inference to avoid breakage.

In this case, we
- look at the item bounds of all sub-unified opaque types, and
- blanket impls which do not constrain the self type

Even if there are applicable candidates, we always force their certainty to be `Maybe`, so they will always have to be reproven once we've constrained the inference variable.

This is a bit iffy, see the added tests.

r? `@BoxyUwU`
Constify Eq, Ord, PartialOrd

Adds `#[const_trait]` and impls for `Eq`, `Ord`, `PartialOrd`. Impl for some other traits (e.g., slices and arrays) are blocked mainly on const closures (rust-lang/rust#106003).
For TypeId Ord we need const pointer comparison (rust-lang/rust#53020)
Tracking issue rust-lang/rust#143800
…imulacrum

bootstrap: Build jemalloc for LoongArch with support for 16K pages

By default, jemalloc is configured with a 4K page size. If the host’s page size is larger than this, it will crash at runtime. This patch raises the page size to 16K.
This updates the rust-version file to 4ba1cf9ade4c8e2fa10676a50ee34594eb161837.
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: 4ba1cf9ade4c8e2fa10676a50ee34594eb161837
Filtered ref: 84b64d8
Upstream diff: rust-lang/rust@2a9bacf...4ba1cf9

This merge was created using https://github.com/rust-lang/josh-sync.
@rustbot
Copy link
Collaborator

rustbot commented Sep 13, 2025

Thank you for contributing to Miri!
Please remember to not force-push to the PR branch except when you need to rebase due to a conflict or when the reviewer asks you for it.

@rustbot rustbot added the S-waiting-on-review Status: Waiting for a review to complete label Sep 13, 2025
@oli-obk oli-obk added this pull request to the merge queue Sep 13, 2025
Merged via the queue into master with commit bf83e22 Sep 13, 2025
12 checks passed
@oli-obk oli-obk deleted the rustup-2025-09-13 branch September 13, 2025 07:34
@rustbot rustbot removed the S-waiting-on-review Status: Waiting for a review to complete label Sep 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants