about summary refs log tree commit diff
path: root/tests/mir-opt/pre-codegen/dead_on_invalid_place.rs
blob: 5abe9fa43a5d2f6473f16aa1e25e0ad8e913479d (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
#![feature(core_intrinsics, custom_mir)]
#![crate_type = "lib"]

use std::intrinsics::mir::*;

// EMIT_MIR dead_on_invalid_place.invalid_place.PreCodegen.after.mir
#[custom_mir(dialect = "runtime")]
pub fn invalid_place(c: bool) -> bool {
    // CHECK-LABEL: fn invalid_place
    // CHECK: debug c1_ref => [[c1_ref:_[0-9]+]];
    // CHECK: bb0: {
    // We cannot read the reference, since `c1` is dead.
    // CHECK-NEXT: DBG: [[c1_ref]] = &?
    // CHECK-NEXT: _0 = copy _1;
    // CHECK-NEXT: return;
    mir! {
        let _c1_ref: &bool;
        let c1: bool;
        debug c1_ref => _c1_ref;
        {
            c1 = c;
            _c1_ref = &c1;
            RET = c;
            Return()
        }
    }
}