summaryrefslogtreecommitdiffstats
path: root/src/test/ui/asm/x86_64/bad-clobber-abi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/asm/x86_64/bad-clobber-abi.rs')
-rw-r--r--src/test/ui/asm/x86_64/bad-clobber-abi.rs32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/asm/x86_64/bad-clobber-abi.rs b/src/test/ui/asm/x86_64/bad-clobber-abi.rs
new file mode 100644
index 000000000..ddcd2065b
--- /dev/null
+++ b/src/test/ui/asm/x86_64/bad-clobber-abi.rs
@@ -0,0 +1,32 @@
+// needs-asm-support
+// only-x86_64
+
+use std::arch::asm;
+
+// checks various modes of failure for the `clobber_abi` argument (after parsing)
+
+fn main() {
+ unsafe {
+ asm!("", clobber_abi("C"));
+ asm!("", clobber_abi("foo"));
+ //~^ ERROR invalid ABI for `clobber_abi`
+ asm!("", clobber_abi("C", "foo"));
+ //~^ ERROR invalid ABI for `clobber_abi`
+ asm!("", clobber_abi("C", "C"));
+ //~^ ERROR `C` ABI specified multiple times
+ asm!("", clobber_abi("win64", "sysv64"));
+ asm!("", clobber_abi("win64", "efiapi"));
+ //~^ ERROR `win64` ABI specified multiple times
+ asm!("", clobber_abi("C", "foo", "C"));
+ //~^ ERROR invalid ABI for `clobber_abi`
+ //~| ERROR `C` ABI specified multiple times
+ asm!("", clobber_abi("win64", "foo", "efiapi"));
+ //~^ ERROR invalid ABI for `clobber_abi`
+ //~| ERROR `win64` ABI specified multiple times
+ asm!("", clobber_abi("C"), clobber_abi("C"));
+ //~^ ERROR `C` ABI specified multiple times
+ asm!("", clobber_abi("win64"), clobber_abi("sysv64"));
+ asm!("", clobber_abi("win64"), clobber_abi("efiapi"));
+ //~^ ERROR `win64` ABI specified multiple times
+ }
+}