about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc_codegen_llvm/llvm/diagnostic.rs4
-rw-r--r--src/test/ui/issues/issue-23458.rs10
-rw-r--r--src/test/ui/issues/issue-23458.stderr17
3 files changed, 29 insertions, 2 deletions
diff --git a/src/librustc_codegen_llvm/llvm/diagnostic.rs b/src/librustc_codegen_llvm/llvm/diagnostic.rs
index a8d272f157c..04e65ac4233 100644
--- a/src/librustc_codegen_llvm/llvm/diagnostic.rs
+++ b/src/librustc_codegen_llvm/llvm/diagnostic.rs
@@ -88,7 +88,7 @@ impl OptimizationDiagnostic<'ll> {
 pub struct InlineAsmDiagnostic<'ll> {
     pub cookie: c_uint,
     pub message: &'ll Twine,
-    pub instruction: &'ll Value,
+    pub instruction: Option<&'ll Value>,
 }
 
 impl InlineAsmDiagnostic<'ll> {
@@ -107,7 +107,7 @@ impl InlineAsmDiagnostic<'ll> {
         InlineAsmDiagnostic {
             cookie,
             message: message.unwrap(),
-            instruction: instruction.unwrap(),
+            instruction,
         }
     }
 }
diff --git a/src/test/ui/issues/issue-23458.rs b/src/test/ui/issues/issue-23458.rs
new file mode 100644
index 00000000000..90b3f1f9714
--- /dev/null
+++ b/src/test/ui/issues/issue-23458.rs
@@ -0,0 +1,10 @@
+#![feature(asm)]
+
+// only-x86_64
+
+fn main() {
+    unsafe {
+        asm!("int $3"); //~ ERROR too few operands for instruction
+                        //~| ERROR invalid operand in inline asm
+    }
+}
diff --git a/src/test/ui/issues/issue-23458.stderr b/src/test/ui/issues/issue-23458.stderr
new file mode 100644
index 00000000000..aff0f82af6f
--- /dev/null
+++ b/src/test/ui/issues/issue-23458.stderr
@@ -0,0 +1,17 @@
+error: invalid operand in inline asm: 'int $3'
+  --> $DIR/issue-23458.rs:7:9
+   |
+LL |         asm!("int $3");
+   |         ^^^^^^^^^^^^^^^
+
+error: <inline asm>:1:2: error: too few operands for instruction
+        int 
+        ^
+
+  --> $DIR/issue-23458.rs:7:9
+   |
+LL |         asm!("int $3");
+   |         ^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+