rust/tests/mir-opt/issues/issue_75439.rs
2023-01-11 09:32:08 +00:00

19 lines
416 B
Rust

// EMIT_MIR issue_75439.foo.MatchBranchSimplification.diff
use std::mem::transmute;
pub fn foo(bytes: [u8; 16]) -> Option<[u8; 4]> {
// big endian `u32`s
let dwords: [u32; 4] = unsafe { transmute(bytes) };
const FF: u32 = 0x0000_ffff_u32.to_be();
if let [0, 0, 0 | FF, ip] = dwords {
Some(unsafe { transmute(ip) })
} else {
None
}
}
fn main() {
let _ = foo([0; 16]);
}