about summary refs log tree commit diff
path: root/src/test/codegen
diff options
context:
space:
mode:
authorroblabla <unfiltered@roblab.la>2019-10-25 14:44:21 +0000
committerroblabla <unfiltered@roblab.la>2019-10-25 16:04:20 +0000
commit61732804e215d251f12802445edc43861c1f55e7 (patch)
tree082261c8a05db68e2250c07b44d1a3688a3df2aa /src/test/codegen
parent093ec70b1e4da3d814a137f5aea6f4ff75ad3399 (diff)
downloadrust-61732804e215d251f12802445edc43861c1f55e7.tar.gz
rust-61732804e215d251f12802445edc43861c1f55e7.zip
Fix EFIABI test
Use revisions to run the EFIABI in multiple configurations, compiling
for each supported UEFI platform, and checking the ABI generated in the
LLVM IR is correct.

Use no_core to make it easier to test.
Diffstat (limited to 'src/test/codegen')
-rw-r--r--src/test/codegen/abi-efiapi.rs33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/test/codegen/abi-efiapi.rs b/src/test/codegen/abi-efiapi.rs
index 471f572375a..cfd31ef1a31 100644
--- a/src/test/codegen/abi-efiapi.rs
+++ b/src/test/codegen/abi-efiapi.rs
@@ -1,20 +1,29 @@
 // Checks if the correct annotation for the efiapi ABI is passed to llvm.
 
+// revisions:x86_64 i686 aarch64 arm riscv
+
+//[x86_64] compile-flags: --target x86_64-unknown-uefi
+//[i686] compile-flags: --target i686-unknown-linux-musl
+//[aarch64] compile-flags: --target aarch64-unknown-none
+//[arm] compile-flags: --target armv7r-none-eabi
+//[riscv] compile-flags: --target riscv64gc-unknown-none-elf
 // compile-flags: -C no-prepopulate-passes
 
 #![crate_type = "lib"]
-#![feature(abi_efiapi)]
+#![feature(no_core, lang_items, abi_efiapi)]
+#![no_core]
 
-// CHECK: define win64 i64 @has_efiapi
-#[no_mangle]
-#[cfg(target_arch = "x86_64")]
-pub extern "efiapi" fn has_efiapi(a: i64) -> i64 {
-    a * 2
-}
+#[lang="sized"]
+trait Sized { }
+#[lang="freeze"]
+trait Freeze { }
+#[lang="copy"]
+trait Copy { }
 
-// CHECK: define c i64 @has_efiapi
+//x86_64: define win64cc void @has_efiapi
+//i686: define void @has_efiapi
+//aarch64: define void @has_efiapi
+//arm: define void @has_efiapi
+//riscv: define void @has_efiapi
 #[no_mangle]
-#[cfg(not(target_arch = "x86_64"))]
-pub extern "efiapi" fn has_efiapi(a: i64) -> i64 {
-    a * 2
-}
+pub extern "efiapi" fn has_efiapi() {}