rust icon indicating copy to clipboard operation
rust copied to clipboard

Less generic code for Vec allocations

Open kornelski opened this issue 5 months ago • 6 comments

Follow up to https://github.com/rust-lang/rust/pull/120504#issuecomment-1989826191 which hopefully makes compilation faster.

kornelski avatar Mar 12 '24 17:03 kornelski

r? @joboet

rustbot has assigned @joboet. They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

rustbot avatar Mar 12 '24 17:03 rustbot

@bors try @rust-timer queue

Noratrieb avatar Mar 12 '24 18:03 Noratrieb

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

rust-timer avatar Mar 12 '24 18:03 rust-timer

:hourglass: Trying commit 870d3326bea4c75bc393daca27fc44bc1e1e4031 with merge 5af33816ce489bad2f393d82636f8c65bd99ba55...

bors avatar Mar 12 '24 18:03 bors

:sunny: Try build successful - checks-actions Build commit: 5af33816ce489bad2f393d82636f8c65bd99ba55 (5af33816ce489bad2f393d82636f8c65bd99ba55)

bors avatar Mar 12 '24 19:03 bors

Queued 5af33816ce489bad2f393d82636f8c65bd99ba55 with parent 7de1a1f6db26cf7af43cca74819118428e6317ee, future comparison URL. There are currently 5 preceding artifacts in the queue. It will probably take at least ~7.0 hours until the benchmark run finishes.

rust-timer avatar Mar 12 '24 19:03 rust-timer

Finished benchmarking commit (5af33816ce489bad2f393d82636f8c65bd99ba55): comparison URL.

