about summary refs log tree commit diff
path: root/src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs')
-rw-r--r--src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs b/src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs
new file mode 100644
index 00000000000..b791ec3e8c8
--- /dev/null
+++ b/src/test/ui/llvm-asm/llvm-asm-in-bad-modifier.rs
@@ -0,0 +1,34 @@
+// ignore-s390x
+// ignore-emscripten
+// ignore-powerpc
+// ignore-powerpc64
+// ignore-powerpc64le
+// ignore-sparc
+// ignore-sparc64
+// ignore-mips
+// ignore-mips64
+
+#![feature(llvm_asm)]
+
+fn foo(x: isize) { println!("{}", x); }
+
+#[cfg(any(target_arch = "x86",
+          target_arch = "x86_64",
+          target_arch = "arm",
+          target_arch = "aarch64"))]
+pub fn main() {
+    let x: isize;
+    let y: isize;
+    unsafe {
+        llvm_asm!("mov $1, $0" : "=r"(x) : "=r"(5)); //~ ERROR operand constraint contains '='
+        llvm_asm!("mov $1, $0" : "=r"(y) : "+r"(5)); //~ ERROR operand constraint contains '+'
+    }
+    foo(x);
+    foo(y);
+}
+
+#[cfg(not(any(target_arch = "x86",
+              target_arch = "x86_64",
+              target_arch = "arm",
+              target_arch = "aarch64")))]
+pub fn main() {}