rust-lang / rust-lang/rust

LLVM 23 breaks tests/assembly-llvm/slice-is_ascii.rs

Open
#154,141 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-LLVM needs-triage
Dominant language
Rust
Stars
119k
Forks
16.1k
PR merge metrics
PR metrics pending

Description

It looks like llvm/llvm-project@21f439f13250bd9b7c19c8dd838177a04bf091ef broke this test by changing some loop optimizations:

/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/tests/assembly-llvm/slice-is_ascii.rs:18:16: error: CHECK-NOT: excluded string found in input
--
// CHECK-NOT: test
^
/var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is_ascii.LIN/slice-is_ascii.s:9:2: note: found here
test rsi, rsi
^~~~
 
Input file: /var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/build/x86_64-unknown-linux-gnu/test/assembly-llvm/slice-is_ascii.LIN/slice-is_ascii.s
Check file: /var/lib/buildkite-agent/builds/rust-llvm-integrate/llvm-project/rust-llvm-integrate-prototype/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.is_ascii_simple_demo,"ax",@progbits
        4:  .globl is_ascii_simple_demo
        5:  .prefalign 16
        6:  .type is_ascii_simple_demo,@function
        7: is_ascii_simple_demo:
        8:  .cfi_startproc
        9:  test rsi, rsi
not:18      !~~~           error: no match expected
       10:  je .LBB0_1
       11:  dec rsi
       12:  .p2align 4
       13: .LBB0_4:
       14:  mov rax, rsi
       15:  sub rsi, 1
       16:  setb cl
       17:  cmp byte ptr [rdi + rax], 0
       18:  setns al
       19:  js .LBB0_2
       20:  test cl, cl
       21:  je .LBB0_4
       22: .LBB0_2:
       23:  ret
       24: .LBB0_1:
       25:  mov al, 1
       26:  ret
       27: .Lfunc_end0:
       28:  .size is_ascii_simple_demo, .Lfunc_end0-is_ascii_simple_demo
       29:  .cfi_endproc
       30:
       31:  .ident "rustc version 1.96.0-dev"
       32:  .section ".note.GNU-stack","",@progbits
>>>>>>

Full failure visible on our buildkite.

It looks like we get some more branching than before the breaking change. Filing this so we can track it and disable the test in our CI until there's a fix.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with tests/assembly-llvm/slice-is_ascii.rs and the linked LLVM change, then inspect the Buildkite failure and its CHECK-NOT expectations. Determine whether the test should be disabled while LLVM is broken; done means the LLVM integration CI no longer fails on this test, with the existing assembly behavior documented or tracked.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.