@@ -103,6 +103,21 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
103103 foo. 1 . 0
104104}
105105
106+ #[ no_mangle]
107+ fn index ( slice : & [ i32 ; 4 ] , idx : usize ) -> i32 {
108+ // CHECK-LABEL: define {{.*}} i32 @index
109+ // CHECK: bb1:
110+ // CHECK-NEXT: #dbg_value(ptr poison, [[VAR_index_from_var:![0-9]+]], !DIExpression()
111+ // CODEGEN: bb3:
112+ // CHECK-NEXT: #dbg_value(ptr %slice, [[VAR_const_index_from_start:![0-9]+]], !DIExpression()
113+ // CHECK-NEXT: #dbg_value(ptr poison, [[VAR_const_index_from_end:![0-9]+]], !DIExpression()
114+ let index_from_var = & slice[ idx] ;
115+ let [ ref const_index_from_start, .., ref const_index_from_end] = slice[ ..] else {
116+ return 0 ;
117+ } ;
118+ slice[ 0 ]
119+ }
120+
106121// CHECK-DAG: [[VAR_invalid_ref_of_ref_foo]] = !DILocalVariable(name: "invalid_ref_of_ref_foo"
107122// OPTIMIZED-DAG: [[VAR_ref_foo]] = !DILocalVariable(name: "ref_foo"
108123// CHECK-DAG: [[VAR_ref_v0]] = !DILocalVariable(name: "ref_v0"
@@ -116,5 +131,8 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
116131// CHECK-DAG: [[VAR_fragment_f]] = !DILocalVariable(name: "fragment_f"
117132// CHECK-DAG: [[VAR_tuple_dead]] = !DILocalVariable(name: "tuple_dead"
118133// CHECK-DAG: [[VAR_deref_dead]] = !DILocalVariable(name: "deref_dead"
119- // CHECK-DAG: [[ARG_dead_first_foo]] = !DILocalVariable(name: "dead_first_foo", arg: 1
134+ // CHECK-DAG: [[ARG_dead_first_foo]] = !DILocalVariable(name: "dead_first_foo"
120135// CHECK-DAG: [[VAR_dead_first_v0]] = !DILocalVariable(name: "dead_first_v0"
136+ // CHECK-DAG: [[VAR_index_from_var]] = !DILocalVariable(name: "index_from_var"
137+ // CHECK-DAG: [[VAR_const_index_from_start]] = !DILocalVariable(name: "const_index_from_start"
138+ // CHECK-DAG: [[VAR_const_index_from_end]] = !DILocalVariable(name: "const_index_from_end"
0 commit comments