Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

is57primenumber and others added 30 commits January 5, 2026 05:17
… duration under Win7

Fixes rust-lang#149935. See the added comment for more details.

Signed-off-by: Paul Mabileau <paul.mabileau@harfanglab.fr>
The links are correct, but text typoed `as_array_mut`.
This fixes stage1 builds when the proc-macro bridge api changed.
The rustc_proc_macro crate is identical to the proc_macro that would end
up in the sysroot of the rustc compiler rustc_proc_macro is linked into.
They break whenever the proc macro ABI changes due to it building a proc
macro against the bootstrap sysroot.
It is a singleton which doesn't actually need to be passed through over
the bridge.
And rename FreeFunctions struct to Methods.
Use explicit SSE2 intrinsics to avoid LLVM's broken AVX-512
auto-vectorization which generates ~31 kshiftrd instructions.

Performance
- AVX-512: 34-48x faster
- SSE2: 1.5-2x faster

Improves on earlier pr
…ulacrum

Add codegen test for removing trailing zeroes from `NonZero`

Closes rust-lang#138497
ptr_aligment_type: add more APIs

As per rust-lang#102070 (comment)

Tracking issue: rust-lang#102070

Mostly duplicating methods that previously worked with `usize`-represented alignments.

Naming follows a convention of `align: usize`, `alignment: Alignment`.
std: avoid tearing `dbg!` prints

Fixes rust-lang#136703.

This is an alternative to rust-lang#149859. Instead of formatting everything into a string, this PR makes multi-expression `dbg!` expand into multiple nested matches, with the final match containing a single `eprint!`. By using macro recursion and relying on hygiene, this allows naming every bound value in that `eprint!`.

CC @orlp

r? libs
…, r=Mark-Simulacrum

add CSE optimization tests for iterating over slice

This PR is regression test for issue rust-lang#119573.
This PR introduces a new regression test to verify a critical optimization known as Common Subexpression Elimination (CSE) is correctly applied during various slice iteration patterns.
…r=Mark-Simulacrum

Fix(lib/win/thread): Ensure `Sleep`'s usage passes over the requested duration under Win7

Fixes rust-lang#149935. See the added comment for more details.

This makes the concerned test now reproducibly pass, for us at least. Also, testing this separately revealed successful: see the issue.

@rustbot label C-bug I-flaky-test O-windows-7 T-libs A-time A-thread
…rochenkov,Kobzol

Various refactors to the proc_macro bridge

This reduces the amount of types, traits and other abstractions that are involved with the bridge, which should make it easier to understand and modify. This should also help a bit with getting rid of the type marking hack, which is complicating the code a fair bit.

Fixes: rust-lang#139810
…ark-Simulacrum

relnotes: fix 1.93's `as_mut_array` methods

The links are correct, but text typoed `as_array_mut`.
…erformance, r=folkertdev

Improve is_ascii performance on x86_64 with explicit SSE2 intrinsics

# Summary

Improves `slice::is_ascii` performance for SSE2 target roughly 1.5-2x on larger inputs.
AVX-512 keeps similiar performance characteristics.

This is building on the work already merged in rust-lang#151259.
In particular this PR improves the default SSE2 performance, I don't consider this a temporary fix anymore.
Thanks to @folkertdev for pointing me to consider `as_chunk` again.

# The implementation:
- Uses 64-byte chunks with 4x 16-byte SSE2 loads OR'd together
- Extracts the MSB mask with a single `pmovmskb` instruction
- Falls back to usize-at-a-time SWAR for inputs < 64 bytes

