| //@compile-flags: -Cdebug-assertions=no | |
| #[repr(transparent)] | |
| struct HasDrop(u8); | |
| impl Drop for HasDrop { | |
| fn drop(&mut self) {} | |
| } | |
| #[repr(C, align(2))] | |
| struct PartialDrop { | |
| a: HasDrop, | |
| b: u8, | |
| } | |
| //@error-in-other-file: /required 2 byte alignment/ | |
| fn main() { | |
| unsafe { | |
| // Create an unaligned pointer | |
| let mut x = [0_u16; 2]; | |
| let p = core::ptr::addr_of_mut!(x).cast::<u8>(); | |
| let p = p.add(1); | |
| let p = p.cast::<PartialDrop>(); | |
| core::ptr::drop_in_place(p); | |
| } | |
| } |