//@revisions: stack tree //@[tree]compile-flags: -Zmiri-tree-borrows fn main() { let x = &mut 0u32; let p = x as *mut u32; foo(x, p); } fn foo(a: &mut u32, y: *mut u32) -> u32 { *a = 1; let _b = &*a; unsafe { *y = 2 }; //~[stack]^ ERROR: /not granting access .* because that would remove .* which is strongly protected/ //~[tree]| ERROR: /write access through .* is forbidden/ return *a; }