# Performance impact (vs before rust-lang#151259):
- AVX-512: 34-48x faster
- SSE2: 1.5-2x faster

  <details>
  <summary>Benchmark Results (click to expand)</summary>

  Benchmarked on AMD Ryzen 9 9950X (AVX-512 capable). Values show relative performance (1.00 = fastest).
  Tops out at 139GB/s for large inputs.

  ### early_non_ascii

  | Input Size | new_avx512 | new_sse2 | old_avx512 | old_sse2 |
  |------------|------------|----------|------------|----------|
  | 64 | 1.01 | **1.00** | 13.45 | 1.13 |
  | 1024 | 1.01 | **1.00** | 13.53 | 1.14 |
  | 65536 | 1.01 | **1.00** | 13.99 | 1.12 |
  | 1048576 | 1.02 | **1.00** | 13.29 | 1.12 |

  ### late_non_ascii

  | Input Size | new_avx512 | new_sse2 | old_avx512 | old_sse2 |
  |------------|------------|----------|------------|----------|
  | 64 | **1.00** | 1.01 | 13.37 | 1.13 |
  | 1024 | 1.10 | **1.00** | 42.42 | 1.95 |
  | 65536 | **1.00** | 1.06 | 42.22 | 1.73 |
  | 1048576 | **1.00** | 1.03 | 34.73 | 1.46 |

  ### pure_ascii

  | Input Size | new_avx512 | new_sse2 | old_avx512 | old_sse2 |
  |------------|------------|----------|------------|----------|
  | 4 | 1.03 | **1.00** | 1.75 | 1.32 |
  | 8 | **1.00** | 1.14 | 3.89 | 2.06 |
  | 16 | **1.00** | 1.04 | 1.13 | 1.62 |
  | 32 | 1.07 | 1.19 | 5.11 | **1.00** |
  | 64 | **1.00** | 1.13 | 13.32 | 1.57 |
  | 128 | **1.00** | 1.01 | 19.97 | 1.55 |
  | 256 | **1.00** | 1.02 | 27.77 | 1.61 |
  | 1024 | **1.00** | 1.02 | 41.34 | 1.84 |
  | 4096 | 1.02 | **1.00** | 45.61 | 1.98 |
  | 16384 | 1.01 | **1.00** | 48.67 | 2.04 |
  | 65536 | **1.00** | 1.03 | 43.86 | 1.77 |
  | 262144 | **1.00** | 1.06 | 41.44 | 1.79 |
  | 1048576 | 1.02 | **1.00** | 35.36 | 1.44 |

  </details>

Adds assembly test to verify:
- `kshiftrd`/`kshiftrq` are NOT generated
- `pmovmskb`/`vpor` ARE generated

## Reproduction / Test Projects

Standalone validation tools: https://github.com/bonega/is-ascii-fix-validation

- `bench/` - Criterion benchmarks for SSE2 vs AVX-512 comparison
- `fuzz/` - Compares old/new implementations with libfuzzer

Relates to: llvm/llvm-project#176906
…jubilee

x86 soft-float feature: mark it as forbidden rather than unstable

I am not sure why I made it "unstable" in rust-lang@f755f4c; I think at the time "forbidden" did not work for some reason.

Making it "forbidden" instead has no significant effect on `-Ctarget-feature` use, it just changes the warning. It *does* have the effect that one cannot query this using `cfg(target_feature)` on nightly any more, but that seems fine to me. It only ever worked as an accidental side-effect of f755f4c anyway.

r? @workingjubilee
Rename `DepKindStruct` to `DepKindVTable`

This type is used by dependency-tracking code in the query system, for looking up function pointers and other metadata associated with a particular `DepKind`.

Calling it “struct” is not particularly helpful, whereas calling it a “vtable” at least gives some basic intuition for what it is and how it is used.

Some associated identifiers have also drifted a bit over time, and this PR adjusts those as well.

There should be no change to compiler behaviour.

r? nnethercote (or compiler)
… r=joboet

Fix 'the the' typo in library/core/src/array/iter.rs

This PR fixes a small grammatical error in a safety comment within `library/core/src/array/iter.rs` where the word "the" was duplicated.

No functional changes.
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Jan 25, 2026
@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 S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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-release Relevant to the release subteam, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. labels Jan 25, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 25, 2026

📌 Commit 4c2420d 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 Jan 25, 2026
@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Jan 25, 2026
…uwer

Rollup of 11 pull requests

