Skip to content

Conversation

@jhpratt
Copy link
Member

@jhpratt jhpratt commented Nov 26, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Fulgen301 and others added 22 commits November 3, 2025 19:54
instead of legacy mangling to avoid linker errors
Co-authored-by: teor <teor@riseup.net>
ARM has withdrawn FEAT_TME

https://developer.arm.com/documentation/102105/lb-05/

LLVM has dropped support for it recently as a result.
This works better with non-LLVM codegen backends.
Offload intrinsic

This PR implements the minimal mechanisms required to run a small subset of arbitrary offload kernels without relying on hardcoded names or metadata.

- `offload(kernel, (..args))`: an intrinsic that generates the necessary host-side LLVM-IR code.
- `rustc_offload_kernel`: a builtin attribute that marks device kernels to be handled appropriately.

Example usage (pseudocode):
```rust
fn kernel(x: *mut [f64; 128]) {
    core::intrinsics::offload(kernel_1, (x,))
}

#[cfg(target_os = "linux")]
extern "C" {
    pub fn kernel_1(array_b: *mut [f64; 128]);
}

#[cfg(not(target_os = "linux"))]
#[rustc_offload_kernel]
extern "gpu-kernel" fn kernel_1(x: *mut [f64; 128]) {
    unsafe { (*x)[0] = 21.0 };
}
```
Fix some issues around `rustc_public`

cc rust-lang#148266 .
follow-up of rust-lang#148341 .

This fixes the issues that can be reproduced by `x test compiler/rustc_public`:

```
error: function `run` is never used
   --> compiler/rustc_public/src/compiler_interface.rs:838:15
    |
838 | pub(crate) fn run<'tcx, F, T>(interface: &CompilerInterface<'tcx>, f: F) -> Result<T, Error>
    |               ^^^
    |
    = note: `-D dead-code` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(dead_code)]`

error: unreachable `pub` item
  --> compiler/rustc_public/src/unstable/mod.rs:25:1
   |
25 | pub trait InternalCx<'tcx>: Copy + Clone {
   | ---^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   | |
   | help: consider restricting its visibility: `pub(crate)`
   |
   = help: or consider exporting it for use by other crates
   = note: `-D unreachable-pub` implied by `-D warnings`
   = help: to override `-D warnings` add `#[allow(unreachable_pub)]`

error: unreachable `pub` item
  --> compiler/rustc_public/src/unstable/mod.rs:62:1
   |
62 | pub trait Stable<'tcx>: PointeeSized {
   | ---^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   | |
   | help: consider restricting its visibility: `pub(crate)`
   |
   = help: or consider exporting it for use by other crates

error: unreachable `pub` item
  --> compiler/rustc_public/src/unstable/mod.rs:81:1
   |
