@@ -103,6 +103,21 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
103
103
foo. 1 . 0
104
104
}
105
105
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
+
106
121
// CHECK-DAG: [[VAR_invalid_ref_of_ref_foo]] = !DILocalVariable(name: "invalid_ref_of_ref_foo"
107
122
// OPTIMIZED-DAG: [[VAR_ref_foo]] = !DILocalVariable(name: "ref_foo"
108
123
// CHECK-DAG: [[VAR_ref_v0]] = !DILocalVariable(name: "ref_v0"
@@ -116,5 +131,8 @@ pub fn tuple(foo: (i32, &Foo)) -> i32 {
116
131
// CHECK-DAG: [[VAR_fragment_f]] = !DILocalVariable(name: "fragment_f"
117
132
// CHECK-DAG: [[VAR_tuple_dead]] = !DILocalVariable(name: "tuple_dead"
118
133
// 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"
120
135
// 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