mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-23 02:27:39 +03:00
58f8739d55
MIR dumped before/after the dummy `PreCodegen` pass should be identical to MIR dumped after the phase transition to `runtime-optimized`.
30 lines
1.1 KiB
Rust
30 lines
1.1 KiB
Rust
//@ compile-flags: -O -Zmir-opt-level=2
|
|
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
|
|
|
#![crate_type = "lib"]
|
|
|
|
// EMIT_MIR array_eq.eq_odd_length.runtime-optimized.after.mir
|
|
pub unsafe fn eq_odd_length<T: Copy>(a: &[u8; 3], b: &[u8; 3]) -> bool {
|
|
// CHECK-LABEL: fn eq_odd_length(_1: &[u8; 3], _2: &[u8; 3]) -> bool
|
|
// CHECK: _0 = raw_eq::<[u8; 3]>(move _1, move _2)
|
|
a == b
|
|
}
|
|
|
|
// EMIT_MIR array_eq.eq_ipv4.runtime-optimized.after.mir
|
|
pub unsafe fn eq_ipv4<T: Copy>(a: &[u8; 4], b: &[u8; 4]) -> bool {
|
|
// CHECK-LABEL: fn eq_ipv4(_1: &[u8; 4], _2: &[u8; 4]) -> bool
|
|
// CHECK: [[A:_.+]] = copy (*_1) as u32 (Transmute);
|
|
// CHECK: [[B:_.+]] = copy (*_2) as u32 (Transmute);
|
|
// CHECK: _0 = Eq(move [[A]], move [[B]]);
|
|
a == b
|
|
}
|
|
|
|
// EMIT_MIR array_eq.eq_ipv6.runtime-optimized.after.mir
|
|
pub unsafe fn eq_ipv6<T: Copy>(a: &[u16; 8], b: &[u16; 8]) -> bool {
|
|
// CHECK-LABEL: fn eq_ipv6(_1: &[u16; 8], _2: &[u16; 8]) -> bool
|
|
// CHECK: [[A:_.+]] = copy (*_1) as u128 (Transmute);
|
|
// CHECK: [[B:_.+]] = copy (*_2) as u128 (Transmute);
|
|
// CHECK: _0 = Eq(move [[A]], move [[B]]);
|
|
a == b
|
|
}
|