summaryrefslogtreecommitdiffstats
path: root/tests/ui/match/issue-115681.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/match/issue-115681.rs')
-rw-r--r--tests/ui/match/issue-115681.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/ui/match/issue-115681.rs b/tests/ui/match/issue-115681.rs
new file mode 100644
index 000000000..c41e808e1
--- /dev/null
+++ b/tests/ui/match/issue-115681.rs
@@ -0,0 +1,32 @@
+// 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);
+}