summaryrefslogtreecommitdiffstats
path: root/tests/assembly/x86_64-no-jump-tables.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/assembly/x86_64-no-jump-tables.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/assembly/x86_64-no-jump-tables.rs b/tests/assembly/x86_64-no-jump-tables.rs
new file mode 100644
index 000000000..007c3591a
--- /dev/null
+++ b/tests/assembly/x86_64-no-jump-tables.rs
@@ -0,0 +1,34 @@
+// Test that jump tables are (not) emitted when the `-Zno-jump-tables`
+// flag is (not) set.
+
+// revisions: unset set
+// assembly-output: emit-asm
+// compile-flags: -O
+// [set] compile-flags: -Zno-jump-tables
+// only-x86_64
+
+#![crate_type = "lib"]
+
+extern "C" {
+ fn bar1();
+ fn bar2();
+ fn bar3();
+ fn bar4();
+ fn bar5();
+ fn bar6();
+}
+
+// CHECK-LABEL: foo:
+#[no_mangle]
+pub unsafe fn foo(x: i32) {
+ // unset: LJTI0_0
+ // set-NOT: LJTI0_0
+ match x {
+ 1 => bar1(),
+ 2 => bar2(),
+ 3 => bar3(),
+ 4 => bar4(),
+ 5 => bar5(),
+ _ => bar6(),
+ }
+}