3ec4eeddef
There's no need for the `const_eval_select` dance here. And while I originally wrote the `.try_into().unwrap_unchecked()` implementation here, it's kinda a mess in MIR -- this new one is substantially simpler, as shown by the old one being above the inlining threshold but the new one being below it.
31 lines
1.2 KiB
Rust
31 lines
1.2 KiB
Rust
// EMIT_MIR_FOR_EACH_PANIC_STRATEGY
|
|
#![crate_type = "lib"]
|
|
#![feature(unchecked_math)]
|
|
|
|
// ignore-debug: the debug assertions prevent the inlining we are testing for
|
|
// compile-flags: -Zmir-opt-level=2 -Zinline-mir
|
|
|
|
// EMIT_MIR unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.diff
|
|
// EMIT_MIR unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.mir
|
|
pub unsafe fn unchecked_shl_unsigned_smaller(a: u16, b: u32) -> u16 {
|
|
a.unchecked_shl(b)
|
|
}
|
|
|
|
// EMIT_MIR unchecked_shifts.unchecked_shr_signed_smaller.Inline.diff
|
|
// EMIT_MIR unchecked_shifts.unchecked_shr_signed_smaller.PreCodegen.after.mir
|
|
pub unsafe fn unchecked_shr_signed_smaller(a: i16, b: u32) -> i16 {
|
|
a.unchecked_shr(b)
|
|
}
|
|
|
|
// EMIT_MIR unchecked_shifts.unchecked_shl_unsigned_bigger.Inline.diff
|
|
// EMIT_MIR unchecked_shifts.unchecked_shl_unsigned_bigger.PreCodegen.after.mir
|
|
pub unsafe fn unchecked_shl_unsigned_bigger(a: u64, b: u32) -> u64 {
|
|
a.unchecked_shl(b)
|
|
}
|
|
|
|
// EMIT_MIR unchecked_shifts.unchecked_shr_signed_bigger.Inline.diff
|
|
// EMIT_MIR unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.mir
|
|
pub unsafe fn unchecked_shr_signed_bigger(a: i64, b: u32) -> i64 {
|
|
a.unchecked_shr(b)
|
|
}
|