Overall result: ✅ improvements - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never @rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.7% [-1.4%, -0.5%] 8
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -0.7% [-1.4%, -0.5%] 8

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
4.4% [1.0%, 8.3%] 7
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-16.7% [-16.7%, -16.7%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 1.7% [-16.7%, 8.3%] 8

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-1.8% [-1.8%, -1.8%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -1.8% [-1.8%, -1.8%] 1

Binary size

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.0%, 1.8%] 7
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 11
Improvements ✅
(primary)
-0.3% [-0.9%, -0.0%] 68
Improvements ✅
(secondary)
-0.3% [-0.5%, -0.2%] 7
All ❌✅ (primary) -0.2% [-0.9%, 1.8%] 75

Bootstrap: 672.776s -> 672.488s (-0.04%) Artifact size: 310.29 MiB -> 310.20 MiB (-0.03%)

rust-timer avatar Mar 13 '24 11:03 rust-timer

@bors try @rust-timer queue

joboet avatar Mar 15 '24 08:03 joboet

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

rust-timer avatar Mar 15 '24 08:03 rust-timer

:hourglass: Trying commit a7064e1f46df919b64907d6e07e127cc5e88f237 with merge 918ae7196cad2c2d5a80c3d893574ea6493717d3...

bors avatar Mar 15 '24 08:03 bors

:sunny: Try build successful - checks-actions Build commit: 918ae7196cad2c2d5a80c3d893574ea6493717d3 (918ae7196cad2c2d5a80c3d893574ea6493717d3)

bors avatar Mar 15 '24 10:03 bors

:sunny: Try build successful - checks-actions Build commit: 918ae7196cad2c2d5a80c3d893574ea6493717d3 (918ae7196cad2c2d5a80c3d893574ea6493717d3)

bors avatar Mar 15 '24 10:03 bors

Queued 918ae7196cad2c2d5a80c3d893574ea6493717d3 with parent ee03c286cfdca26fa5b2a4ee40957625d2c826ff, future comparison URL. There are currently 0 preceding artifacts in the queue. It will probably take at least ~1.7 hours until the benchmark run finishes.

rust-timer avatar Mar 15 '24 10:03 rust-timer

Finished benchmarking commit (918ae7196cad2c2d5a80c3d893574ea6493717d3): comparison URL.

Overall result: ❌✅ regressions and improvements - ACTION NEEDED

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

@bors rollup=never @rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.7% [0.7%, 0.7%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.7% [-1.3%, -0.5%] 6
Improvements ✅
(secondary)
-4.4% [-4.4%, -4.4%] 1
All ❌✅ (primary) -0.4% [-1.3%, 0.7%] 8

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
6.1% [3.3%, 8.1%] 5
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.7% [-18.0%, -1.3%] 39
Improvements ✅
(secondary)
-2.7% [-4.2%, -0.7%] 66
All ❌✅ (primary) -1.7% [-18.0%, 8.1%] 44

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
4.1% [3.5%, 4.6%] 2
Improvements ✅
(primary)
-1.7% [-1.7%, -1.6%] 2
Improvements ✅
(secondary)
-2.6% [-2.6%, -2.6%] 1
All ❌✅ (primary) -1.7% [-1.7%, -1.6%] 2

Binary size

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
0.5% [0.0%, 1.9%] 8
Regressions ❌
(secondary)
0.0% [0.0%, 0.0%] 11
Improvements ✅
(primary)
-0.3% [-0.8%, -0.0%] 67
Improvements ✅
(secondary)
-0.2% [-0.3%, -0.2%] 4
All ❌✅ (primary) -0.2% [-0.8%, 1.9%] 75

Bootstrap: 669.125s -> 667.891s (-0.18%) Artifact size: 311.46 MiB -> 311.42 MiB (-0.01%)

rust-timer avatar Mar 15 '24 11:03 rust-timer

I've rebased and went back to the original version that had a better perf result.

kornelski avatar Mar 19 '24 18:03 kornelski

BTW, the previous PR #120504 has made it into the next beta, so this follow-up may need cherry-picking into the beta too.

kornelski avatar Mar 19 '24 18:03 kornelski

Yeah, this seems fine to me, I can play around with it later. @bors r+ rollup=never @rustbot label +beta-nominated (as it fixes a performance regression in beta)

joboet avatar Mar 23 '24 10:03 joboet

:pushpin: Commit 17b7f551f15bd9da3a4e9753d5ab36fcc98d1bd0 has been approved by joboet

It is now in the queue for this repository.

bors avatar Mar 23 '24 10:03 bors

@bors r- @rustbot ready

joboet avatar Mar 23 '24 18:03 joboet

r=me once CI comes in green.

joboet avatar Mar 23 '24 18:03 joboet

@bors r=joboet

workingjubilee avatar Mar 25 '24 22:03 workingjubilee

:pushpin: Commit 533d7d1012c0105172c1d40b2d54d1b35e050aad has been approved by joboet

It is now in the queue for this repository.

bors avatar Mar 25 '24 22:03 bors

:hourglass: Testing commit 533d7d1012c0105172c1d40b2d54d1b35e050aad with merge 8de764912bb6a0617d3d38a23c44e257cff583c9...

bors avatar Mar 26 '24 06:03 bors

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

Click to see the possible cause of the failure (guessed by this bot)
failures:

---- [codegen] tests/codegen/vec-calloc.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-17/bin/FileCheck" "--input-file" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll" "/checkout/tests/codegen/vec-calloc.rs" "--check-prefix=CHECK" "--check-prefix" "NONMSVC" "--allow-unused-prefixes" "--dump-input-context" "100"
--- stderr -------------------------------
/checkout/tests/codegen/vec-calloc.rs:17:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:17:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:30:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:36:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:36:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:68:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:53:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:53:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:105:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:70:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:70:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:190:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:87:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:87:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:227:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:104:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:104:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:265:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:121:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:121:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:303:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:138:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:138:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:388:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:155:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:155:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:424:3: note: found here
; call alloc::raw_vec::handle_reserve_error
/checkout/tests/codegen/vec-calloc.rs:172:16: error: CHECK-NOT: excluded string found in input
/checkout/tests/codegen/vec-calloc.rs:172:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: call {{.*}}reserve
               ^
/checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll:462:3: note: found here
; call alloc::raw_vec::handle_reserve_error

Input file: /checkout/obj/build/x86_64-unknown-linux-gnu/test/codegen/vec-calloc/vec-calloc.ll
Check file: /checkout/tests/codegen/vec-calloc.rs


-dump-input=help explains the following input dump.
Input was:
<<<<<<
<<<<<<
         1: ; ModuleID = 'vec_calloc.23633b36ce1a1ab2-cgu.0' 
         2: source_filename = "vec_calloc.23633b36ce1a1ab2-cgu.0" 
         3: target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 
         4: target triple = "x86_64-unknown-linux-gnu" 
         5:  
         6: @__rust_no_alloc_shim_is_unstable = external global i8 
         7:  
         8: ; Function Attrs: nonlazybind uwtable 
         9: define void @vec_zero_bytes(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
        10: start: 
        11:  tail call void @llvm.experimental.noalias.scope.decl(metadata !3) 
        12:  %0 = icmp eq i64 %n, 0 
        13:  br i1 %0, label %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit", label %bb4.i.i 
        14:  
        15: bb4.i.i: ; preds = %start 
        16:  %_4.i.i.i = icmp slt i64 %n, 0 
        17:  br i1 %_4.i.i.i, label %bb8.i, label %bb7.i.i 
        18:  
        19: bb7.i.i: ; preds = %bb4.i.i 
        20:  %1 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %n, i64 noundef 1) #6, !noalias !6 
        21:  %2 = icmp eq ptr %1, null 
        22:  br i1 %2, label %bb8.i, label %bb14.i.i 
        23:  
        24: bb14.i.i: ; preds = %bb7.i.i 
        25:  %3 = ptrtoint ptr %1 to i64 
        26:  br label %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit" 
        27:  
        28: bb8.i: ; preds = %bb7.i.i, %bb4.i.i 
        29:  %_10.sroa.4.0.i = phi i64 [ 0, %bb4.i.i ], [ 1, %bb7.i.i ] 
        30: ; call alloc::raw_vec::handle_reserve_error 
not:17        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
        31:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_10.sroa.4.0.i, i64 %n) #7, !noalias !3 
        32:  unreachable 
        33:  
        34: "_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit": ; preds = %start, %bb14.i.i 
        35:  %_10.sroa.10.0.ph.i = phi i64 [ 1, %start ], [ %3, %bb14.i.i ] 
        36:  %4 = inttoptr i64 %_10.sroa.10.0.ph.i to ptr 
        37:  store i64 %n, ptr %_0, align 8, !alias.scope !3 
        38:  %v.sroa.6.0._0.sroa_idx.i = getelementptr inbounds i8, ptr %_0, i64 8 
        39:  store ptr %4, ptr %v.sroa.6.0._0.sroa_idx.i, align 8, !alias.scope !3 
        40:  %v.sroa.8.0._0.sroa_idx.i = getelementptr inbounds i8, ptr %_0, i64 16 
        41:  store i64 %n, ptr %v.sroa.8.0._0.sroa_idx.i, align 8, !alias.scope !3 
        42:  ret void 
        43: } 
        44:  
        45: ; Function Attrs: nonlazybind uwtable 
        46: define void @vec_one_bytes(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
        47: start: 
        48:  tail call void @llvm.experimental.noalias.scope.decl(metadata !9) 
        49:  %0 = icmp eq i64 %n, 0 
        50:  br i1 %0, label %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit", label %bb4.i7.i 
        51:  
        52: bb4.i7.i: ; preds = %start 
        53:  %_4.i.i8.i = icmp slt i64 %n, 0 
        54:  br i1 %_4.i.i8.i, label %bb11.i, label %bb7.i9.i 
        55:  
        56: bb7.i9.i: ; preds = %bb4.i7.i 
        57:  %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !12 
        58:  %_0.i.i.i.i.i = tail call noundef ptr @__rust_alloc(i64 noundef %n, i64 noundef 1) #6, !noalias !12 
        59:  %2 = icmp eq ptr %_0.i.i.i.i.i, null 
        60:  br i1 %2, label %bb11.i, label %bb12.thread.i 
        61:  
        62: bb12.thread.i: ; preds = %bb7.i9.i 
        63:  tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %_0.i.i.i.i.i, i8 1, i64 %n, i1 false), !noalias !9 
        64:  br label %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit" 
        65:  
        66: bb11.i: ; preds = %bb7.i9.i, %bb4.i7.i 
        67:  %_15.sroa.4.0.i = phi i64 [ 0, %bb4.i7.i ], [ 1, %bb7.i9.i ] 
        68: ; call alloc::raw_vec::handle_reserve_error 
