Skip to content

Consolidate panicking functions in slice/index.rs #145137

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

Kmeakin
Copy link
Contributor

@Kmeakin Kmeakin commented Aug 8, 2025

Consolidate all the panicking functions in slice/index.rs to use a single slice_index_fail function, similar to how it is done in str/traits.rs.

Split off from #145024

@rustbot
Copy link
Collaborator

rustbot commented Aug 8, 2025

r? @jhpratt

rustbot has assigned @jhpratt.
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 rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. labels Aug 8, 2025
@rust-log-analyzer

This comment has been minimized.

@Kmeakin Kmeakin force-pushed the km/optimize-slice-index-panicking branch from 6473bd2 to 2cc5be6 Compare August 9, 2025 00:06
@rustbot
Copy link
Collaborator

rustbot commented Aug 9, 2025

The Miri subtree was changed

cc @rust-lang/miri

@Kmeakin Kmeakin force-pushed the km/optimize-slice-index-panicking branch from 2cc5be6 to ea7033e Compare August 9, 2025 00:16
@rust-log-analyzer

This comment has been minimized.

Consolidate all the panicking functions in `slice/index.rs` to use a single
`slice_index_fail` function, similar to how it is done in `str/traits.rs`.
@Kmeakin Kmeakin force-pushed the km/optimize-slice-index-panicking branch from ea7033e to 85e73f3 Compare August 9, 2025 01:16
@rust-log-analyzer
Copy link
Collaborator

The job aarch64-gnu-llvm-19-1 failed! Check out the build log: (web) (plain enhanced) (plain)

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

---- [codegen] tests/codegen-llvm/integer-overflow.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-19/bin/FileCheck" "--input-file" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/integer-overflow/integer-overflow.ll" "/checkout/tests/codegen-llvm/integer-overflow.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/integer-overflow.rs:13:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: slice_index_fail
               ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/integer-overflow/integer-overflow.ll:34:28: note: found here
; call core::slice::index::slice_index_fail
                           ^~~~~~~~~~~~~~~~

Input file: /checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/integer-overflow/integer-overflow.ll
Check file: /checkout/tests/codegen-llvm/integer-overflow.rs

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

Input was:
<<<<<<
        1: ; ModuleID = 'integer_overflow.d0a7ef409b5390ce-cgu.0' 
        2: source_filename = "integer_overflow.d0a7ef409b5390ce-cgu.0" 
        3: target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
        4: target triple = "aarch64-unknown-linux-gnu" 
        5:  
        6: @alloc_ff12d07b8177957b8387de7fa843423f = private unnamed_addr constant [49 x i8] c"/checkout/tests/codegen-llvm/integer-overflow.rs\00", align 1 
        7: @alloc_b106af9d378cd43d907734f0ca95174c = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\0E\00\00\00", [4 x i8] undef, ptr @alloc_ff12d07b8177957b8387de7fa843423f, [12 x i8] c"0\00\00\00\00\00\00\00!\00\00\00", [4 x i8] undef }>, align 8 
        8: @alloc_5afe1f775b9f203ea896dd27ce6c2181 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\0E\00\00\00", [4 x i8] undef, ptr @alloc_ff12d07b8177957b8387de7fa843423f, [12 x i8] c"0\00\00\00\00\00\00\00\14\00\00\00", [4 x i8] undef }>, align 8 
        9: @alloc_20387709e971473e2396b0c1d2e2510c = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\17\00\00\00", [4 x i8] undef, ptr @alloc_ff12d07b8177957b8387de7fa843423f, [12 x i8] c"0\00\00\00\00\00\00\00\0C\00\00\00", [4 x i8] undef }>, align 8 
       10:  
       11: ; Function Attrs: uwtable 
       12: define { ptr, i64 } @slice_no_index_order(ptr noalias nocapture noundef align 8 dereferenceable(24) %s, i64 noundef %n) unnamed_addr #0 { 
       13: start: 
       14:  %_8.0 = load ptr, ptr %s, align 8, !nonnull !2, !align !3, !noundef !2 
       15:  %0 = getelementptr inbounds i8, ptr %s, i64 8 
       16:  %_8.1 = load i64, ptr %0, align 8, !noundef !2 
       17:  %1 = getelementptr inbounds i8, ptr %s, i64 16 
       18:  %_3 = load i64, ptr %1, align 8, !noundef !2 
       19:  %2 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %_3, i64 %n) 
       20:  %_6.0 = extractvalue { i64, i1 } %2, 0 
       21:  %_6.1 = extractvalue { i64, i1 } %2, 1 
       22:  br i1 %_6.1, label %panic, label %bb1 
       23:  
       24: bb1: ; preds = %start 
       25:  %_9.not = icmp ugt i64 %_6.0, %_8.1 
       26:  br i1 %_9.not, label %bb5, label %bb2, !prof !4 
       27:  
       28: panic: ; preds = %start 
       29: ; call core::panicking::panic_const::panic_const_add_overflow 
       30:  tail call void @_ZN4core9panicking11panic_const24panic_const_add_overflow17hfa61a4974d51752bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_b106af9d378cd43d907734f0ca95174c) #3 
       31:  unreachable 
       32:  
       33: bb5: ; preds = %bb1 
       34: ; call core::slice::index::slice_index_fail 
