about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLevente Kurusa <lkurusa@acm.org>2018-10-28 23:57:45 +0100
committerLevente Kurusa <lkurusa@acm.org>2018-10-28 23:57:45 +0100
commit32ee20f45534fe6af73bf9e51e942ee1b6d34635 (patch)
treefa281fdce85eec3940d9bcec61d16e869d0d3f51
parent4d7f08b1702840a4d8ade9cd9e9f83743e3241fd (diff)
downloadrust-32ee20f45534fe6af73bf9e51e942ee1b6d34635.tar.gz
rust-32ee20f45534fe6af73bf9e51e942ee1b6d34635.zip
inline-asm: emit as many E0669 errors as we can
Signed-off-by: Levente Kurusa <lkurusa@acm.org>
-rw-r--r--src/librustc_codegen_llvm/mir/statement.rs13
1 files changed, 5 insertions, 8 deletions
diff --git a/src/librustc_codegen_llvm/mir/statement.rs b/src/librustc_codegen_llvm/mir/statement.rs
index 2a873fb4cbb..50e3dc9d53f 100644
--- a/src/librustc_codegen_llvm/mir/statement.rs
+++ b/src/librustc_codegen_llvm/mir/statement.rs
@@ -84,21 +84,18 @@ impl FunctionCx<'a, 'll, 'tcx> {
                 }).collect();
 
                 let input_vals = inputs.iter()
-                    .try_fold(Vec::with_capacity(inputs.len()), |mut acc, (span, input)| {
+                    .fold(Vec::with_capacity(inputs.len()), |mut acc, (span, input)| {
                         let op = self.codegen_operand(&bx, input);
                         if let OperandValue::Immediate(_) = op.val {
                             acc.push(op.immediate());
-                            Ok(acc)
                         } else {
-                            Err(span)
+                            span_err!(bx.sess(), span.to_owned(), E0669,
+                                     "invalid value for constraint in inline assembly");
                         }
+                        acc
                 });
 
-                if let Err(span) = input_vals {
-                    span_err!(bx.sess(), span.to_owned(), E0669,
-                             "invalid value for constraint in inline assembly");
-                } else {
-                    let input_vals = input_vals.unwrap();
+                if input_vals.len() == inputs.len() {
                     let res = asm::codegen_inline_asm(&bx, asm, outputs, input_vals);
                     if !res {
                         span_err!(bx.sess(), statement.source_info.span, E0668,