2023-10-16 12:36:39 -05:00
|
|
|
// skip-filecheck
|
2020-08-15 22:01:38 -05:00
|
|
|
// EMIT_MIR issue_75439.foo.MatchBranchSimplification.diff
|
2022-12-22 09:33:12 -06:00
|
|
|
//@ ignore-endian-big
|
2020-08-15 22:01:38 -05:00
|
|
|
|
|
|
|
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() {
|
2021-06-03 02:31:27 -05:00
|
|
|
let _ = foo([0; 16]);
|
2020-08-15 22:01:38 -05:00
|
|
|
}
|