2021-08-08 06:34:46 -05:00
|
|
|
// Check that niche selection prefers zero and that jumps are optimized away.
|
|
|
|
// See https://github.com/rust-lang/rust/pull/87794
|
2024-02-22 06:10:29 -06:00
|
|
|
//@ assembly-output: emit-asm
|
|
|
|
//@ only-x86
|
|
|
|
//@ compile-flags: -Copt-level=3
|
2021-08-08 06:34:46 -05:00
|
|
|
|
|
|
|
#![crate_type = "lib"]
|
|
|
|
|
|
|
|
#[repr(u8)]
|
|
|
|
pub enum Size {
|
|
|
|
One = 1,
|
|
|
|
Two = 2,
|
|
|
|
Three = 3,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[no_mangle]
|
|
|
|
pub fn handle(x: Option<Size>) -> u8 {
|
|
|
|
match x {
|
|
|
|
None => 0,
|
|
|
|
Some(size) => size as u8,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// There should be no jumps in output
|
|
|
|
// CHECK-NOT: j
|