81 | pub trait RustcInternal {
   | ---^^^^^^^^^^^^^^^^^^^^
   | |
   | help: consider restricting its visibility: `pub(crate)`
   |
   = help: or consider exporting it for use by other crates

error: could not compile `rustc_public` (lib) due to 4 previous errors
```
…jackh726

Mangle symbols with a mangled name close to PDB limits with v0 instead of legacy mangling to avoid linker errors

This is rust-lang/compiler-team#934

As PDB debuginfo has a 64KiB limit for symbol names, we use v0 mangling instead of legacy mangling for symbol names >= 65000 bytes if PDB is used. The cutoff number was chosen to leave some room for potential errors in the empirical measurement of the limit of 65521 bytes, as well as potential symbol prefixes and suffixes that are applied later, plus some generous extra space.

Tracking issue: rust-lang#148429
…rcoieni

Build gnullvm toolchains on Windows natively

Fixes rust-lang#144656
rustc_target: aarch64: Remove deprecated FEAT_TME

fixes rust-lang#149308

ARM has withdrawn FEAT_TME

https://developer.arm.com/documentation/102105/lb-05/

LLVM has dropped support for generating it
llvm/llvm-project#167687

`@rustbot` label llvm-main

r? `@durin42`
…r=RalfJung

Use rust rather than LLVM target features in the target spec

This works better with non-LLVM codegen backends.
…, r=fmease

Deny const auto traits

close rust-lang#149285

The AST validation now detects and rejects const auto traits. Additionally, I updated an existing test that was using `const unsafe auto trait`.

r? fmease
…ywiser

Mark riscv64gc-unknown-linux-musl as tier 2 target

According to https://github.com/rust-lang/rust/blob/cdb4236e654a49c3035269588fe22dfafc0cfa3a/src/doc/rustc/src/platform-support/riscv64gc-unknown-linux-musl.md?plain=1#L3 it's tier 2 target.

In case you are wondering how I noticed it:
Dockerfiles at Wild linker repo started to fail building recently due to missing `riscv64gc-unknown-linux-musl` std. I had hoped the problem would go away by itself, but it did not (it never does...).
rust-lang#148983 happened recently, so I checked https://rust-lang.github.io/rustup-components-history/riscv64gc-unknown-linux-musl.html and yeah, the date matches.
Given this condition: https://github.com/rust-lang/rust/blob/cdb4236e654a49c3035269588fe22dfafc0cfa3a/src/tools/build-manifest/build.rs#L35 I'm certain PR will fix the problem.
Add `Copy` to some AST enums.

It's a minor annoyance they aren't `Copy` and there doesn't seem to be any reason for them not to be.
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-rustc-dev-guide Area: rustc-dev-guide 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-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Nov 26, 2025
@rustbot rustbot added 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Nov 26, 2025
@jhpratt
Copy link
Member Author

jhpratt commented Nov 26, 2025

@bors r+ rollup=never p=5

@rustbot rustbot added the rollup A PR which is a rollup label Nov 26, 2025
@bors
Copy link
Collaborator

bors commented Nov 26, 2025

📌 Commit 7fb0a40 has been approved by jhpratt

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

bors commented Nov 26, 2025

⌛ Testing commit 7fb0a40 with merge 3314b7c...

bors added a commit that referenced this pull request Nov 26, 2025
Rollup of 9 pull requests

Successful merges:

 - #147936 (Offload intrinsic)
 - #148358 (Fix some issues around `rustc_public`)
 - #148452 (Mangle symbols with a mangled name close to PDB limits with v0 instead of legacy mangling to avoid linker errors)
 - #148751 (Build gnullvm toolchains on Windows natively)
 - #148951 (rustc_target: aarch64: Remove deprecated FEAT_TME)
 - #149173 (Use rust rather than LLVM target features in the target spec)
 - #149307 (Deny const auto traits)
 - #149312 (Mark riscv64gc-unknown-linux-musl as tier 2 target)
 - #149341 (Add `Copy` to some AST enums.)

r? `@ghost`
`@rustbot` modify labels: rollup
@rust-log-analyzer
Copy link
Collaborator

The job test-various failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
------FileCheck stderr------------------------------
/checkout/tests/codegen-llvm/vecdeque-drain.rs:13:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:180:60: note: found here
_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit:
                                                           ^~
/checkout/tests/codegen-llvm/vecdeque-drain.rs:32:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:201:71: note: found here
 br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit
                                                                      ^~
/checkout/tests/codegen-llvm/vecdeque-drain.rs:53:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:227:18: note: found here
_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i
                 ^~

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll
Check file: /checkout/tests/codegen-llvm/vecdeque-drain.rs

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

Input was:
<<<<<<
        .
        .
        .
       80:  
       81: bb13.i: ; preds = %bb6.i 
       82:  %10 = icmp ne ptr %source_deque.val16, null 
       83:  tail call void @llvm.assume(i1 %10) 
       84:  %_237.i = getelementptr i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
       85:  %dst7.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
       86:  %11 = shl i64 %dst_pre_wrap_len.i, 2 
       87:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst7.i, ptr nonnull align 4 %_237.i, i64 %11, i1 false) 
       88:  %len9.i = sub i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
       89:  %_330.i = getelementptr i32, ptr %_237.i, i64 %dst_pre_wrap_len.i 
       90:  %12 = shl i64 %len9.i, 2 
       91:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr align 4 %_330.i, i64 %12, i1 false) 
       92:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
       93:  
       94: bb12.i: ; preds = %bb6.i 
       95:  %len11.i = sub i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
       96:  %13 = icmp ne ptr %source_deque.val16, null 
       97:  tail call void @llvm.assume(i1 %13) 
       98:  %14 = getelementptr i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
       99:  %_191.i = getelementptr i32, ptr %14, i64 %dst_pre_wrap_len.i 
      100:  %15 = shl i64 %len11.i, 2 
      101:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr align 4 %_191.i, i64 %15, i1 false) 
      102:  %dst12.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      103:  %16 = shl i64 %dst_pre_wrap_len.i, 2 
      104:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst12.i, ptr nonnull align 4 %14, i64 %16, i1 false) 
      105:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      106:  
      107: bb8.i: ; preds = %bb7.i 
      108:  br i1 %dst_wraps.i, label %bb15.i, label %bb11.i 
      109:  
      110: bb9.i: ; preds = %bb7.i 
      111:  br i1 %dst_wraps.i, label %bb16.i, label %bb10.i 
      112:  
      113: bb11.i: ; preds = %bb8.i 
      114:  %17 = icmp ne ptr %source_deque.val16, null 
      115:  tail call void @llvm.assume(i1 %17) 
      116:  %_144.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      117:  %dst13.i = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      118:  %18 = shl i64 %src_pre_wrap_len.i, 2 
      119:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst13.i, ptr nonnull align 4 %_144.i, i64 %18, i1 false) 
      120:  %len15.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      121:  %dst16.i = getelementptr i32, ptr %dst13.i, i64 %src_pre_wrap_len.i 
      122:  %19 = shl i64 %len15.i, 2 
      123:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst16.i, ptr nonnull align 4 %source_deque.val16, i64 %19, i1 false) 
      124:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      125:  
      126: bb15.i: ; preds = %bb8.i 
      127:  %delta.i = sub i64 %dst_pre_wrap_len.i, %src_pre_wrap_len.i 
      128:  %_512.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      129:  %dst17.i = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      130:  %20 = shl i64 %src_pre_wrap_len.i, 2 
      131:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst17.i, ptr nonnull align 4 %_512.i, i64 %20, i1 false) 
      132:  %dst19.i = getelementptr i32, ptr %dst17.i, i64 %src_pre_wrap_len.i 
      133:  %21 = shl i64 %delta.i, 2 
      134:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst19.i, ptr nonnull align 4 %source_deque.val16, i64 %21, i1 false) 
      135:  %len20.i = sub nuw i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
      136:  %22 = icmp ne ptr %source_deque.val16, null 
      137:  tail call void @llvm.assume(i1 %22) 
      138:  %_604.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %delta.i 
      139:  %23 = shl i64 %len20.i, 2 
      140:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr nonnull align 4 %_604.i, i64 %23, i1 false) 
      141:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      142:  
      143: bb10.i: ; preds = %bb9.i 
      144:  %len22.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      145:  %24 = icmp ne ptr %source_deque.val16, null 
      146:  tail call void @llvm.assume(i1 %24) 
      147:  %25 = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      148:  %dst23.i = getelementptr i32, ptr %25, i64 %src_pre_wrap_len.i 
      149:  %26 = shl i64 %len22.i, 2 
      150:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst23.i, ptr nonnull align 4 %source_deque.val16, i64 %26, i1 false) 
      151:  %_466.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      152:  %27 = shl i64 %src_pre_wrap_len.i, 2 
      153:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %25, ptr nonnull align 4 %_466.i, i64 %27, i1 false) 
      154:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      155:  
      156: bb16.i: ; preds = %bb9.i 
      157:  %delta25.i = sub i64 %src_pre_wrap_len.i, %dst_pre_wrap_len.i 
      158:  %len26.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      159:  %dst27.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %delta25.i 
      160:  %28 = shl i64 %len26.i, 2 
      161:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst27.i, ptr nonnull align 4 %source_deque.val16, i64 %28, i1 false) 
      162:  %src29.i = sub i64 %source_deque.val, %delta25.i 
      163:  %_698.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src29.i 
      164:  %29 = shl i64 %delta25.i, 2 
      165:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr nonnull align 4 %_698.i, i64 %29, i1 false) 
      166:  %30 = icmp ne ptr %source_deque.val16, null 
      167:  tail call void @llvm.assume(i1 %30) 
      168:  %_743.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      169:  %dst30.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      170:  %31 = shl i64 %dst_pre_wrap_len.i, 2 
      171:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst30.i, ptr nonnull align 4 %_743.i, i64 %31, i1 false) 
      172:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      173:  
      174: _RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb14.i, %bb13.i, %bb12.i, %bb11.i, %bb15.i, %bb10.i, %bb16.i 
      175:  ret void 
      176: } 
      177:  
      178: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable 
      179: define void @clear(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(32) initializes((16, 32)) %v) unnamed_addr #1 personality ptr @rust_eh_personality { 
      180: _RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit: 
not:13                                                                !~                                                                                         error: no match expected
      181:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      182:  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) 
      183:  ret void 
      184: } 
      185:  
      186: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable 
      187: define void @truncate(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %n) unnamed_addr #2 personality ptr @rust_eh_personality { 
      188: start: 
      189:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      190:  %_4 = load i64, ptr %0, align 8, !noundef !3 
      191:  %_3 = icmp ult i64 %n, %_4 
      192:  br i1 %_3, label %bb11.i.i.i.i, label %bb4 
      193:  
      194: bb11.i.i.i.i: ; preds = %start 
      195:  %1 = icmp eq i64 %n, 0 
      196:  br i1 %1, label %bb12.i.i.i.i, label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      197:  
      198: bb12.i.i.i.i: ; preds = %bb11.i.i.i.i 
      199:  %2 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      200:  store i64 0, ptr %2, align 8, !noalias !5 
      201:  br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
not:32                                                                           !~                                                                                        error: no match expected
      202:  
      203: _RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb11.i.i.i.i, %bb12.i.i.i.i 
      204:  store i64 %n, ptr %0, align 8, !noalias !5 
      205:  br label %bb4 
      206:  
      207: bb4: ; preds = %start, %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      208:  ret void 
      209: } 
      210:  
      211: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable 
      212: define void @advance(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %n) unnamed_addr #2 personality ptr @rust_eh_personality { 
      213: start: 
      214:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      215:  %_4 = load i64, ptr %0, align 8, !noundef !3 
      216:  %_3 = icmp ult i64 %n, %_4 
      217:  br i1 %_3, label %bb11.i.i.i.i, label %bb3 
      218:  
      219: bb3: ; preds = %start 
      220:  %_3.i = icmp eq i64 %_4, 0 
      221:  br i1 %_3.i, label %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit, label %bb3.i.i 
      222:  
      223: bb3.i.i: ; preds = %bb3 
      224:  store i64 0, ptr %0, align 8, !alias.scope !10 
      225:  br label %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      226:  
      227: _RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i 
not:53                      !~                                                                                                                             error: no match expected
      228:  %1 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      229:  store i64 0, ptr %1, align 8 
      230:  br label %bb4 
      231:  
      232: bb11.i.i.i.i: ; preds = %start 
      233:  %_14 = sub nuw i64 %_4, %n 
      234:  %2 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      235:  %idx.i.i.i.i = load i64, ptr %2, align 8, !noalias !13, !noundef !3 
      236:  %logical_index.i.i.i.i = add i64 %idx.i.i.i.i, %n 
      237:  %self1.i.i.i.i = load i64, ptr %v, align 8, !range !4, !noalias !13, !noundef !3 
      238:  %_31.not.i.i.i.i = icmp ult i64 %logical_index.i.i.i.i, %self1.i.i.i.i 
      239:  %3 = select i1 %_31.not.i.i.i.i, i64 0, i64 %self1.i.i.i.i 
      240:  %_17.sroa.0.0.i.i.i.i = sub nuw i64 %logical_index.i.i.i.i, %3 
      241:  store i64 %_17.sroa.0.0.i.i.i.i, ptr %2, align 8, !noalias !13 
      242:  store i64 %_14, ptr %0, align 8, !noalias !13 
      243:  br label %bb4 
      244:  
      245: bb4: ; preds = %bb11.i.i.i.i, %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      246:  ret void 
      247: } 
      248:  
      249: ; Function Attrs: nonlazybind uwtable 
      250: define void @remove(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %a, i64 noundef %b) unnamed_addr #3 personality ptr @rust_eh_personality { 
      251: start: 
      252:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      253:  %_10 = load i64, ptr %0, align 8, !noundef !3 
      254:  %_10.i = icmp ugt i64 %b, %_10 
      255:  br i1 %_10.i, label %bb8.i, label %bb10.i, !prof !18 
      256:  
      257: bb10.i: ; preds = %start 
      258:  %_20.i = icmp ugt i64 %a, %b 
      259:  br i1 %_20.i, label %bb17.i, label %_RINvNtNtCs7C5RFOL9RoZ_4core5slice5index5rangeINtNtNtB6_3ops5range5RangejEECs8PzcKh4RrBy_14vecdeque_drain.exit, !prof !18 
      260:  
      261: bb8.i: ; preds = %start 
      262: ; call core::slice::index::slice_index_fail 
      263:  tail call void @_RNvNtNtCs7C5RFOL9RoZ_4core5slice5index16slice_index_fail(i64 noundef 0, i64 noundef %b, i64 noundef %_10, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24) @alloc_0da207a3891aba83e29427493b8ac3a7) #9 
      264:  unreachable 
      265:  
      266: bb17.i: ; preds = %bb10.i 
      267: ; call core::slice::index::slice_index_fail 
      268:  tail call void @_RNvNtNtCs7C5RFOL9RoZ_4core5slice5index16slice_index_fail(i64 noundef %a, i64 noundef %b, i64 noundef %_10, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24) @alloc_0da207a3891aba83e29427493b8ac3a7) #9 
      269:  unreachable 
      270:  
      271: _RINvNtNtCs7C5RFOL9RoZ_4core5slice5index5rangeINtNtNtB6_3ops5range5RangejEECs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb10.i 
      272:  %_11 = sub nuw i64 %b, %a 
      273:  store i64 %a, ptr %0, align 8 
      274:  %_13 = sub i64 %_10, %_11 
      275:  %tail_len.i.i.i.i = sub i64 %_13, %a 
      276:  %1 = icmp eq i64 %a, 0 
      277:  %2 = icmp eq i64 %_13, %a 
      278:  %or.cond.i.i.i.i = or i1 %1, %2 
      279:  br i1 %or.cond.i.i.i.i, label %bb11.i.i.i.i, label %bb10.i.i.i.i, !prof !19 
      280:  
      281: bb11.i.i.i.i: ; preds = %bb10.i.i.i.i, %_RINvNtNtCs7C5RFOL9RoZ_4core5slice5index5rangeINtNtNtB6_3ops5range5RangejEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      282:  %3 = icmp eq i64 %_10, %_11 
      283:  br i1 %3, label %bb12.i.i.i.i, label %bb13.i.i.i.i 
      284:  
      285: bb10.i.i.i.i: ; preds = %_RINvNtNtCs7C5RFOL9RoZ_4core5slice5index5rangeINtNtNtB6_3ops5range5RangejEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      286: ; call <<alloc::collections::vec_deque::drain::Drain<_, _> as core::ops::drop::Drop>::drop::DropGuard<_, _> as core::ops::drop::Drop>::drop::join_head_and_tail_wrapping::<i32, alloc::alloc::Global> 
      287:  tail call fastcc void @_RINvNvXNvXs2_NtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drainINtBb_5DrainppENtNtNtCs7C5RFOL9RoZ_4core3ops4drop4Drop4dropINtB5_9DropGuardppEB1j_4drop27join_head_and_tail_wrappinglNtNtBh_5alloc6GlobalECs8PzcKh4RrBy_14vecdeque_drain(ptr noalias noundef align 8 dereferenceable(32) %v, i64 noundef %_11, i64 noundef %a, i64 noundef %tail_len.i.i.i.i), !noalias !20 
      288:  br label %bb11.i.i.i.i 
      289:  
      290: bb12.i.i.i.i: ; preds = %bb11.i.i.i.i 
      291:  %4 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      292:  store i64 0, ptr %4, align 8, !noalias !20 
      293:  br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      294:  
      295: bb13.i.i.i.i: ; preds = %bb11.i.i.i.i 
      296:  %_16.i.i.i.i = icmp ult i64 %a, %tail_len.i.i.i.i 
      297:  br i1 %_16.i.i.i.i, label %bb14.i.i.i.i, label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      298:  
      299: bb14.i.i.i.i: ; preds = %bb13.i.i.i.i 
      300:  %5 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      301:  %idx.i.i.i.i = load i64, ptr %5, align 8, !noalias !20, !noundef !3 
      302:  %logical_index.i.i.i.i = add i64 %idx.i.i.i.i, %_11 
      303:  %self1.i.i.i.i = load i64, ptr %v, align 8, !range !4, !noalias !20, !noundef !3 
      304:  %_31.not.i.i.i.i = icmp ult i64 %logical_index.i.i.i.i, %self1.i.i.i.i 
      305:  %6 = select i1 %_31.not.i.i.i.i, i64 0, i64 %self1.i.i.i.i 
      306:  %_17.sroa.0.0.i.i.i.i = sub nuw i64 %logical_index.i.i.i.i, %6 
      307:  store i64 %_17.sroa.0.0.i.i.i.i, ptr %5, align 8, !noalias !20 
      308:  br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      309:  
      310: _RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb12.i.i.i.i, %bb13.i.i.i.i, %bb14.i.i.i.i 
      311:  store i64 %_13, ptr %0, align 8, !noalias !20 
      312:  ret void 
      313: } 
      314:  
      315: ; Function Attrs: nounwind nonlazybind uwtable 
      316: declare noundef range(i32 0, 10) i32 @rust_eh_personality(i32 noundef, i32 noundef, i64 noundef, ptr noundef, ptr noundef) unnamed_addr #4 
      317:  
      318: ; core::slice::index::slice_index_fail 
      319: ; Function Attrs: cold noinline noreturn nonlazybind uwtable 
      320: declare void @_RNvNtNtCs7C5RFOL9RoZ_4core5slice5index16slice_index_fail(i64 noundef, i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 captures(address, read_provenance) dereferenceable(24)) unnamed_addr #5 
      321:  
      322: ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) 
      323: declare void @llvm.assume(i1 noundef) #6 
      324:  
      325: ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) 
      326: declare void @llvm.memmove.p0.p0.i64(ptr writeonly captures(none), ptr readonly captures(none), i64, i1 immarg) #7 
      327:  
        .
        .
        .
>>>>>>

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

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll" "/checkout/tests/codegen-llvm/vecdeque-drain.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/vecdeque-drain.rs:13:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:180:60: note: found here
_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit:
                                                           ^~
/checkout/tests/codegen-llvm/vecdeque-drain.rs:32:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:201:71: note: found here
 br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit
                                                                      ^~
/checkout/tests/codegen-llvm/vecdeque-drain.rs:53:15: error: CHECK-NOT: excluded string found in input
// CHECK-NOT: br
              ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll:227:18: note: found here
_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i
                 ^~

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen-llvm/vecdeque-drain/vecdeque-drain.ll
Check file: /checkout/tests/codegen-llvm/vecdeque-drain.rs

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

Input was:
<<<<<<
        .
        .
        .
       80:  
       81: bb13.i: ; preds = %bb6.i 
       82:  %10 = icmp ne ptr %source_deque.val16, null 
       83:  tail call void @llvm.assume(i1 %10) 
       84:  %_237.i = getelementptr i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
       85:  %dst7.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
       86:  %11 = shl i64 %dst_pre_wrap_len.i, 2 
       87:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst7.i, ptr nonnull align 4 %_237.i, i64 %11, i1 false) 
       88:  %len9.i = sub i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
       89:  %_330.i = getelementptr i32, ptr %_237.i, i64 %dst_pre_wrap_len.i 
       90:  %12 = shl i64 %len9.i, 2 
       91:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr align 4 %_330.i, i64 %12, i1 false) 
       92:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
       93:  
       94: bb12.i: ; preds = %bb6.i 
       95:  %len11.i = sub i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
       96:  %13 = icmp ne ptr %source_deque.val16, null 
       97:  tail call void @llvm.assume(i1 %13) 
       98:  %14 = getelementptr i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
       99:  %_191.i = getelementptr i32, ptr %14, i64 %dst_pre_wrap_len.i 
      100:  %15 = shl i64 %len11.i, 2 
      101:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr align 4 %_191.i, i64 %15, i1 false) 
      102:  %dst12.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      103:  %16 = shl i64 %dst_pre_wrap_len.i, 2 
      104:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst12.i, ptr nonnull align 4 %14, i64 %16, i1 false) 
      105:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      106:  
      107: bb8.i: ; preds = %bb7.i 
      108:  br i1 %dst_wraps.i, label %bb15.i, label %bb11.i 
      109:  
      110: bb9.i: ; preds = %bb7.i 
      111:  br i1 %dst_wraps.i, label %bb16.i, label %bb10.i 
      112:  
      113: bb11.i: ; preds = %bb8.i 
      114:  %17 = icmp ne ptr %source_deque.val16, null 
      115:  tail call void @llvm.assume(i1 %17) 
      116:  %_144.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      117:  %dst13.i = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      118:  %18 = shl i64 %src_pre_wrap_len.i, 2 
      119:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst13.i, ptr nonnull align 4 %_144.i, i64 %18, i1 false) 
      120:  %len15.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      121:  %dst16.i = getelementptr i32, ptr %dst13.i, i64 %src_pre_wrap_len.i 
      122:  %19 = shl i64 %len15.i, 2 
      123:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst16.i, ptr nonnull align 4 %source_deque.val16, i64 %19, i1 false) 
      124:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      125:  
      126: bb15.i: ; preds = %bb8.i 
      127:  %delta.i = sub i64 %dst_pre_wrap_len.i, %src_pre_wrap_len.i 
      128:  %_512.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      129:  %dst17.i = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      130:  %20 = shl i64 %src_pre_wrap_len.i, 2 
      131:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst17.i, ptr nonnull align 4 %_512.i, i64 %20, i1 false) 
      132:  %dst19.i = getelementptr i32, ptr %dst17.i, i64 %src_pre_wrap_len.i 
      133:  %21 = shl i64 %delta.i, 2 
      134:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst19.i, ptr nonnull align 4 %source_deque.val16, i64 %21, i1 false) 
      135:  %len20.i = sub nuw i64 %head_len.sroa.0.0, %dst_pre_wrap_len.i 
      136:  %22 = icmp ne ptr %source_deque.val16, null 
      137:  tail call void @llvm.assume(i1 %22) 
      138:  %_604.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %delta.i 
      139:  %23 = shl i64 %len20.i, 2 
      140:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr nonnull align 4 %_604.i, i64 %23, i1 false) 
      141:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      142:  
      143: bb10.i: ; preds = %bb9.i 
      144:  %len22.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      145:  %24 = icmp ne ptr %source_deque.val16, null 
      146:  tail call void @llvm.assume(i1 %24) 
      147:  %25 = getelementptr i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      148:  %dst23.i = getelementptr i32, ptr %25, i64 %src_pre_wrap_len.i 
      149:  %26 = shl i64 %len22.i, 2 
      150:  tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %dst23.i, ptr nonnull align 4 %source_deque.val16, i64 %26, i1 false) 
      151:  %_466.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      152:  %27 = shl i64 %src_pre_wrap_len.i, 2 
      153:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %25, ptr nonnull align 4 %_466.i, i64 %27, i1 false) 
      154:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      155:  
      156: bb16.i: ; preds = %bb9.i 
      157:  %delta25.i = sub i64 %src_pre_wrap_len.i, %dst_pre_wrap_len.i 
      158:  %len26.i = sub i64 %head_len.sroa.0.0, %src_pre_wrap_len.i 
      159:  %dst27.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %delta25.i 
      160:  %28 = shl i64 %len26.i, 2 
      161:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst27.i, ptr nonnull align 4 %source_deque.val16, i64 %28, i1 false) 
      162:  %src29.i = sub i64 %source_deque.val, %delta25.i 
      163:  %_698.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src29.i 
      164:  %29 = shl i64 %delta25.i, 2 
      165:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %source_deque.val16, ptr nonnull align 4 %_698.i, i64 %29, i1 false) 
      166:  %30 = icmp ne ptr %source_deque.val16, null 
      167:  tail call void @llvm.assume(i1 %30) 
      168:  %_743.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %src.sroa.0.1 
      169:  %dst30.i = getelementptr inbounds nuw i32, ptr %source_deque.val16, i64 %dst.sroa.0.1 
      170:  %31 = shl i64 %dst_pre_wrap_len.i, 2 
      171:  tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %dst30.i, ptr nonnull align 4 %_743.i, i64 %31, i1 false) 
      172:  br label %_RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      173:  
      174: _RNvMs1_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb14.i, %bb13.i, %bb12.i, %bb11.i, %bb15.i, %bb10.i, %bb16.i 
      175:  ret void 
      176: } 
      177:  
      178: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: write) uwtable 
      179: define void @clear(ptr noalias noundef writeonly align 8 captures(none) dereferenceable(32) initializes((16, 32)) %v) unnamed_addr #1 personality ptr @rust_eh_personality { 
      180: _RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit: 
not:13                                                                !~                                                                                         error: no match expected
      181:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      182:  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) 
      183:  ret void 
      184: } 
      185:  
      186: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable 
      187: define void @truncate(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %n) unnamed_addr #2 personality ptr @rust_eh_personality { 
      188: start: 
      189:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      190:  %_4 = load i64, ptr %0, align 8, !noundef !3 
      191:  %_3 = icmp ult i64 %n, %_4 
      192:  br i1 %_3, label %bb11.i.i.i.i, label %bb4 
      193:  
      194: bb11.i.i.i.i: ; preds = %start 
      195:  %1 = icmp eq i64 %n, 0 
      196:  br i1 %1, label %bb12.i.i.i.i, label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      197:  
      198: bb12.i.i.i.i: ; preds = %bb11.i.i.i.i 
      199:  %2 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      200:  store i64 0, ptr %2, align 8, !noalias !5 
      201:  br label %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
not:32                                                                           !~                                                                                        error: no match expected
      202:  
      203: _RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb11.i.i.i.i, %bb12.i.i.i.i 
      204:  store i64 %n, ptr %0, align 8, !noalias !5 
      205:  br label %bb4 
      206:  
      207: bb4: ; preds = %start, %_RINvNtCs7C5RFOL9RoZ_4core3ptr13drop_in_placeINtNtNtNtCsh8PbrWI86pT_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      208:  ret void 
      209: } 
      210:  
      211: ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable 
      212: define void @advance(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %n) unnamed_addr #2 personality ptr @rust_eh_personality { 
      213: start: 
      214:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      215:  %_4 = load i64, ptr %0, align 8, !noundef !3 
      216:  %_3 = icmp ult i64 %n, %_4 
      217:  br i1 %_3, label %bb11.i.i.i.i, label %bb3 
      218:  
      219: bb3: ; preds = %start 
      220:  %_3.i = icmp eq i64 %_4, 0 
      221:  br i1 %_3.i, label %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit, label %bb3.i.i 
      222:  
      223: bb3.i.i: ; preds = %bb3 
      224:  store i64 0, ptr %0, align 8, !alias.scope !10 
      225:  br label %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      226:  
      227: _RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i 
not:53                      !~                                                                                                                             error: no match expected
      228:  %1 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      229:  store i64 0, ptr %1, align 8 
      230:  br label %bb4 
      231:  
      232: bb11.i.i.i.i: ; preds = %start 
      233:  %_14 = sub nuw i64 %_4, %n 
      234:  %2 = getelementptr inbounds nuw i8, ptr %v, i64 16 
      235:  %idx.i.i.i.i = load i64, ptr %2, align 8, !noalias !13, !noundef !3 
      236:  %logical_index.i.i.i.i = add i64 %idx.i.i.i.i, %n 
      237:  %self1.i.i.i.i = load i64, ptr %v, align 8, !range !4, !noalias !13, !noundef !3 
      238:  %_31.not.i.i.i.i = icmp ult i64 %logical_index.i.i.i.i, %self1.i.i.i.i 
      239:  %3 = select i1 %_31.not.i.i.i.i, i64 0, i64 %self1.i.i.i.i 
      240:  %_17.sroa.0.0.i.i.i.i = sub nuw i64 %logical_index.i.i.i.i, %3 
      241:  store i64 %_17.sroa.0.0.i.i.i.i, ptr %2, align 8, !noalias !13 
      242:  store i64 %_14, ptr %0, align 8, !noalias !13 
      243:  br label %bb4 
      244:  
      245: bb4: ; preds = %bb11.i.i.i.i, %_RNvMs3_NtNtCsh8PbrWI86pT_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      246:  ret void 
      247: } 
      248:  
      249: ; Function Attrs: nonlazybind uwtable 
      250: define void @remove(ptr noalias noundef align 8 captures(none) dereferenceable(32) %v, i64 noundef %a, i64 noundef %b) unnamed_addr #3 personality ptr @rust_eh_personality { 
      251: start: 
      252:  %0 = getelementptr inbounds nuw i8, ptr %v, i64 24 
      253:  %_10 = load i64, ptr %0, align 8, !noundef !3 
      254:  %_10.i = icmp ugt i64 %b, %_10 

@bors
Copy link
Collaborator

bors commented Nov 26, 2025

💔 Test failed - checks-actions

@bors bors 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 Nov 26, 2025
@Zalathar
Copy link
Member

This failure seems to be another example of:

So it's likely that no PR in this rollup is at fault.

@jhpratt jhpratt closed this Nov 27, 2025
@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Nov 27, 2025
@jhpratt jhpratt deleted the rollup-03e84ll branch November 27, 2025 02:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-rustc-dev-guide Area: rustc-dev-guide 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-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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.