// compile-flags: -O // min-llvm-version: 17 // only-x86_64-unknown-linux-gnu // We want to check that this function does not mis-optimize to loop jumping. #![crate_type = "lib"] #[repr(C)] pub enum Expr { Sum, // must have more than usize data Sub(usize, u8), } #[no_mangle] pub extern "C" fn issue_114312(expr: Expr) { // CHECK-LABEL: @issue_114312( // CHECK-NOT: readonly // CHECK-SAME: byval // CHECK-NEXT: start: // CHECK-NEXT: ret void match expr { Expr::Sum => {} Expr::Sub(_, _) => issue_114312(Expr::Sum), } }