2022-05-09 19:12:03 -05:00
|
|
|
// Test that we don't remove pointer to int casts or retags
|
2024-04-20 06:19:34 -05:00
|
|
|
//@ test-mir-pass: DeadStoreElimination-initial
|
2024-01-06 12:34:25 -06:00
|
|
|
//@ compile-flags: -Zmir-emit-retag
|
2022-05-09 19:12:03 -05:00
|
|
|
|
2024-01-06 12:34:25 -06:00
|
|
|
// EMIT_MIR provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff
|
2022-05-09 19:12:03 -05:00
|
|
|
fn pointer_to_int(p: *mut i32) {
|
2024-01-06 12:34:25 -06:00
|
|
|
// CHECK-LABEL: fn pointer_to_int(
|
2024-04-03 08:17:00 -05:00
|
|
|
// CHECK: {{_.*}} = {{.*}} as usize (PointerExposeProvenance);
|
|
|
|
// CHECK: {{_.*}} = {{.*}} as isize (PointerExposeProvenance);
|
2022-05-09 19:12:03 -05:00
|
|
|
let _x = p as usize;
|
|
|
|
let _y = p as isize;
|
|
|
|
}
|
|
|
|
|
2024-01-06 12:34:25 -06:00
|
|
|
// EMIT_MIR provenance_soundness.retags.DeadStoreElimination-initial.diff
|
|
|
|
fn retags(_r: &mut i32) {
|
|
|
|
// CHECK-LABEL: fn retags(
|
|
|
|
// CHECK: Retag([fn entry] _1);
|
|
|
|
}
|
2022-05-09 19:12:03 -05:00
|
|
|
|
|
|
|
fn main() {
|
|
|
|
pointer_to_int(&mut 5 as *mut _);
|
|
|
|
retags(&mut 5);
|
|
|
|
}
|