Successful merges:

 - #145393 (Add codegen test for removing trailing zeroes from `NonZero`)
 - #148764 (ptr_aligment_type: add more APIs)
 - #149869 (std: avoid tearing `dbg!` prints)
 - #150065 (add CSE optimization tests for iterating over slice)
 - #150842 (Fix(lib/win/thread): Ensure `Sleep`'s usage passes over the requested duration under Win7)
 - #151505 (Various refactors to the proc_macro bridge)
 - #151560 (relnotes: fix 1.93's `as_mut_array` methods)
 - #151611 (Improve is_ascii performance on x86_64 with explicit SSE2 intrinsics)
 - #151317 (x86 soft-float feature: mark it as forbidden rather than unstable)
 - #151577 (Rename `DepKindStruct` to `DepKindVTable`)
 - #151620 (Fix 'the the' typo in library/core/src/array/iter.rs)
@rust-log-analyzer
Copy link
Collaborator

The job x86_64-gnu-llvm-21-3 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
REPOSITORY                                   TAG       IMAGE ID       CREATED      SIZE
ghcr.io/dependabot/dependabot-updater-core   latest    354d02aa29ac   5 days ago   783MB
=> Removing docker images...
Deleted Images:
untagged: ghcr.io/dependabot/dependabot-updater-core:latest
untagged: ghcr.io/dependabot/dependabot-updater-core@sha256:596da3f22bcbdff2c96fd7126001278022c834c1621c5efa2ad1a7794590636c
deleted: sha256:354d02aa29acf525570c732b6e006ecf138de6d63ca525d552eb4b24880ddc6c
deleted: sha256:8b7af0e426bc2cbeeacfd96b8354d3b80016991520977197e62090e47abaede8
deleted: sha256:cadf11ef1de7fdd5eab563757942353684047f09b212dc99d6ed48e8acf34d62
deleted: sha256:569b0caf9d5285db44ccd2629a3470139eea755be423a33a54d8a24cb3926bfa
deleted: sha256:f9dc5feb048d8f9fd43137e3998f59e9acfbd76c47a4e14984d109654119e282
---
test [ui] tests/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs#fat2 ... ok
test [ui] tests/ui/extern/issue-64655-extern-rust-must-allow-unwind.rs#fat3 ... ok
test [ui] tests/ui/extern/issue-80074.rs ... ok
test [ui] tests/ui/extern/issue-95829.rs ... ok
test [ui] tests/ui/extern/lgamma-linkage.rs ... ok
test [ui] tests/ui/extern/no-mangle-associated-fn.rs ... ok
test [ui] tests/ui/extern/not-in-block.rs ... ok
test [ui] tests/ui/extern/unsized-extern-derefmove.rs ... ok
test [ui] tests/ui/extern/windows-tcb-trash-13259.rs ... ok
test [ui] tests/ui/feature-gates/allow-features-empty.rs ... ok
---
test [ui] tests/ui/imports/ambiguous-5.rs ... ok
test [ui] tests/ui/imports/ambiguous-4.rs ... ok
test [ui] tests/ui/imports/ambiguous-7.rs ... ok
test [ui] tests/ui/imports/ambiguous-9.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-glob-vs-multiouter.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-globvsglob.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-no-implicit-prelude.rs ... ok
test [ui] tests/ui/imports/ambiguous-glob-vs-expanded-extern.rs ... ok
test [ui] tests/ui/imports/ambiguous-8.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-non-prelude-core-glob.rs ... ok
test [ui] tests/ui/imports/ambiguous-panic-non-prelude-std-glob.rs ... ok
---
test [assembly] tests/assembly-llvm/x86_64-windows-i128-abi.rs#softfloat ... ok

failures:

---- [assembly] tests/assembly-llvm/slice-is-ascii.rs#X86_64 stdout ----
------FileCheck stdout------------------------------

------FileCheck stderr------------------------------
/checkout/tests/assembly-llvm/slice-is-ascii.rs:28:12: error: X86_64: expected string not found in input
// X86_64: {{vpmovmskb|pmovmskb}}
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s:3:30: note: scanning from here
 .section .text.test_is_ascii,"ax",@progbits
                             ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s:3:35: note: possible intended match here
 .section .text.test_is_ascii,"ax",@progbits
                                  ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s
Check file: /checkout/tests/assembly-llvm/slice-is-ascii.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1:  .intel_syntax noprefix 
            2:  .file "slice_is_ascii.bbb27c42060df02e-cgu.0" 
            3:  .section .text.test_is_ascii,"ax",@progbits 
