Skip to content

Conversation

@matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Nov 20, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

ZuseZ4 and others added 22 commits November 19, 2025 00:17
The list of platforms for which file locks are tested is smaller than
the list of platforms that support it. Synchronize these here.

Link: https://github.com/rust-lang/rust/blob/07bdbaedc63094281483c40a88a1a8f2f8ffadc5/library/std/src/sys/fs/unix.rs#L1291-L1308
Rather than skipping the tests, make sure that they fail. This ensures
that if file locking support is added for more platforms in the future,
the tests don't wind up quietly skipped.
- The underlying file size is represented by file_size field. The size
  field is just the size of structure since it is a C DST.

Signed-off-by: Ayush Singh <[email protected]>
Deleted lines are duplicates of the lines 38 & 39.
- Basically a copy of write_vectored [0]
- Tested on QEMU ovmf.

[0]: rust-lang#146301

Signed-off-by: Ayush Singh <[email protected]>
autodiff rlib handling

As I learned recently, we now apparently support rlib builds already in some cases.
With the last hint from saethlin this seems to now cover all cases. To be sure I'll add a few more testcases before I mark it as ready.

Once this PR lands, we should to the best of my knowledge, support autodiff in almost code locations, only vtable/dyn ptr remain unsupported for now.

r? ghost

closes: rust-lang#148856
closes: rust-lang#137520
Add missing trailing period to RustDoc for fn create_dir().

Documentation for other functions in the standard library RustDocs have a trailing period at the end of the first sentence, e.g. `create_dir_all()` and `create_buffered()` have the trailing period, but the first line of documentation for `fn create_dir()` lacks a trailing period. This PR adds the missing period.
…enton

fs: Run file lock tests on all platforms that support it

There are a number of platforms that support file locking but aren't getting tested. Synchronize the list and mark the tests `should_panic` otherwise, to make sure they get updated if more platforms add locking support.

The supported platform list comes from https://github.com/rust-lang/rust/blob/07bdbaedc63094281483c40a88a1a8f2f8ffadc5/library/std/src/sys/fs/unix.rs#L1291-L1308. Windows also supports file locks, all other platforms are unsupported.
…enton

sgx: avoid unnecessarily creating a slice

Cc `@jethrogb` -- no idea why this created a slice only to directly convert it back to a raw pointer, but we can avoid this and in fact make the entire function safe. I didn't change the function signature (it's still an `unsafe fn`) as I know nothing about the surrounding code.
…sDenton

std: sys: fs: uefi: Fix FileAttr size

- The underlying file size is represented by file_size field. The size field is just the size of structure since it is a C DST.
- Fixes bug created in rust-lang#148970

`@rustbot` label +O-UEFI
…gjubilee

In `BTreeMap::eq`, do not compare the elements if the sizes are different.

Reverts rust-lang#147101 in library/alloc/src/btree/

rust-lang#147101 replaced some instances of code like `a.len() == b.len() && a.iter().eq(&b)` with just `a.iter().eq(&b)`, but the optimization that PR introduced only applies for `TrustedLen` iterators, and `BTreeMap`'s itertors are not `TrustedLen`, so this theoretically regressed perf for comparing large `BTreeMap`/`BTreeSet`s with unequal lengths but equal prefixes, (and also made it so that comparing two different-length `BTreeMap`/`BTreeSet`s with elements whose `PartialEq` impls that can panic now can panic, though this is not a "promised" behaviour either way (cc rust-lang#149122))

Given that `TrustedLen` is an unsafe trait, I opted to not implement it for `BTreeMap`'s iterators, and instead just revert the change. If someone else wants to audit `BTreeMap`'s iterators to make sure they always return the right number of items (even in the face of incorrect user `Ord` impls) and then implement `TrustedLen` for them so that the optimization works for them, then this can be closed in favor of that (or if the perf regression is deemed too theoretical, this can be closed outright).