not:36        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
        69:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_15.sroa.4.0.i, i64 %n) #7, !noalias !9 
        70:  unreachable 
        71:  
        72: "_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h6983c6b0ed0b450dE.exit": ; preds = %start, %bb12.thread.i 
        73:  %.sink.i = phi ptr [ %_0.i.i.i.i.i, %bb12.thread.i ], [ inttoptr (i64 1 to ptr), %start ] 
        74:  store i64 %n, ptr %_0, align 8, !alias.scope !9 
        75:  %v.sroa.6.0._0.sroa_idx.i = getelementptr inbounds i8, ptr %_0, i64 8 
        76:  store ptr %.sink.i, ptr %v.sroa.6.0._0.sroa_idx.i, align 8, !alias.scope !9 
        77:  %v.sroa.8.0._0.sroa_idx.i = getelementptr inbounds i8, ptr %_0, i64 16 
        78:  store i64 %n, ptr %v.sroa.8.0._0.sroa_idx.i, align 8, !alias.scope !9 
        79:  ret void 
        80: } 
        81:  
        82: ; Function Attrs: nonlazybind uwtable 
        83: define void @vec_zero_scalar(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
        84: start: 
        85:  tail call void @llvm.experimental.noalias.scope.decl(metadata !15) 
        86:  %0 = icmp eq i64 %n, 0 
        87:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit", label %bb4.i9.i 
        88:  
        89: bb4.i9.i: ; preds = %start 
        90:  %_4.i.i10.i = icmp ugt i64 %n, 2305843009213693951 
        91:  %array_size.i.i11.i = shl nuw i64 %n, 2 
        92:  br i1 %_4.i.i10.i, label %bb14.i, label %bb7.i12.i 
        93:  
        94: bb7.i12.i: ; preds = %bb4.i9.i 
        95:  %1 = tail call noundef align 4 ptr @__rust_alloc_zeroed(i64 noundef %array_size.i.i11.i, i64 noundef 4) #6, !noalias !18 
        96:  %2 = icmp eq ptr %1, null 
        97:  br i1 %2, label %bb14.i, label %bb14.i13.i 
        98:  
        99: bb14.i13.i: ; preds = %bb7.i12.i 
       100:  %3 = ptrtoint ptr %1 to i64 
       101:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit" 
       102:  
       103: bb14.i: ; preds = %bb7.i12.i, %bb4.i9.i 
       104:  %_15.sroa.4.0.i = phi i64 [ 0, %bb4.i9.i ], [ 4, %bb7.i12.i ] 
       105: ; call alloc::raw_vec::handle_reserve_error 
not:53        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       106:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_15.sroa.4.0.i, i64 %array_size.i.i11.i) #7, !noalias !15 
       107:  unreachable 
       108:  
       109: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit": ; preds = %start, %bb14.i13.i 
       110:  %_15.sroa.10.0.ph.i = phi i64 [ 4, %start ], [ %3, %bb14.i13.i ] 
       111:  %4 = inttoptr i64 %_15.sroa.10.0.ph.i to ptr 
       112:  store i64 %n, ptr %_0, align 8, !alias.scope !15 
       113:  %5 = getelementptr inbounds i8, ptr %_0, i64 8 
       114:  store ptr %4, ptr %5, align 8, !alias.scope !15 
       115:  %6 = getelementptr inbounds i8, ptr %_0, i64 16 
       116:  store i64 %n, ptr %6, align 8, !alias.scope !15 
       117:  ret void 
       118: } 
       119:  
       120: ; Function Attrs: nonlazybind uwtable 
       121: define void @vec_one_scalar(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       122: start: 
       123:  tail call void @llvm.experimental.noalias.scope.decl(metadata !21) 
       124:  %0 = icmp eq i64 %n, 0 
       125:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit", label %bb4.i.i 
       126:  
       127: bb4.i.i: ; preds = %start 
       128:  %_4.i.i.i = icmp ugt i64 %n, 2305843009213693951 
       129:  %array_size.i.i.i = shl nuw i64 %n, 2 
       130:  br i1 %_4.i.i.i, label %bb17.i, label %bb7.i.i 
       131:  
       132: bb7.i.i: ; preds = %bb4.i.i 
       133:  %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !24 
       134:  %_0.i.i.i.i.i = tail call noundef align 4 ptr @__rust_alloc(i64 noundef %array_size.i.i.i, i64 noundef 4) #6, !noalias !24 
       135:  %2 = icmp eq ptr %_0.i.i.i.i.i, null 
       136:  br i1 %2, label %bb17.i, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2d078039e4875b0aE.exit.i.i" 
       137:  
       138: "_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2d078039e4875b0aE.exit.i.i": ; preds = %bb7.i.i 
       139:  %_2816.i.i = icmp ugt i64 %n, 1 
       140:  br i1 %_2816.i.i, label %bb18.i.i.preheader, label %bb4.i19.i 
       141:  
       142: bb18.i.i.preheader: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2d078039e4875b0aE.exit.i.i" 
       143:  %3 = add i64 %n, -1 
       144:  %min.iters.check = icmp ult i64 %n, 9 
       145:  br i1 %min.iters.check, label %bb18.i.i.preheader4, label %vector.ph 
       146:  
       147: vector.ph: ; preds = %bb18.i.i.preheader 
       148:  %n.vec = and i64 %3, -8 
       149:  %4 = shl i64 %n.vec, 2 
       150:  %ind.end = getelementptr i8, ptr %_0.i.i.i.i.i, i64 %4 
       151:  %ind.end1 = or i64 %n.vec, 1 
       152:  br label %vector.body 
       153:  
       154: vector.body: ; preds = %vector.body, %vector.ph 
       155:  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] 
       156:  %5 = shl i64 %index, 2 
       157:  %next.gep = getelementptr i8, ptr %_0.i.i.i.i.i, i64 %5 
       158:  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %next.gep, align 4, !noalias !27 
       159:  %6 = getelementptr i32, ptr %next.gep, i64 4 
       160:  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %6, align 4, !noalias !27 
       161:  %index.next = add nuw i64 %index, 8 
       162:  %7 = icmp eq i64 %index.next, %n.vec 
       163:  br i1 %7, label %middle.block, label %vector.body, !llvm.loop !30 
       164:  
       165: middle.block: ; preds = %vector.body 
       166:  %cmp.n = icmp eq i64 %3, %n.vec 
       167:  br i1 %cmp.n, label %bb4.i19.i, label %bb18.i.i.preheader4 
       168:  
       169: bb18.i.i.preheader4: ; preds = %bb18.i.i.preheader, %middle.block 
       170:  %ptr.019.i.i.ph = phi ptr [ %_0.i.i.i.i.i, %bb18.i.i.preheader ], [ %ind.end, %middle.block ] 
       171:  %iter.sroa.0.018.i.i.ph = phi i64 [ 1, %bb18.i.i.preheader ], [ %ind.end1, %middle.block ] 
       172:  br label %bb18.i.i 
       173:  
       174: bb4.i19.i: ; preds = %bb18.i.i, %middle.block, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2d078039e4875b0aE.exit.i.i" 
       175:  %ptr.0.lcssa.i50.i = phi ptr [ %_0.i.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h2d078039e4875b0aE.exit.i.i" ], [ %ind.end, %middle.block ], [ %_16.i.i, %bb18.i.i ] 
       176:  store i32 1, ptr %ptr.0.lcssa.i50.i, align 4, !noalias !27 
       177:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit" 
       178:  
       179: bb18.i.i: ; preds = %bb18.i.i.preheader4, %bb18.i.i 
       180:  %ptr.019.i.i = phi ptr [ %_16.i.i, %bb18.i.i ], [ %ptr.019.i.i.ph, %bb18.i.i.preheader4 ] 
       181:  %iter.sroa.0.018.i.i = phi i64 [ %_0.i9.i.i, %bb18.i.i ], [ %iter.sroa.0.018.i.i.ph, %bb18.i.i.preheader4 ] 
       182:  %_0.i9.i.i = add nuw nsw i64 %iter.sroa.0.018.i.i, 1 
       183:  store i32 1, ptr %ptr.019.i.i, align 4, !noalias !27 
       184:  %_16.i.i = getelementptr inbounds i32, ptr %ptr.019.i.i, i64 1 
       185:  %exitcond.not.i.i = icmp eq i64 %_0.i9.i.i, %n 
       186:  br i1 %exitcond.not.i.i, label %bb4.i19.i, label %bb18.i.i, !llvm.loop !33 
       187:  
       188: bb17.i: ; preds = %bb7.i.i, %bb4.i.i 
       189:  %_20.sroa.4.0.i = phi i64 [ 0, %bb4.i.i ], [ 4, %bb7.i.i ] 
       190: ; call alloc::raw_vec::handle_reserve_error 
not:70        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       191:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_20.sroa.4.0.i, i64 %array_size.i.i.i) #7, !noalias !21 
       192:  unreachable 
       193:  
       194: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h2edc9878c494bc71E.exit": ; preds = %start, %bb4.i19.i 
       195:  %.sink.i = phi ptr [ %_0.i.i.i.i.i, %bb4.i19.i ], [ inttoptr (i64 4 to ptr), %start ] 
       196:  store i64 %n, ptr %_0, align 8, !alias.scope !21 
       197:  %8 = getelementptr inbounds i8, ptr %_0, i64 8 
       198:  store ptr %.sink.i, ptr %8, align 8, !alias.scope !21 
       199:  %9 = getelementptr inbounds i8, ptr %_0, i64 16 
       200:  store i64 %n, ptr %9, align 8, !alias.scope !21 
       201:  ret void 
       202: } 
       203:  
       204: ; Function Attrs: nonlazybind uwtable 
       205: define void @vec_zero_rgb48(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       206: start: 
       207:  tail call void @llvm.experimental.noalias.scope.decl(metadata !34) 
       208:  %0 = icmp eq i64 %n, 0 
       209:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h532cd66e2ae42d41E.exit", label %bb4.i10.i 
       210:  
       211: bb4.i10.i: ; preds = %start 
       212:  %_4.i.i11.i = icmp ugt i64 %n, 1537228672809129301 
       213:  %array_size.i.i12.i = mul nuw i64 %n, 6 
       214:  br i1 %_4.i.i11.i, label %bb14.i, label %bb7.i13.i 
       215:  
       216: bb7.i13.i: ; preds = %bb4.i10.i 
       217:  %1 = tail call noundef align 2 ptr @__rust_alloc_zeroed(i64 noundef %array_size.i.i12.i, i64 noundef 2) #6, !noalias !37 
       218:  %2 = icmp eq ptr %1, null 
       219:  br i1 %2, label %bb14.i, label %bb14.i14.i 
       220:  
       221: bb14.i14.i: ; preds = %bb7.i13.i 
       222:  %3 = ptrtoint ptr %1 to i64 
       223:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h532cd66e2ae42d41E.exit" 
       224:  
       225: bb14.i: ; preds = %bb7.i13.i, %bb4.i10.i 
       226:  %_15.sroa.4.0.i = phi i64 [ 0, %bb4.i10.i ], [ 2, %bb7.i13.i ] 
       227: ; call alloc::raw_vec::handle_reserve_error 
not:87        !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       228:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_15.sroa.4.0.i, i64 %array_size.i.i12.i) #7, !noalias !34 
       229:  unreachable 
       230:  
       231: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h532cd66e2ae42d41E.exit": ; preds = %start, %bb14.i14.i 
       232:  %_15.sroa.10.0.ph.i = phi i64 [ 2, %start ], [ %3, %bb14.i14.i ] 
       233:  %4 = inttoptr i64 %_15.sroa.10.0.ph.i to ptr 
       234:  store i64 %n, ptr %_0, align 8, !alias.scope !34 
       235:  %5 = getelementptr inbounds i8, ptr %_0, i64 8 
       236:  store ptr %4, ptr %5, align 8, !alias.scope !34 
       237:  %6 = getelementptr inbounds i8, ptr %_0, i64 16 
       238:  store i64 %n, ptr %6, align 8, !alias.scope !34 
       239:  ret void 
       240: } 
       241:  
       242: ; Function Attrs: nonlazybind uwtable 
       243: define void @vec_zero_array_16(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       244: bb2.i: 
       245:  tail call void @llvm.experimental.noalias.scope.decl(metadata !40) 
       246:  %0 = icmp eq i64 %n, 0 
       247:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h81d4a1c826168365E.exit", label %bb4.i10.i 
       248:  
       249: bb4.i10.i: ; preds = %bb2.i 
       250:  %_4.i.i11.i = icmp ugt i64 %n, 72057594037927935 
       251:  %array_size.i.i12.i = shl nuw i64 %n, 7 
       252:  br i1 %_4.i.i11.i, label %bb14.i, label %bb7.i13.i 
       253:  
       254: bb7.i13.i: ; preds = %bb4.i10.i 
       255:  %1 = tail call noundef align 8 ptr @__rust_alloc_zeroed(i64 noundef %array_size.i.i12.i, i64 noundef 8) #6, !noalias !43 
       256:  %2 = icmp eq ptr %1, null 
       257:  br i1 %2, label %bb14.i, label %bb14.i14.i 
       258:  
       259: bb14.i14.i: ; preds = %bb7.i13.i 
       260:  %3 = ptrtoint ptr %1 to i64 
       261:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h81d4a1c826168365E.exit" 
       262:  
       263: bb14.i: ; preds = %bb7.i13.i, %bb4.i10.i 
       264:  %_15.sroa.4.0.i = phi i64 [ 0, %bb4.i10.i ], [ 8, %bb7.i13.i ] 
       265: ; call alloc::raw_vec::handle_reserve_error 
not:104       !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       266:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_15.sroa.4.0.i, i64 %array_size.i.i12.i) #7, !noalias !47 
       267:  unreachable 
       268:  
       269: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17h81d4a1c826168365E.exit": ; preds = %bb2.i, %bb14.i14.i 
       270:  %_15.sroa.10.0.ph.i = phi i64 [ 8, %bb2.i ], [ %3, %bb14.i14.i ] 
       271:  %4 = inttoptr i64 %_15.sroa.10.0.ph.i to ptr 