check:28'0                                  X~~~~~~~~~~~~~~~ error: no match found
check:28'1                                       ?           possible intended match
            4:  .globl test_is_ascii 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~
            5:  .p2align 4 
check:28'0     ~~~~~~~~~~~~
            6:  .type test_is_ascii,@function 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            7: test_is_ascii: 
check:28'0     ~~~~~~~~~~~~~~~
            8:  .cfi_startproc 
check:28'0     ~~~~~~~~~~~~~~~~
            9:  cmp rsi, 64 
check:28'0     ~~~~~~~~~~~~~
           10:  jae .LBB0_32 
check:28'0     ~~~~~~~~~~~~~~
           11:  mov rcx, rsi 
check:28'0     ~~~~~~~~~~~~~~
           12:  and rcx, 56 
check:28'0     ~~~~~~~~~~~~~
           13:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           14:  movabs rax, -9187201950435737472 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           15:  test qword ptr [rdi], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
           16:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           17:  cmp ecx, 8 
check:28'0     ~~~~~~~~~~~~
           18:  jne .LBB0_19 
check:28'0     ~~~~~~~~~~~~~~
           19: .LBB0_2: 
check:28'0     ~~~~~~~~~
           20:  and esi, 7 
check:28'0     ~~~~~~~~~~~~
           21:  mov al, 1 
check:28'0     ~~~~~~~~~~~
           22:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           23:  cmp byte ptr [rdi + rcx], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           24:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           25:  cmp esi, 1 
check:28'0     ~~~~~~~~~~~~
           26:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           27:  cmp byte ptr [rdi + rcx + 1], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           28:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           29:  cmp esi, 2 
check:28'0     ~~~~~~~~~~~~
           30:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           31:  cmp byte ptr [rdi + rcx + 2], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           32:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           33:  cmp esi, 3 
check:28'0     ~~~~~~~~~~~~
           34:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           35:  cmp byte ptr [rdi + rcx + 3], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           36:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           37:  cmp esi, 4 
check:28'0     ~~~~~~~~~~~~
           38:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           39:  cmp byte ptr [rdi + rcx + 4], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           40:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           41:  cmp esi, 5 
check:28'0     ~~~~~~~~~~~~
           42:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           43:  cmp byte ptr [rdi + rcx + 5], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           44:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           45:  cmp esi, 6 
check:28'0     ~~~~~~~~~~~~
           46:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           47:  cmp byte ptr [rdi + rcx + 6], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           48:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           49:  cmp esi, 7 
check:28'0     ~~~~~~~~~~~~
           50:  sete al 
check:28'0     ~~~~~~~~~
           51:  neg al 
check:28'0     ~~~~~~~~
           52:  and al, 1 
check:28'0     ~~~~~~~~~~~
           53:  ret 
check:28'0     ~~~~~
           54: .LBB0_32: 
check:28'0     ~~~~~~~~~~
           55:  jmp qword ptr [rip + _RNvNtNtCs2Zn6FDivMd8_4core5slice5ascii13is_ascii_sse2@GOTPCREL] 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: .LBB0_19: 
check:28'0     ~~~~~~~~~~
           57:  test qword ptr [rdi + 8], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           58:  je .LBB0_20 
check:28'0     ~~~~~~~~~~~~~
           59: .LBB0_30: 
check:28'0     ~~~~~~~~~~
           60:  xor eax, eax 
check:28'0     ~~~~~~~~~~~~~~
           61: .LBB0_31: 
check:28'0     ~~~~~~~~~~
           62:  and al, 1 
check:28'0     ~~~~~~~~~~~
           63:  ret 
check:28'0     ~~~~~
           64: .LBB0_20: 
check:28'0     ~~~~~~~~~~
           65:  cmp ecx, 16 
check:28'0     ~~~~~~~~~~~~~
           66:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           67:  test qword ptr [rdi + 16], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           69:  cmp ecx, 24 
check:28'0     ~~~~~~~~~~~~~
           70:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           71:  test qword ptr [rdi + 24], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           73:  cmp ecx, 32 