not:13                                !~~~~~~~~~~~~~~~  error: no match expected
       35:  tail call void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef %_3, i64 noundef %_6.0, i64 noundef %_8.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_5afe1f775b9f203ea896dd27ce6c2181) #3 
       36:  unreachable 
       37:  
       38: bb2: ; preds = %bb1 
       39:  %_18 = getelementptr inbounds nuw i8, ptr %_8.0, i64 %_3 
       40:  %_16 = sub nuw i64 %_6.0, %_3 
       41:  store i64 %_6.0, ptr %1, align 8 
       42:  %3 = insertvalue { ptr, i64 } poison, ptr %_18, 0 
       43:  %4 = insertvalue { ptr, i64 } %3, i64 %_16, 1 
       44:  ret { ptr, i64 } %4 
       45: } 
       46:  
       47: ; Function Attrs: uwtable 
       48: define { ptr, i64 } @test_check(ptr noalias nocapture noundef readonly align 8 dereferenceable(24) %s, i64 noundef %x, i64 noundef %y) unnamed_addr #0 { 
       49: start: 
       50:  %0 = getelementptr inbounds i8, ptr %s, i64 8 
       51:  %_4.1 = load i64, ptr %0, align 8, !noundef !2 
       52:  %_11 = icmp ult i64 %y, %x 
       53:  %_5.not = icmp ult i64 %_4.1, %y 
       54:  %or.cond = or i1 %_11, %_5.not 
       55:  br i1 %or.cond, label %bb3, label %bb1, !prof !4 
       56:  
       57: bb1: ; preds = %start 
       58:  %_4.0 = load ptr, ptr %s, align 8, !nonnull !2, !align !3, !noundef !2 
       59:  %_12 = sub nuw i64 %y, %x 
       60:  %_14 = getelementptr inbounds nuw i8, ptr %_4.0, i64 %x 
       61:  %1 = insertvalue { ptr, i64 } poison, ptr %_14, 0 
       62:  %2 = insertvalue { ptr, i64 } %1, i64 %_12, 1 
       63:  ret { ptr, i64 } %2 
       64:  
       65: bb3: ; preds = %start 
       66: ; call core::slice::index::slice_index_fail 
       67:  tail call void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef %x, i64 noundef %y, i64 noundef %_4.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_20387709e971473e2396b0c1d2e2510c) #3 
       68:  unreachable 
       69: } 
       70:  
       71: ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) 
       72: declare { i64, i1 } @llvm.uadd.with.overflow.i64(i64, i64) #1 
       73:  
       74: ; core::panicking::panic_const::panic_const_add_overflow 
       75: ; Function Attrs: cold noinline noreturn uwtable 
       76: declare void @_ZN4core9panicking11panic_const24panic_const_add_overflow17hfa61a4974d51752bE(ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #2 
       77:  
       78: ; core::slice::index::slice_index_fail 
       79: ; Function Attrs: cold noinline noreturn uwtable 
       80: declare void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef, i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #2 
       81:  
       82: attributes #0 = { uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
       83: attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } 
       84: attributes #2 = { cold noinline noreturn uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
       85: attributes #3 = { noreturn } 
       86:  
       87: !llvm.module.flags = !{!0} 
       88: !llvm.ident = !{!1} 
       89:  
       90: !0 = !{i32 8, !"PIC Level", i32 2} 
       91: !1 = !{!"rustc version 1.91.0-nightly (5d824530a 2025-08-09)"} 
       92: !2 = !{} 
       93: !3 = !{i64 1} 
       94: !4 = !{!"branch_weights", i32 4001, i32 4000000} 
