| //@ run-pass | |
| //@ compile-flags: -C opt-level=1 | |
| // Make sure LLVM does not miscompile this match. | |
| fn main() { | |
| enum Bits { | |
| None = 0x00, | |
| Low = 0x40, | |
| High = 0x80, | |
| Both = 0xC0, | |
| } | |
| let value = Box::new(0x40u8); | |
| let mut out = Box::new(0u8); | |
| let bits = match *value { | |
| 0x00 => Bits::None, | |
| 0x40 => Bits::Low, | |
| 0x80 => Bits::High, | |
| 0xC0 => Bits::Both, | |
| _ => return, | |
| }; | |
| match bits { | |
| Bits::None | Bits::Low => { | |
| *out = 1; | |
| } | |
| _ => (), | |
| } | |
| assert_eq!(*out, 1); | |
| } |