about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-01-18 22:56:44 +0100
committerGitHub <noreply@github.com>2019-01-18 22:56:44 +0100
commit0eb4bdc5f18a64d74437b5824e3e6788415fa20f (patch)
tree27d3e441853e5e0b00fcf0f4f0022bb67c44d60a
parentd2300afd6605843e79b9cb6bec1ebc752e8ba381 (diff)
parent0edc5c9779cbe5a3d244f3915ebb05813973e592 (diff)
downloadrust-0eb4bdc5f18a64d74437b5824e3e6788415fa20f.tar.gz
rust-0eb4bdc5f18a64d74437b5824e3e6788415fa20f.zip
Rollup merge of #57657 - AB1908:regression-test-case, r=nikomatsakis
Add regression test to close #53787

Fixes #53787
-rw-r--r--src/test/ui/issue-53787-inline-assembler-macro.rs23
-rw-r--r--src/test/ui/issue-53787-inline-assembler-macro.stderr9
2 files changed, 32 insertions, 0 deletions
diff --git a/src/test/ui/issue-53787-inline-assembler-macro.rs b/src/test/ui/issue-53787-inline-assembler-macro.rs
new file mode 100644
index 00000000000..937bce1b655
--- /dev/null
+++ b/src/test/ui/issue-53787-inline-assembler-macro.rs
@@ -0,0 +1,23 @@
+// Regression test for Issue #53787: Fix ICE when creating a label in inline assembler with macros.
+
+#![feature(asm)]
+
+macro_rules! fake_jump {
+    ($id:expr) => {
+        unsafe {
+            asm!(
+            "
+            jmp $0
+            lea eax, [ebx]
+            xor eax, 0xDEADBEEF
+            retn
+            $0:
+            "::"0"($id)::"volatile", "intel");
+        }
+    };
+}
+
+fn main() {
+    fake_jump!("FirstFunc"); //~ ERROR invalid value for constraint in inline assembly
+    println!("Hello, world!");
+}
diff --git a/src/test/ui/issue-53787-inline-assembler-macro.stderr b/src/test/ui/issue-53787-inline-assembler-macro.stderr
new file mode 100644
index 00000000000..69f380bdc9c
--- /dev/null
+++ b/src/test/ui/issue-53787-inline-assembler-macro.stderr
@@ -0,0 +1,9 @@
+error[E0669]: invalid value for constraint in inline assembly
+  --> $DIR/issue-53787-inline-assembler-macro.rs:21:16
+   |
+LL |     fake_jump!("FirstFunc"); //~ ERROR invalid value for constraint in inline assembly
+   |                ^^^^^^^^^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0669`.