about summary refs log tree commit diff
path: root/src/test/ui/llvm-asm/llvm-asm-out-assign-imm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/llvm-asm/llvm-asm-out-assign-imm.rs')
-rw-r--r--src/test/ui/llvm-asm/llvm-asm-out-assign-imm.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/test/ui/llvm-asm/llvm-asm-out-assign-imm.rs b/src/test/ui/llvm-asm/llvm-asm-out-assign-imm.rs
new file mode 100644
index 00000000000..1a46879f9f2
--- /dev/null
+++ b/src/test/ui/llvm-asm/llvm-asm-out-assign-imm.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;
+    x = 1;
+    foo(x);
+    unsafe {
+        llvm_asm!("mov $1, $0" : "=r"(x) : "r"(5));
+        //~^ ERROR cannot assign twice to immutable variable `x`
+    }
+    foo(x);
+}
+
+#[cfg(not(any(target_arch = "x86",
+              target_arch = "x86_64",
+              target_arch = "arm",
+              target_arch = "aarch64")))]
+pub fn main() {}