Example of theoretical perf regression: https://play.rust-lang.org/?version=beta&mode=release&edition=2024&gist=a37e3d61e6bf02669b251315c9a44fe2 (very rough estimates, using `Instant::elapsed`).
In release mode on stable the comparison takes ~23.68µs.
In release mode on beta/nightly the comparison takes ~48.351057ms.
std: sys: net: uefi: Implement read_vectored

- Basically a copy of write_vectored [0]
- Tested on QEMU ovmf.

[0]: rust-lang#146301
@rustbot rustbot added A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc O-SGX Target: SGX 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 20, 2025
@rustbot rustbot added T-libs Relevant to the library team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Nov 20, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Nov 20, 2025

📌 Commit 13031d2 has been approved by matthiaskrgr

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

bors commented Nov 20, 2025

⌛ Testing commit 13031d2 with merge 1d02f3b...

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

Successful merges:

 - #149033 (autodiff rlib handling)
 - #149088 (Add missing trailing period to RustDoc for fn create_dir().)
 - #149111 (fs: Run file lock tests on all platforms that support it)
 - #149113 (sgx: avoid unnecessarily creating a slice)
 - #149123 (std: sys: fs: uefi: Fix FileAttr size)
 - #149125 (In `BTreeMap::eq`, do not compare the elements if the sizes are different.)
 - #149133 (Remove an unused variable)
 - #149134 (std: sys: net: uefi: Implement read_vectored)
 - #149139 (Enable host tools for aarch64-unknown-linux-ohos)

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:10: note: found here
_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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:21: note: found here
 br label %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit
                    ^~

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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      173:  
      174: _RNvMs1_NtNtCsdZVUh7CEfpZ_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: _RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
not:32                         !~                                                                                                                                          error: no match expected
      202:  
      203: _RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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, %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      226:  
      227: _RNvMs3_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i 
      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_NtNtCsdZVUh7CEfpZ_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 %_RINvNtNtCsbr2q1jozzjL_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 @_ZN4core5slice5index16slice_index_fail17hb5305665907e549bE(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 @_ZN4core5slice5index16slice_index_fail17hb5305665907e549bE(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: _RINvNtNtCsbr2q1jozzjL_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, %_RINvNtNtCsbr2q1jozzjL_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 = %_RINvNtNtCsbr2q1jozzjL_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_NtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drainINtBb_5DrainppENtNtNtCsbr2q1jozzjL_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 
        .
        .
        .
>>>>>>

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

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:10: note: found here
_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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:21: note: found here
 br label %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit
                    ^~

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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE9wrap_copyCs8PzcKh4RrBy_14vecdeque_drain.exit 
      173:  
      174: _RNvMs1_NtNtCsdZVUh7CEfpZ_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: _RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
not:32                         !~                                                                                                                                          error: no match expected
      202:  
      203: _RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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, %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_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_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit 
      226:  
      227: _RNvMs3_NtNtCsdZVUh7CEfpZ_5alloc11collections9vec_dequeINtB5_8VecDequelE8truncateCs8PzcKh4RrBy_14vecdeque_drain.exit: ; preds = %bb3, %bb3.i.i 
      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_NtNtCsdZVUh7CEfpZ_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 %_RINvNtNtCsbr2q1jozzjL_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 @_ZN4core5slice5index16slice_index_fail17hb5305665907e549bE(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 @_ZN4core5slice5index16slice_index_fail17hb5305665907e549bE(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: _RINvNtNtCsbr2q1jozzjL_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, %_RINvNtNtCsbr2q1jozzjL_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 = %_RINvNtNtCsbr2q1jozzjL_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_NtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drainINtBb_5DrainppENtNtNtCsbr2q1jozzjL_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 %_RINvNtCsbr2q1jozzjL_4core3ptr13drop_in_placeINtNtNtNtCsdZVUh7CEfpZ_5alloc11collections9vec_deque5drain5DrainlEECs8PzcKh4RrBy_14vecdeque_drain.exit 
      294:  

@bors
Copy link
Collaborator

bors commented Nov 20, 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 20, 2025
@rustbot rustbot removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Nov 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-compiletest Area: The compiletest test runner A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs A-testsuite Area: The testsuite used to check the correctness of rustc O-SGX Target: SGX 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-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.