about summary refs log tree commit diff
path: root/tests/mir-opt/dead-store-elimination/provenance_soundness.rs
blob: b2523684a09e6abf4a1a74de62ab7e8b09de8506 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Test that we don't remove pointer to int casts or retags
//@ test-mir-pass: DeadStoreElimination-initial
//@ compile-flags: -Zmir-emit-retag

// EMIT_MIR provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff
fn pointer_to_int(p: *mut i32) {
    // CHECK-LABEL: fn pointer_to_int(
    // CHECK: {{_.*}} = {{.*}} as usize (PointerExposeProvenance);
    // CHECK: {{_.*}} = {{.*}} as isize (PointerExposeProvenance);
    let _x = p as usize;
    let _y = p as isize;
}

// EMIT_MIR provenance_soundness.retags.DeadStoreElimination-initial.diff
fn retags(_r: &mut i32) {
    // CHECK-LABEL: fn retags(
    // CHECK: Retag([fn entry] _1);
}

fn main() {
    pointer_to_int(&mut 5 as *mut _);
    retags(&mut 5);
}