inner(x: *mut i32, _y: &i32)1 fn inner(x: *mut i32, _y: &i32) {
2     // If `x` and `y` alias, retagging is fine with this... but we really
3     // shouldn't be allowed to write to `x` at all because `y` was assumed to be
4     // immutable for the duration of this call.
5     unsafe { *x = 0 }; //~ ERROR protect
6 }
7 
main()8 fn main() {
9     let mut x = 0;
10     let xraw = &mut x as *mut _;
11     let xref = unsafe { &*xraw };
12     inner(xraw, xref);
13 }
14