>>>>>>
------------------------------------------


---- [codegen] tests/codegen-llvm/issues/issue-27130.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-19/bin/FileCheck" "--input-file" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-27130/issue-27130.ll" "/checkout/tests/codegen-llvm/issues/issue-27130.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/issues/issue-27130.rs:18:16: error: CHECK-NOT: excluded string found in input
 // CHECK-NOT: slice_index_fail
               ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-27130/issue-27130.ll:75:28: note: found here
; call core::slice::index::slice_index_fail
                           ^~~~~~~~~~~~~~~~

Input file: /checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-27130/issue-27130.ll
Check file: /checkout/tests/codegen-llvm/issues/issue-27130.rs

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

Input was:
<<<<<<
        1: ; ModuleID = 'issue_27130.4cb69d81e0b072a4-cgu.0' 
        2: source_filename = "issue_27130.4cb69d81e0b072a4-cgu.0" 
        3: target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
        4: target triple = "aarch64-unknown-linux-gnu" 
        5:  
        6: @alloc_ecd9a4521f3807c60c485d8a8aaf913b = private unnamed_addr constant [51 x i8] c"/checkout/tests/codegen-llvm/issues/issue-27130.rs\00", align 1 
        7: @alloc_50287c6a1b8b28d55adad8edbd31ad80 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\13\00\00\00", [4 x i8] undef, ptr @alloc_ecd9a4521f3807c60c485d8a8aaf913b, [12 x i8] c"2\00\00\00\00\00\00\00\10\00\00\00", [4 x i8] undef }>, align 8 
        8:  
        9: ; Function Attrs: nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable 
       10: define void @trim_in_place(ptr noalias nocapture noundef align 8 dereferenceable(16) %a) unnamed_addr #0 { 
       11: start: 
       12:  %0 = getelementptr inbounds i8, ptr %a, i64 8 
       13:  %.promoted = load i64, ptr %0, align 8 
       14:  %_8.not3 = icmp eq i64 %.promoted, 0 
       15:  br i1 %_8.not3, label %bb3, label %bb4.preheader 
       16:  
       17: bb4.preheader: ; preds = %start 
       18:  %a.promoted = load ptr, ptr %a, align 8 
       19:  br label %bb4 
       20:  
       21: bb4: ; preds = %bb4.preheader, %bb7 
       22:  %_1915 = phi ptr [ %_19, %bb7 ], [ %a.promoted, %bb4.preheader ] 
       23:  %_1724 = phi i64 [ %_17, %bb7 ], [ %.promoted, %bb4.preheader ] 
       24:  %_11 = load i8, ptr %_1915, align 1, !noundef !2 
       25:  %_2 = icmp eq i8 %_11, 42 
       26:  br i1 %_2, label %bb7, label %bb3 
       27:  
       28: bb3: ; preds = %bb4, %bb7, %start 
       29:  ret void 
       30:  
       31: bb7: ; preds = %bb4 
       32:  %_17 = add i64 %_1724, -1 
       33:  %_19 = getelementptr inbounds nuw i8, ptr %_1915, i64 1 
       34:  store ptr %_19, ptr %a, align 8 
       35:  store i64 %_17, ptr %0, align 8 
       36:  %_8.not = icmp eq i64 %_17, 0 
       37:  br i1 %_8.not, label %bb3, label %bb4 
       38: } 
       39:  
       40: ; Function Attrs: uwtable 
       41: define void @trim_in_place2(ptr noalias nocapture noundef align 8 dereferenceable(16) %a) unnamed_addr #1 { 
       42: start: 
       43:  %0 = getelementptr inbounds i8, ptr %a, i64 8 
       44:  %.promoted = load i64, ptr %0, align 8 
       45:  %_8.not3 = icmp eq i64 %.promoted, 0 
       46:  br i1 %_8.not3, label %bb3, label %bb4.preheader 
       47:  
       48: bb4.preheader: ; preds = %start 
       49:  %a.promoted = load ptr, ptr %a, align 8 
       50:  br label %bb4 
       51:  
       52: bb4: ; preds = %bb4.preheader, %bb7 
       53:  %_1715 = phi ptr [ %_17, %bb7 ], [ %a.promoted, %bb4.preheader ] 
       54:  %_1524 = phi i64 [ %_15, %bb7 ], [ %.promoted, %bb4.preheader ] 
       55:  %1 = load i8, ptr %_1715, align 1, !noundef !2 
       56:  %2 = icmp eq i8 %1, 42 
       57:  br i1 %2, label %bb2, label %bb3 
       58:  
       59: bb3: ; preds = %bb4, %bb7, %start 
       60:  ret void 
       61:  
       62: bb2: ; preds = %bb4 
       63:  %_10 = icmp eq i64 %_1524, 1 
       64:  br i1 %_10, label %bb6, label %bb7, !prof !3 
       65:  
       66: bb7: ; preds = %bb2 
       67:  %_15 = add i64 %_1524, -2 
       68:  %_17 = getelementptr inbounds nuw i8, ptr %_1715, i64 2 
       69:  store ptr %_17, ptr %a, align 8 
       70:  store i64 %_15, ptr %0, align 8 
       71:  %_8.not = icmp eq i64 %_15, 0 
       72:  br i1 %_8.not, label %bb3, label %bb4 
       73:  
       74: bb6: ; preds = %bb2 
       75: ; call core::slice::index::slice_index_fail 
