summaryrefslogtreecommitdiffstats
path: root/tests/codegen/match-optimizes-away.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:03 +0000
commit64d98f8ee037282c35007b64c2649055c56af1db (patch)
tree5492bcf97fce41ee1c0b1cc2add283f3e66cdab0 /tests/codegen/match-optimizes-away.rs
parentAdding debian version 1.67.1+dfsg1-1. (diff)
downloadrustc-64d98f8ee037282c35007b64c2649055c56af1db.tar.xz
rustc-64d98f8ee037282c35007b64c2649055c56af1db.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
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,
+ }
+}