about summary refs log tree commit diff
path: root/tests/mir-opt/building/match/array_len.rs
blob: 0d889ada9b602c5953d3c29686aa6b132d8f8b5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
//@ compile-flags: -Zmir-opt-level=0

fn opaque<T>(x: T) {}

// EMIT_MIR array_len.const_array_len.built.after.mir
fn const_array_len<T>(x: [T; 5]) {
    // CHECK-LABEL: fn const_array_len(
    // CHECK-NOT: Len
    // CHECK-NOT: PtrMetadata
    // CHECK: = const 5_usize;
    if let [a, b, rest @ .., e] = x {
        opaque(a);
        opaque(b);
        opaque(rest);
        opaque(e);
    }
}

// EMIT_MIR array_len.slice_len.built.after.mir
fn slice_len<T>(x: &[T]) {
    // CHECK-LABEL: fn slice_len(
    // CHECK-NOT: Len
    // CHECK: = PtrMetadata(copy _1);
    if let [a, b, rest @ .., e] = x {
        opaque(a);
        opaque(b);
        opaque(rest);
        opaque(e);
    }
}