check:28'0     ~~~~~~~~~~~~~
           74:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           75:  test qword ptr [rdi + 32], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           76:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           77:  cmp ecx, 40 
check:28'0     ~~~~~~~~~~~~~
           78:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           79:  test qword ptr [rdi + 40], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           81:  cmp ecx, 48 
check:28'0     ~~~~~~~~~~~~~
           82:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           83:  and rax, qword ptr [rdi + 48] 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           84:  mov rdx, rcx 
check:28'0     ~~~~~~~~~~~~~~
           85:  xor rdx, 56 
check:28'0     ~~~~~~~~~~~~~
           86:  or rdx, rax 
check:28'0     ~~~~~~~~~~~~~
           87:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           88:  jmp .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           89: .Lfunc_end0: 
check:28'0     ~~~~~~~~~~~~~
           90:  .size test_is_ascii, .Lfunc_end0-test_is_ascii 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           91:  .cfi_endproc 
check:28'0     ~~~~~~~~~~~~~~
           92:  
check:28'0     ~
           93:  .ident "rustc version 1.95.0-nightly (69acb8539 2026-01-25)" 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  .section ".note.GNU-stack","",@progbits 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>

------------------------------------------

error in revision `X86_64`: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-21/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s" "/checkout/tests/assembly-llvm/slice-is-ascii.rs" "--check-prefix=CHECK" "--check-prefix" "X86_64" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/assembly-llvm/slice-is-ascii.rs:28:12: error: X86_64: expected string not found in input
// X86_64: {{vpmovmskb|pmovmskb}}
           ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s:3:30: note: scanning from here
 .section .text.test_is_ascii,"ax",@progbits
                             ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s:3:35: note: possible intended match here
 .section .text.test_is_ascii,"ax",@progbits
                                  ^

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is-ascii.X86_64/slice-is-ascii.s
Check file: /checkout/tests/assembly-llvm/slice-is-ascii.rs

-dump-input=help explains the following input dump.

Input was:
<<<<<<
            1:  .intel_syntax noprefix 
            2:  .file "slice_is_ascii.bbb27c42060df02e-cgu.0" 
            3:  .section .text.test_is_ascii,"ax",@progbits 
check:28'0                                  X~~~~~~~~~~~~~~~ error: no match found
check:28'1                                       ?           possible intended match
            4:  .globl test_is_ascii 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~
            5:  .p2align 4 
check:28'0     ~~~~~~~~~~~~
            6:  .type test_is_ascii,@function 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            7: test_is_ascii: 
check:28'0     ~~~~~~~~~~~~~~~
            8:  .cfi_startproc 
check:28'0     ~~~~~~~~~~~~~~~~
            9:  cmp rsi, 64 
check:28'0     ~~~~~~~~~~~~~
           10:  jae .LBB0_32 
check:28'0     ~~~~~~~~~~~~~~
           11:  mov rcx, rsi 
check:28'0     ~~~~~~~~~~~~~~
           12:  and rcx, 56 
check:28'0     ~~~~~~~~~~~~~
           13:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           14:  movabs rax, -9187201950435737472 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           15:  test qword ptr [rdi], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~
           16:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           17:  cmp ecx, 8 
check:28'0     ~~~~~~~~~~~~
           18:  jne .LBB0_19 
check:28'0     ~~~~~~~~~~~~~~
           19: .LBB0_2: 
check:28'0     ~~~~~~~~~
           20:  and esi, 7 
check:28'0     ~~~~~~~~~~~~
           21:  mov al, 1 
check:28'0     ~~~~~~~~~~~
           22:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           23:  cmp byte ptr [rdi + rcx], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           24:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           25:  cmp esi, 1 
check:28'0     ~~~~~~~~~~~~
           26:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           27:  cmp byte ptr [rdi + rcx + 1], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           28:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           29:  cmp esi, 2 
check:28'0     ~~~~~~~~~~~~
           30:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           31:  cmp byte ptr [rdi + rcx + 2], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           32:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           33:  cmp esi, 3 
check:28'0     ~~~~~~~~~~~~
           34:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           35:  cmp byte ptr [rdi + rcx + 3], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           36:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           37:  cmp esi, 4 
