1
- // skip-filecheck
2
1
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
3
2
// unit-test: NormalizeArrayLen
4
3
// compile-flags: -Zmir-enable-passes=+LowerSliceLenCalls
5
4
6
5
// EMIT_MIR lower_array_len.array_bound.NormalizeArrayLen.diff
7
6
pub fn array_bound < const N : usize > ( index : usize , slice : & [ u8 ; N ] ) -> u8 {
7
+ // CHECK-LABEL: fn array_bound(
8
+ // CHECK: [[len:_.*]] = const N;
9
+ // CHECK: Lt(move {{_.*}}, move [[len]]);
8
10
if index < slice. len ( ) {
9
11
slice[ index]
10
12
} else {
@@ -14,6 +16,9 @@ pub fn array_bound<const N: usize>(index: usize, slice: &[u8; N]) -> u8 {
14
16
15
17
// EMIT_MIR lower_array_len.array_bound_mut.NormalizeArrayLen.diff
16
18
pub fn array_bound_mut < const N : usize > ( index : usize , slice : & mut [ u8 ; N ] ) -> u8 {
19
+ // CHECK-LABEL: fn array_bound_mut(
20
+ // CHECK: [[len:_.*]] = const N;
21
+ // CHECK: Lt(move {{_.*}}, move [[len]]);
17
22
if index < slice. len ( ) {
18
23
slice[ index]
19
24
} else {
@@ -25,23 +30,31 @@ pub fn array_bound_mut<const N: usize>(index: usize, slice: &mut [u8; N]) -> u8
25
30
26
31
// EMIT_MIR lower_array_len.array_len.NormalizeArrayLen.diff
27
32
pub fn array_len < const N : usize > ( arr : & [ u8 ; N ] ) -> usize {
33
+ // CHECK-LABEL: fn array_len(
34
+ // CHECK: _0 = const N;
28
35
arr. len ( )
29
36
}
30
37
31
38
// EMIT_MIR lower_array_len.array_len_by_value.NormalizeArrayLen.diff
32
39
pub fn array_len_by_value < const N : usize > ( arr : [ u8 ; N ] ) -> usize {
40
+ // CHECK-LABEL: fn array_len_by_value(
41
+ // CHECK: _0 = const N;
33
42
arr. len ( )
34
43
}
35
44
36
45
// EMIT_MIR lower_array_len.array_len_reborrow.NormalizeArrayLen.diff
37
46
pub fn array_len_reborrow < const N : usize > ( mut arr : [ u8 ; N ] ) -> usize {
47
+ // CHECK-LABEL: fn array_len_reborrow(
48
+ // CHECK: _0 = const N;
38
49
let arr: & mut [ _ ] = & mut arr;
39
50
let arr = & * arr;
40
51
arr. len ( )
41
52
}
42
53
43
54
// EMIT_MIR lower_array_len.array_len_raw.NormalizeArrayLen.diff
44
55
pub fn array_len_raw < const N : usize > ( arr : [ u8 ; N ] ) -> usize {
56
+ // CHECK-LABEL: fn array_len_raw(
57
+ // CHECK: _0 = const N;
45
58
let arr: & [ _ ] = & arr;
46
59
let arr = std:: ptr:: addr_of!( * arr) ;
47
60
unsafe { & * arr } . len ( )
@@ -56,3 +69,4 @@ fn main() {
56
69
let _ = array_len_reborrow ( [ 0 , 2 ] ) ;
57
70
let _ = array_len_raw ( [ 0 , 2 ] ) ;
58
71
}
72
+ // CHECK-LABEL: fn main(
0 commit comments