From 32ee20f45534fe6af73bf9e51e942ee1b6d34635 Mon Sep 17 00:00:00 2001 From: Levente Kurusa Date: Sun, 28 Oct 2018 23:57:45 +0100 Subject: [PATCH] inline-asm: emit as many E0669 errors as we can Signed-off-by: Levente Kurusa --- src/librustc_codegen_llvm/mir/statement.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/librustc_codegen_llvm/mir/statement.rs b/src/librustc_codegen_llvm/mir/statement.rs index 2a873fb4cbb1..50e3dc9d53f5 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,