check:28'0     ~~~~~~~~~~~~
           38:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           39:  cmp byte ptr [rdi + rcx + 4], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           40:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           41:  cmp esi, 5 
check:28'0     ~~~~~~~~~~~~
           42:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           43:  cmp byte ptr [rdi + rcx + 5], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           44:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           45:  cmp esi, 6 
check:28'0     ~~~~~~~~~~~~
           46:  je .LBB0_31 
check:28'0     ~~~~~~~~~~~~~
           47:  cmp byte ptr [rdi + rcx + 6], 0 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           48:  js .LBB0_30 
check:28'0     ~~~~~~~~~~~~~
           49:  cmp esi, 7 
check:28'0     ~~~~~~~~~~~~
           50:  sete al 
check:28'0     ~~~~~~~~~
           51:  neg al 
check:28'0     ~~~~~~~~
           52:  and al, 1 
check:28'0     ~~~~~~~~~~~
           53:  ret 
check:28'0     ~~~~~
           54: .LBB0_32: 
check:28'0     ~~~~~~~~~~
           55:  jmp qword ptr [rip + _RNvNtNtCs2Zn6FDivMd8_4core5slice5ascii13is_ascii_sse2@GOTPCREL] 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56: .LBB0_19: 
check:28'0     ~~~~~~~~~~
           57:  test qword ptr [rdi + 8], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           58:  je .LBB0_20 
check:28'0     ~~~~~~~~~~~~~
           59: .LBB0_30: 
check:28'0     ~~~~~~~~~~
           60:  xor eax, eax 
check:28'0     ~~~~~~~~~~~~~~
           61: .LBB0_31: 
check:28'0     ~~~~~~~~~~
           62:  and al, 1 
check:28'0     ~~~~~~~~~~~
           63:  ret 
check:28'0     ~~~~~
           64: .LBB0_20: 
check:28'0     ~~~~~~~~~~
           65:  cmp ecx, 16 
check:28'0     ~~~~~~~~~~~~~
           66:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           67:  test qword ptr [rdi + 16], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           69:  cmp ecx, 24 
check:28'0     ~~~~~~~~~~~~~
           70:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           71:  test qword ptr [rdi + 24], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           73:  cmp ecx, 32 
check:28'0     ~~~~~~~~~~~~~
           74:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           75:  test qword ptr [rdi + 32], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           76:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           77:  cmp ecx, 40 
check:28'0     ~~~~~~~~~~~~~
           78:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           79:  test qword ptr [rdi + 40], rax 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80:  jne .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           81:  cmp ecx, 48 
check:28'0     ~~~~~~~~~~~~~
           82:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           83:  and rax, qword ptr [rdi + 48] 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           84:  mov rdx, rcx 
check:28'0     ~~~~~~~~~~~~~~
           85:  xor rdx, 56 
check:28'0     ~~~~~~~~~~~~~
           86:  or rdx, rax 
check:28'0     ~~~~~~~~~~~~~
           87:  je .LBB0_2 
check:28'0     ~~~~~~~~~~~~
           88:  jmp .LBB0_30 
check:28'0     ~~~~~~~~~~~~~~
           89: .Lfunc_end0: 
check:28'0     ~~~~~~~~~~~~~
           90:  .size test_is_ascii, .Lfunc_end0-test_is_ascii 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           91:  .cfi_endproc 
check:28'0     ~~~~~~~~~~~~~~
           92:  
check:28'0     ~
           93:  .ident "rustc version 1.95.0-nightly (69acb8539 2026-01-25)" 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  .section ".note.GNU-stack","",@progbits 
check:28'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>>>
------------------------------------------

---- [assembly] tests/assembly-llvm/slice-is-ascii.rs#X86_64 stdout end ----

failures:
    [assembly] tests/assembly-llvm/slice-is-ascii.rs#X86_64

test result: FAILED. 569 passed; 1 failed; 45 ignored; 0 measured; 0 filtered out; finished in 19.04s

@rust-bors rust-bors bot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 25, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 25, 2026

💔 Test for 69acb85 failed: CI. Failed job:

@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jan 25, 2026
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 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-release Relevant to the release subteam, which will review and decide on the PR/issue. T-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.