mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 21:16:44 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			724 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			724 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // run-pass
 | |
| // ignore-emscripten FIXME(#45351)
 | |
| 
 | |
| #![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);
 | |
|     }
 | |
| }
 | 
