diff options
| author | Levente Kurusa <lkurusa@acm.org> | 2018-10-28 23:57:45 +0100 |
|---|---|---|
| committer | Levente Kurusa <lkurusa@acm.org> | 2018-10-28 23:57:45 +0100 |
| commit | 32ee20f45534fe6af73bf9e51e942ee1b6d34635 (patch) | |
| tree | fa281fdce85eec3940d9bcec61d16e869d0d3f51 | |
| parent | 4d7f08b1702840a4d8ade9cd9e9f83743e3241fd (diff) | |
| download | rust-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.rs | 13 |
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, |