not:18                                !~~~~~~~~~~~~~~~  error: no match expected
       76:  tail call void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef 2, i64 noundef 1, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_50287c6a1b8b28d55adad8edbd31ad80) #3 
       77:  unreachable 
       78: } 
       79:  
       80: ; core::slice::index::slice_index_fail 
       81: ; Function Attrs: cold noinline noreturn uwtable 
       82: declare void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef, i64 noundef, i64 noundef, ptr noalias noundef readonly align 8 dereferenceable(32)) unnamed_addr #2 
       83:  
       84: attributes #0 = { nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
       85: attributes #1 = { uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
       86: attributes #2 = { cold noinline noreturn uwtable "frame-pointer"="non-leaf" "probe-stack"="inline-asm" "target-cpu"="generic" "target-features"="+v8a,+outline-atomics" } 
       87: attributes #3 = { noreturn } 
       88:  
       89: !llvm.module.flags = !{!0} 
       90: !llvm.ident = !{!1} 
       91:  
       92: !0 = !{i32 8, !"PIC Level", i32 2} 
       93: !1 = !{!"rustc version 1.91.0-nightly (5d824530a 2025-08-09)"} 
       94: !2 = !{} 
       95: !3 = !{!"branch_weights", !"expected", i32 1, i32 2000} 
>>>>>>
------------------------------------------


---- [codegen] tests/codegen-llvm/issues/issue-69101-bounds-check.rs stdout ----

error: verification with 'FileCheck' failed
status: exit status: 1
command: "/usr/lib/llvm-19/bin/FileCheck" "--input-file" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll" "/checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs" "--check-prefix=CHECK" "--allow-unused-prefixes" "--dump-input-context" "100"
stdout: none
--- stderr -------------------------------
/checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs:13:12: error: CHECK: expected string not found in input
 // CHECK: slice_end_index_len_fail
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:19:44: note: scanning from here
define void @already_sliced_no_bounds_check(ptr noalias nocapture noundef nonnull readonly align 1 %a.0, i64 noundef %a.1, ptr noalias nocapture noundef nonnull readonly align 1 %b.0, i64 noundef %b.1, ptr noalias nocapture noundef nonnull writeonly align 1 %c.0, i64 noundef %c.1) unnamed_addr #0 {
                                           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:25:28: note: possible intended match here
