| // EMIT_MIR_FOR_EACH_PANIC_STRATEGY | |
| //@ test-mir-pass: DataflowConstProp | |
| //@ compile-flags: -Zmir-enable-passes=+InstSimplify-after-simplifycfg | |
| // EMIT_MIR_FOR_EACH_BIT_WIDTH | |
| // EMIT_MIR slice_len.main.DataflowConstProp.diff | |
| // CHECK-LABEL: fn main( | |
| fn main() { | |
| // CHECK: debug local => [[local:_.*]]; | |
| // CHECK: debug constant => [[constant:_.*]]; | |
| // CHECK-NOT: {{_.*}} = Len( | |
| // CHECK-NOT: {{_.*}} = Lt( | |
| // CHECK-NOT: assert(move _ | |
| // CHECK: {{_.*}} = const 3_usize; | |
| // CHECK: {{_.*}} = const true; | |
| // CHECK: assert(const true, | |
| // CHECK: [[local]] = copy (*{{_.*}})[1 of 2]; | |
| let local = (&[1u32, 2, 3] as &[u32])[1]; | |
| // CHECK-NOT: {{_.*}} = Len( | |
| // CHECK-NOT: {{_.*}} = Lt( | |
| // CHECK-NOT: assert(move _ | |
| const SLICE: &[u32] = &[1, 2, 3]; | |
| // CHECK: {{_.*}} = const 3_usize; | |
| // CHECK: {{_.*}} = const true; | |
| // CHECK: assert(const true, | |
| // CHECK-NOT: [[constant]] = {{copy|move}} (*{{_.*}})[_ | |
| // CHECK: [[constant]] = copy (*{{_.*}})[1 of 2]; | |
| let constant = SLICE[1]; | |
| } |