about summary refs log tree commit diff
path: root/tests/codegen
diff options
context:
space:
mode:
authorjdonszelmann <jonabent@gmail.com>2024-08-22 19:48:39 +0200
committerjdonszelmann <jonabent@gmail.com>2024-08-27 17:17:47 +0200
commitc3000ad3baf4c135abc5740c09f726a8862c2ac3 (patch)
tree59b30c4a499ebf0b7a6d7f37df1b40667b281154 /tests/codegen
parent739b1fdb158a3216d1b592d0d79d77d256f59815 (diff)
downloadrust-c3000ad3baf4c135abc5740c09f726a8862c2ac3.tar.gz
rust-c3000ad3baf4c135abc5740c09f726a8862c2ac3.zip
add repr to the allowlist for naked functions, and test that it works
Diffstat (limited to 'tests/codegen')
-rw-r--r--tests/codegen/naked-fn/aligned.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/codegen/naked-fn/aligned.rs b/tests/codegen/naked-fn/aligned.rs
new file mode 100644
index 00000000000..d5faac44836
--- /dev/null
+++ b/tests/codegen/naked-fn/aligned.rs
@@ -0,0 +1,20 @@
+//@ compile-flags: -C no-prepopulate-passes -Copt-level=0
+//@ needs-asm-support
+//@ ignore-arm no "ret" mnemonic
+
+#![crate_type = "lib"]
+#![feature(naked_functions, fn_align)]
+use std::arch::asm;
+
+// CHECK: Function Attrs: naked
+// CHECK-NEXT: define{{.*}}void @naked_empty()
+// CHECK: align 16
+#[repr(align(16))]
+#[no_mangle]
+#[naked]
+pub unsafe extern "C" fn naked_empty() {
+    // CHECK-NEXT: start:
+    // CHECK-NEXT: call void asm
+    // CHECK-NEXT: unreachable
+    asm!("ret", options(noreturn));
+}