; call core::slice::index::slice_index_fail
                           ^
/checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs:24:12: error: CHECK: expected string not found in input
 // CHECK: slice_end_index_len_fail
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:497:50: note: scanning from here
define void @already_sliced_no_bounds_check_exact(ptr noalias nocapture noundef nonnull readonly align 1 %a.0, i64 noundef %a.1, ptr noalias nocapture noundef nonnull readonly align 1 %b.0, i64 noundef %b.1, ptr noalias nocapture noundef nonnull writeonly align 1 %c.0, i64 noundef %c.1) unnamed_addr #0 {
                                                 ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:503:28: note: possible intended match here
; call core::slice::index::slice_index_fail
                           ^
/checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs:36:12: error: CHECK: expected string not found in input
 // CHECK: slice_end_index_len_fail
           ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:975:41: note: scanning from here
define void @already_sliced_bounds_check(ptr noalias nocapture noundef nonnull readonly align 1 %a.0, i64 noundef %a.1, ptr noalias nocapture noundef nonnull readonly align 1 %b.0, i64 noundef %b.1, ptr noalias nocapture noundef nonnull writeonly align 1 %c.0, i64 noundef %c.1) unnamed_addr #0 {
                                        ^
/checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll:981:28: note: possible intended match here
; call core::slice::index::slice_index_fail
                           ^

Input file: /checkout/obj/build/aarch64-unknown-linux-gnu/test/codegen-llvm/issues/issue-69101-bounds-check/issue-69101-bounds-check.ll
Check file: /checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs

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

Input was:
<<<<<<
            1: ; ModuleID = 'issue_69101_bounds_check.f796e1e003b06a72-cgu.0' 
            2: source_filename = "issue_69101_bounds_check.f796e1e003b06a72-cgu.0" 
            3: target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32" 
            4: target triple = "aarch64-unknown-linux-gnu" 
            5:  
            6: @alloc_e0073998dbaedaf627eb89eab806b434 = private unnamed_addr constant [64 x i8] c"/checkout/tests/codegen-llvm/issues/issue-69101-bounds-check.rs\00", align 1 
            7: @alloc_a8fc22e816d1a40ea65cdb5758f0f946 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\0F\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\10\00\00\00", [4 x i8] undef }>, align 8 
            8: @alloc_c5eaa48d7c7c3b901d123deabf9f2b0d = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\0F\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\1C\00\00\00", [4 x i8] undef }>, align 8 
            9: @alloc_4782e823ab2e92f5bc0bc4b262475383 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\0F\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00,\00\00\00", [4 x i8] undef }>, align 8 
           10: @alloc_bb3b39404179bdc0368a47049cf7d7e5 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\1A\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\10\00\00\00", [4 x i8] undef }>, align 8 
           11: @alloc_b8811f7a7ea69364dec8f1c7e8b99fa5 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\1A\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\1C\00\00\00", [4 x i8] undef }>, align 8 
           12: @alloc_919ceaab48c95c248cb6e948d0701b69 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"\1A\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00,\00\00\00", [4 x i8] undef }>, align 8 
           13: @alloc_e8a6725d7489e8cd769ccc628f64d54e = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"&\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\10\00\00\00", [4 x i8] undef }>, align 8 
           14: @alloc_d66bda3f29ba065f41c5ca108bae37ae = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"&\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\1C\00\00\00", [4 x i8] undef }>, align 8 
           15: @alloc_6b2d1af66fb1225e42939a7b5128c786 = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"&\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00,\00\00\00", [4 x i8] undef }>, align 8 
           16: @alloc_671513a24778c48bf414f5cd532e0dbe = private unnamed_addr constant <{ [4 x i8], [4 x i8], ptr, [12 x i8], [4 x i8] }> <{ [4 x i8] c"(\00\00\00", [4 x i8] undef, ptr @alloc_e0073998dbaedaf627eb89eab806b434, [12 x i8] c"?\00\00\00\00\00\00\00\10\00\00\00", [4 x i8] undef }>, align 8 
           17:  
           18: ; Function Attrs: uwtable 
           19: define void @already_sliced_no_bounds_check(ptr noalias nocapture noundef nonnull readonly align 1 %a.0, i64 noundef %a.1, ptr noalias nocapture noundef nonnull readonly align 1 %b.0, i64 noundef %b.1, ptr noalias nocapture noundef nonnull writeonly align 1 %c.0, i64 noundef %c.1) unnamed_addr #0 { 
