// Copyright 2016 The Rust Project Developers. See the COPYRIGHT // file at the top-level directory of this distribution and at // http://rust-lang.org/COPYRIGHT. // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #![feature(repr_simd, test)] extern crate test; #[repr(simd)] pub struct Mu64(pub u64, pub u64, pub u64, pub u64); fn main() { // This ensures an unaligned pointer even in optimized builds, though LLVM // gets enough type information to actually not mess things up in that case, // but at the time of writing this, it's enough to trigger the bug in // non-optimized builds unsafe { let memory = &mut [0u64; 8] as *mut _ as *mut u8; let misaligned_ptr: &mut [u8; 32] = { std::mem::transmute(memory.offset(1)) }; *misaligned_ptr = std::mem::transmute(Mu64(1, 1, 1, 1)); test::black_box(memory); } }