summaryrefslogtreecommitdiffstats
path: root/tests/codegen/match-optimizes-away.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen/match-optimizes-away.rs')
-rw-r--r--tests/codegen/match-optimizes-away.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/codegen/match-optimizes-away.rs b/tests/codegen/match-optimizes-away.rs
new file mode 100644
index 000000000..8f66c518c
--- /dev/null
+++ b/tests/codegen/match-optimizes-away.rs
@@ -0,0 +1,34 @@
+//
+// no-system-llvm
+// compile-flags: -O
+#![crate_type="lib"]
+
+pub enum Three { A, B, C }
+
+#[repr(u16)]
+pub enum Four { A, B, C, D }
+
+#[no_mangle]
+pub fn three_valued(x: Three) -> Three {
+ // CHECK-LABEL: @three_valued
+ // CHECK-NEXT: {{^.*:$}}
+ // CHECK-NEXT: ret i8 %0
+ match x {
+ Three::A => Three::A,
+ Three::B => Three::B,
+ Three::C => Three::C,
+ }
+}
+
+#[no_mangle]
+pub fn four_valued(x: Four) -> Four {
+ // CHECK-LABEL: @four_valued
+ // CHECK-NEXT: {{^.*:$}}
+ // CHECK-NEXT: ret i16 %0
+ match x {
+ Four::A => Four::A,
+ Four::B => Four::B,
+ Four::C => Four::C,
+ Four::D => Four::D,
+ }
+}