check:13'0                                                X~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ error: no match found
           20: start: 
check:13'0     ~~~~~~~
           21:  %_11 = icmp ugt i64 %a.1, 2047 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           22:  br i1 %_11, label %bb5, label %bb6, !prof !2 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           23:  
check:13'0     ~
           24: bb6: ; preds = %start 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~
           25: ; call core::slice::index::slice_index_fail 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
check:13'1                                ?                 possible intended match
           26:  tail call void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef 0, i64 noundef 2048, i64 noundef %a.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_a8fc22e816d1a40ea65cdb5758f0f946) #4 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           27:  unreachable 
check:13'0     ~~~~~~~~~~~~~
           28:  
check:13'0     ~
           29: bb5: ; preds = %start 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~
           30:  %_15 = icmp ugt i64 %b.1, 2047 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           31:  br i1 %_15, label %bb7, label %bb8, !prof !2 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           32:  
check:13'0     ~
           33: bb8: ; preds = %bb5 
check:13'0     ~~~~~~~~~~~~~~~~~~~~
           34: ; call core::slice::index::slice_index_fail 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           35:  tail call void @_ZN4core5slice5index16slice_index_fail17hdda667bac6f9b845E(i64 noundef 0, i64 noundef 2048, i64 noundef %b.1, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) @alloc_c5eaa48d7c7c3b901d123deabf9f2b0d) #4 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           36:  unreachable 
check:13'0     ~~~~~~~~~~~~~
           37:  
check:13'0     ~
           38: bb7: ; preds = %bb5 
check:13'0     ~~~~~~~~~~~~~~~~~~~~
           39:  %_19 = icmp ugt i64 %c.1, 2047 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           40:  br i1 %_19, label %vector.body, label %bb10, !prof !2 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           41:  