Build completed unsuccessfully in 0:11:28
       272:  store i64 %n, ptr %_0, align 8, !alias.scope !40, !noalias !48 
       273:  %5 = getelementptr inbounds i8, ptr %_0, i64 8 
       274:  store ptr %4, ptr %5, align 8, !alias.scope !40, !noalias !48 
       275:  %6 = getelementptr inbounds i8, ptr %_0, i64 16 
       276:  store i64 %n, ptr %6, align 8, !alias.scope !40, !noalias !48 
       277:  ret void 
       278: } 
       279:  
       280: ; Function Attrs: nonlazybind uwtable 
       281: define void @vec_zero_tuple(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       282: start: 
       283:  tail call void @llvm.experimental.noalias.scope.decl(metadata !49) 
       284:  %0 = icmp eq i64 %n, 0 
       285:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit", label %bb4.i10.i 
       286:  
       287: bb4.i10.i: ; preds = %start 
       288:  %_4.i.i11.i = icmp ugt i64 %n, 1152921504606846975 
       289:  %array_size.i.i12.i = shl nuw i64 %n, 3 
       290:  br i1 %_4.i.i11.i, label %bb14.i, label %bb7.i13.i 
       291:  
       292: bb7.i13.i: ; preds = %bb4.i10.i 
       293:  %1 = tail call noundef align 4 ptr @__rust_alloc_zeroed(i64 noundef %array_size.i.i12.i, i64 noundef 4) #6, !noalias !52 
       294:  %2 = icmp eq ptr %1, null 
       295:  br i1 %2, label %bb14.i, label %bb14.i14.i 
       296:  
       297: bb14.i14.i: ; preds = %bb7.i13.i 
       298:  %3 = ptrtoint ptr %1 to i64 
       299:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit" 
       300:  
       301: bb14.i: ; preds = %bb7.i13.i, %bb4.i10.i 
       302:  %_15.sroa.4.0.i = phi i64 [ 0, %bb4.i10.i ], [ 4, %bb7.i13.i ] 
       303: ; call alloc::raw_vec::handle_reserve_error 
not:121       !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       304:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_15.sroa.4.0.i, i64 %array_size.i.i12.i) #7, !noalias !49 
       305:  unreachable 
       306:  
       307: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit": ; preds = %start, %bb14.i14.i 
       308:  %_15.sroa.10.0.ph.i = phi i64 [ 4, %start ], [ %3, %bb14.i14.i ] 
       309:  %4 = inttoptr i64 %_15.sroa.10.0.ph.i to ptr 
       310:  store i64 %n, ptr %_0, align 8, !alias.scope !49 
       311:  %5 = getelementptr inbounds i8, ptr %_0, i64 8 
       312:  store ptr %4, ptr %5, align 8, !alias.scope !49 
       313:  %6 = getelementptr inbounds i8, ptr %_0, i64 16 
       314:  store i64 %n, ptr %6, align 8, !alias.scope !49 
       315:  ret void 
       316: } 
       317:  
       318: ; Function Attrs: nonlazybind uwtable 
       319: define void @vec_non_zero_tuple(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       320: start: 
       321:  tail call void @llvm.experimental.noalias.scope.decl(metadata !55) 
       322:  %0 = icmp eq i64 %n, 0 
       323:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit", label %bb4.i9.i 
       324:  
       325: bb4.i9.i: ; preds = %start 
       326:  %_4.i.i.i = icmp ugt i64 %n, 1152921504606846975 
       327:  %array_size.i.i.i = shl nuw i64 %n, 3 
       328:  br i1 %_4.i.i.i, label %bb17.i, label %bb7.i.i 
       329:  
       330: bb7.i.i: ; preds = %bb4.i9.i 
       331:  %1 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !58 
       332:  %_0.i.i.i.i.i = tail call noundef align 4 ptr @__rust_alloc(i64 noundef %array_size.i.i.i, i64 noundef 4) #6, !noalias !58 
       333:  %2 = icmp eq ptr %_0.i.i.i.i.i, null 
       334:  br i1 %2, label %bb17.i, label %bb18.i 
       335:  
       336: bb18.i: ; preds = %bb7.i.i 
       337:  %_2816.i.i = icmp ugt i64 %n, 1 
       338:  br i1 %_2816.i.i, label %bb3.i.i.preheader, label %bb4.i20.i 
       339:  
       340: bb3.i.i.preheader: ; preds = %bb18.i 
       341:  %3 = add i64 %n, -1 
       342:  %min.iters.check = icmp ult i64 %n, 5 
       343:  br i1 %min.iters.check, label %bb3.i.i.preheader5, label %vector.ph 
       344:  
       345: vector.ph: ; preds = %bb3.i.i.preheader 
       346:  %n.vec = and i64 %3, -4 
       347:  %4 = shl i64 %n.vec, 3 
       348:  %ind.end = getelementptr i8, ptr %_0.i.i.i.i.i, i64 %4 
       349:  %ind.end2 = or i64 %n.vec, 1 
       350:  br label %vector.body 
       351:  
       352: vector.body: ; preds = %vector.body, %vector.ph 
       353:  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ] 
       354:  %5 = shl i64 %index, 3 
       355:  %next.gep = getelementptr i8, ptr %_0.i.i.i.i.i, i64 %5 
       356:  store <2 x i64> <i64 279172874240, i64 279172874240>, ptr %next.gep, align 4, !noalias !61 
       357:  %6 = getelementptr i64, ptr %next.gep, i64 2 
       358:  store <2 x i64> <i64 279172874240, i64 279172874240>, ptr %6, align 4, !noalias !61 
       359:  %index.next = add nuw i64 %index, 4 
       360:  %7 = icmp eq i64 %index.next, %n.vec 
       361:  br i1 %7, label %middle.block, label %vector.body, !llvm.loop !64 
       362:  
       363: middle.block: ; preds = %vector.body 
       364:  %cmp.n = icmp eq i64 %3, %n.vec 
       365:  br i1 %cmp.n, label %bb4.i20.i, label %bb3.i.i.preheader5 
       366:  
       367: bb3.i.i.preheader5: ; preds = %bb3.i.i.preheader, %middle.block 
       368:  %ptr.019.i.i.ph = phi ptr [ %_0.i.i.i.i.i, %bb3.i.i.preheader ], [ %ind.end, %middle.block ] 
       369:  %iter.sroa.0.018.i.i.ph = phi i64 [ 1, %bb3.i.i.preheader ], [ %ind.end2, %middle.block ] 
       370:  br label %bb3.i.i 
       371:  
       372: bb4.i20.i: ; preds = %bb3.i.i, %middle.block, %bb18.i 
       373:  %ptr.0.lcssa.i49.i = phi ptr [ %_0.i.i.i.i.i, %bb18.i ], [ %ind.end, %middle.block ], [ %_16.i.i, %bb3.i.i ] 
       374:  store i64 279172874240, ptr %ptr.0.lcssa.i49.i, align 4, !noalias !61 
       375:  br label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit" 
       376:  
       377: bb3.i.i: ; preds = %bb3.i.i.preheader5, %bb3.i.i 
       378:  %ptr.019.i.i = phi ptr [ %_16.i.i, %bb3.i.i ], [ %ptr.019.i.i.ph, %bb3.i.i.preheader5 ] 
       379:  %iter.sroa.0.018.i.i = phi i64 [ %_0.i.i21.i, %bb3.i.i ], [ %iter.sroa.0.018.i.i.ph, %bb3.i.i.preheader5 ] 
       380:  %_0.i.i21.i = add nuw nsw i64 %iter.sroa.0.018.i.i, 1 
       381:  store i64 279172874240, ptr %ptr.019.i.i, align 4, !noalias !61 
       382:  %_16.i.i = getelementptr inbounds { i16, i8, [1 x i8], i32 }, ptr %ptr.019.i.i, i64 1 
       383:  %exitcond.not.i.i = icmp eq i64 %_0.i.i21.i, %n 
       384:  br i1 %exitcond.not.i.i, label %bb4.i20.i, label %bb3.i.i, !llvm.loop !65 
       385:  
       386: bb17.i: ; preds = %bb7.i.i, %bb4.i9.i 
       387:  %_20.sroa.4.0.i = phi i64 [ 0, %bb4.i9.i ], [ 4, %bb7.i.i ] 
       388: ; call alloc::raw_vec::handle_reserve_error 
