#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]

#[miri_run]
fn overwriting_part_of_relocation_makes_the_rest_undefined() -> i32 {
    let mut p = &42;
    unsafe {
        let ptr: *mut _ = &mut p;
        *(ptr as *mut u32) = 123;
    }
    *p
}

#[miri_run]
fn pointers_to_different_allocations_are_unorderable() -> bool {
    let x: *const u8 = &1;
    let y: *const u8 = &2;
    x < y
}

#![feature(custom_attribute)]
#![allow(dead_code, unused_attributes)]

#[miri_run]
fn overwriting_part_of_relocation_makes_the_rest_undefined() -> i32 {
    let mut p: *const i32 = &42;
    unsafe {
        let ptr = &mut p as *mut *const i32 as *mut u32;
        *ptr = 123;
        *p
    }
}

--- 
+++ 
@@ -3,10 +3,17 @@
 
 #[miri_run]
 fn overwriting_part_of_relocation_makes_the_rest_undefined() -> i32 {
-    let mut p: *const i32 = &42;
+    let mut p = &42;
     unsafe {
-        let ptr = &mut p as *mut *const i32 as *mut u32;
-        *ptr = 123;
-        *p
+        let ptr: *mut _ = &mut p;
+        *(ptr as *mut u32) = 123;
     }
+    *p
 }
+
+#[miri_run]
+fn pointers_to_different_allocations_are_unorderable() -> bool {
+    let x: *const u8 = &1;
+    let y: *const u8 = &2;
+    x < y
+}
Add test for comparing ptrs into different allocs.