check:13'0     ~
           42: vector.body: ; preds = %bb7 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           43:  %0 = getelementptr inbounds i8, ptr %a.0, i64 16 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           44:  %wide.load = load <16 x i8>, ptr %a.0, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           45:  %wide.load5 = load <16 x i8>, ptr %0, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           46:  %1 = getelementptr inbounds i8, ptr %b.0, i64 16 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           47:  %wide.load6 = load <16 x i8>, ptr %b.0, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           48:  %wide.load7 = load <16 x i8>, ptr %1, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           49:  %2 = xor <16 x i8> %wide.load6, %wide.load 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           50:  %3 = xor <16 x i8> %wide.load7, %wide.load5 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           51:  %4 = getelementptr inbounds i8, ptr %c.0, i64 16 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           52:  store <16 x i8> %2, ptr %c.0, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           53:  store <16 x i8> %3, ptr %4, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           54:  %5 = getelementptr inbounds i8, ptr %a.0, i64 32 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           55:  %6 = getelementptr inbounds i8, ptr %a.0, i64 48 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           56:  %wide.load.1 = load <16 x i8>, ptr %5, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           57:  %wide.load5.1 = load <16 x i8>, ptr %6, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           58:  %7 = getelementptr inbounds i8, ptr %b.0, i64 32 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           59:  %8 = getelementptr inbounds i8, ptr %b.0, i64 48 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           60:  %wide.load6.1 = load <16 x i8>, ptr %7, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           61:  %wide.load7.1 = load <16 x i8>, ptr %8, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           62:  %9 = getelementptr inbounds i8, ptr %c.0, i64 32 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           63:  %10 = xor <16 x i8> %wide.load6.1, %wide.load.1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           64:  %11 = xor <16 x i8> %wide.load7.1, %wide.load5.1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           65:  %12 = getelementptr inbounds i8, ptr %c.0, i64 48 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           66:  store <16 x i8> %10, ptr %9, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           67:  store <16 x i8> %11, ptr %12, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           68:  %13 = getelementptr inbounds i8, ptr %a.0, i64 64 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           69:  %14 = getelementptr inbounds i8, ptr %a.0, i64 80 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           70:  %wide.load.2 = load <16 x i8>, ptr %13, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           71:  %wide.load5.2 = load <16 x i8>, ptr %14, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           72:  %15 = getelementptr inbounds i8, ptr %b.0, i64 64 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           73:  %16 = getelementptr inbounds i8, ptr %b.0, i64 80 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           74:  %wide.load6.2 = load <16 x i8>, ptr %15, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           75:  %wide.load7.2 = load <16 x i8>, ptr %16, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           76:  %17 = getelementptr inbounds i8, ptr %c.0, i64 64 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           77:  %18 = xor <16 x i8> %wide.load6.2, %wide.load.2 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           78:  %19 = xor <16 x i8> %wide.load7.2, %wide.load5.2 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           79:  %20 = getelementptr inbounds i8, ptr %c.0, i64 80 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           80:  store <16 x i8> %18, ptr %17, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           81:  store <16 x i8> %19, ptr %20, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           82:  %21 = getelementptr inbounds i8, ptr %a.0, i64 96 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           83:  %22 = getelementptr inbounds i8, ptr %a.0, i64 112 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           84:  %wide.load.3 = load <16 x i8>, ptr %21, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           85:  %wide.load5.3 = load <16 x i8>, ptr %22, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           86:  %23 = getelementptr inbounds i8, ptr %b.0, i64 96 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           87:  %24 = getelementptr inbounds i8, ptr %b.0, i64 112 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           88:  %wide.load6.3 = load <16 x i8>, ptr %23, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           89:  %wide.load7.3 = load <16 x i8>, ptr %24, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           90:  %25 = getelementptr inbounds i8, ptr %c.0, i64 96 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           91:  %26 = xor <16 x i8> %wide.load6.3, %wide.load.3 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           92:  %27 = xor <16 x i8> %wide.load7.3, %wide.load5.3 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           93:  %28 = getelementptr inbounds i8, ptr %c.0, i64 112 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           94:  store <16 x i8> %26, ptr %25, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           95:  store <16 x i8> %27, ptr %28, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           96:  %29 = getelementptr inbounds i8, ptr %a.0, i64 128 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           97:  %30 = getelementptr inbounds i8, ptr %a.0, i64 144 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           98:  %wide.load.4 = load <16 x i8>, ptr %29, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
           99:  %wide.load5.4 = load <16 x i8>, ptr %30, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          100:  %31 = getelementptr inbounds i8, ptr %b.0, i64 128 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          101:  %32 = getelementptr inbounds i8, ptr %b.0, i64 144 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          102:  %wide.load6.4 = load <16 x i8>, ptr %31, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          103:  %wide.load7.4 = load <16 x i8>, ptr %32, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          104:  %33 = getelementptr inbounds i8, ptr %c.0, i64 128 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          105:  %34 = xor <16 x i8> %wide.load6.4, %wide.load.4 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          106:  %35 = xor <16 x i8> %wide.load7.4, %wide.load5.4 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          107:  %36 = getelementptr inbounds i8, ptr %c.0, i64 144 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          108:  store <16 x i8> %34, ptr %33, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          109:  store <16 x i8> %35, ptr %36, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          110:  %37 = getelementptr inbounds i8, ptr %a.0, i64 160 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          111:  %38 = getelementptr inbounds i8, ptr %a.0, i64 176 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          112:  %wide.load.5 = load <16 x i8>, ptr %37, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          113:  %wide.load5.5 = load <16 x i8>, ptr %38, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          114:  %39 = getelementptr inbounds i8, ptr %b.0, i64 160 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          115:  %40 = getelementptr inbounds i8, ptr %b.0, i64 176 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          116:  %wide.load6.5 = load <16 x i8>, ptr %39, align 1 
check:13'0     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

@xizheyin
Copy link
Contributor

xizheyin commented Aug 9, 2025

Thanks for the code. You could try ./x test codegen-llvm to test it locally first.
https://rustc-dev-guide.rust-lang.org/tests/intro.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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.

5 participants