1 //
2 // no-system-llvm
3 // compile-flags: -O
4 #![crate_type="lib"]
5 
6 pub enum Three { A, B, C }
7 
8 #[repr(u16)]
9 pub enum Four { A, B, C, D }
10 
11 #[no_mangle]
three_valued(x: Three) -> Three12 pub fn three_valued(x: Three) -> Three {
13     // CHECK-LABEL: @three_valued
14     // CHECK-NEXT: {{^.*:$}}
15     // CHECK-NEXT: ret i8 %0
16     match x {
17         Three::A => Three::A,
18         Three::B => Three::B,
19         Three::C => Three::C,
20     }
21 }
22 
23 #[no_mangle]
four_valued(x: Four) -> Four24 pub fn four_valued(x: Four) -> Four {
25     // CHECK-LABEL: @four_valued
26     // CHECK-NEXT: {{^.*:$}}
27     // CHECK-NEXT: ret i16 %0
28     match x {
29         Four::A => Four::A,
30         Four::B => Four::B,
31         Four::C => Four::C,
32         Four::D => Four::D,
33     }
34 }
35