not:138       !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        error: no match expected
       389:  tail call void @_ZN5alloc7raw_vec20handle_reserve_error17h0eeb388cf1392e03E(i64 noundef %_20.sroa.4.0.i, i64 %array_size.i.i.i) #7, !noalias !55 
       390:  unreachable 
       391:  
       392: "_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17he33c997c22e39221E.exit": ; preds = %start, %bb4.i20.i 
       393:  %.sink.i = phi ptr [ %_0.i.i.i.i.i, %bb4.i20.i ], [ inttoptr (i64 4 to ptr), %start ] 
       394:  store i64 %n, ptr %_0, align 8, !alias.scope !55 
       395:  %8 = getelementptr inbounds i8, ptr %_0, i64 8 
       396:  store ptr %.sink.i, ptr %8, align 8, !alias.scope !55 
       397:  %9 = getelementptr inbounds i8, ptr %_0, i64 16 
       398:  store i64 %n, ptr %9, align 8, !alias.scope !55 
       399:  ret void 
       400: } 
       401:  
       402: ; Function Attrs: nonlazybind uwtable 
       403: define void @vec_option_bool(ptr noalias nocapture noundef writeonly sret([24 x i8]) align 8 dereferenceable(24) %_0, i64 noundef %n) unnamed_addr #0 personality ptr @rust_eh_personality { 
       404: start: 
       405:  tail call void @llvm.experimental.noalias.scope.decl(metadata !66) 
       406:  %0 = icmp eq i64 %n, 0 
       407:  br i1 %0, label %"_ZN62_$LT$T$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17hbca8f81a57daf680E.exit", label %bb4.i9.i 
       408:  
       409: bb4.i9.i: ; preds = %start 
       410:  %_4.i.i10.i = icmp slt i64 %n, 0 
       411:  br i1 %_4.i.i10.i, label %bb14.i, label %bb7.i11.i 
       412:  
       413: bb7.i11.i: ; preds = %bb4.i9.i 
       414:  %1 = tail call noundef ptr @__rust_alloc_zeroed(i64 noundef %n, i64 noundef 1) #6, !noalias !69 

rust-log-analyzer avatar Mar 26 '24 06:03 rust-log-analyzer

:broken_heart: Test failed - checks-actions

bors avatar Mar 26 '24 06:03 bors

I've removed word "reserve" from helper function name to avoid confusing tests that look for absence of functions like try_reserve.

kornelski avatar Mar 27 '24 15:03 kornelski

Cool! r=me once CI comes in green.

joboet avatar Mar 27 '24 15:03 joboet

@bors r+

joboet avatar Mar 27 '24 17:03 joboet

:pushpin: Commit 443e29cd97a68a5af171abf07fc1c4cf08577a73 has been approved by joboet

It is now in the queue for this repository.

bors avatar Mar 27 '24 17:03 bors

:hourglass: Testing commit 443e29cd97a68a5af171abf07fc1c4cf08577a73 with merge c9f8f3438a8134a413aa5d4903e0196e44e37bbc...

bors avatar Mar 27 '24 19:03 bors