Early return to decrease indentation
This commit is contained in:
parent
8e548bf8d6
commit
ed7c6819e4
1 changed files with 40 additions and 45 deletions
|
@ -1186,52 +1186,47 @@ impl<'hir> LoweringContext<'_, 'hir> {
|
||||||
input| {
|
input| {
|
||||||
match used_regs.entry(r) {
|
match used_regs.entry(r) {
|
||||||
Entry::Occupied(o) => {
|
Entry::Occupied(o) => {
|
||||||
if !skip {
|
if skip {
|
||||||
skip = true;
|
return;
|
||||||
|
|
||||||
let idx2 = *o.get();
|
|
||||||
let op2 = &operands[idx2];
|
|
||||||
let op_sp2 = asm.operands[idx2].1;
|
|
||||||
let reg2 = match op2.reg() {
|
|
||||||
Some(asm::InlineAsmRegOrRegClass::Reg(r)) => r,
|
|
||||||
_ => unreachable!(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let msg = format!(
|
|
||||||
"register `{}` conflicts with register `{}`",
|
|
||||||
reg.name(),
|
|
||||||
reg2.name()
|
|
||||||
);
|
|
||||||
let mut err = sess.struct_span_err(op_sp, &msg);
|
|
||||||
err.span_label(
|
|
||||||
op_sp,
|
|
||||||
&format!("register `{}`", reg.name()),
|
|
||||||
);
|
|
||||||
err.span_label(
|
|
||||||
op_sp2,
|
|
||||||
&format!("register `{}`", reg2.name()),
|
|
||||||
);
|
|
||||||
|
|
||||||
match (op, op2) {
|
|
||||||
(
|
|
||||||
hir::InlineAsmOperand::In { .. },
|
|
||||||
hir::InlineAsmOperand::Out { late, .. },
|
|
||||||
)
|
|
||||||
| (
|
|
||||||
hir::InlineAsmOperand::Out { late, .. },
|
|
||||||
hir::InlineAsmOperand::In { .. },
|
|
||||||
) => {
|
|
||||||
assert!(!*late);
|
|
||||||
let out_op_sp = if input { op_sp2 } else { op_sp };
|
|
||||||
let msg = "use `lateout` instead of \
|
|
||||||
`out` to avoid conflict";
|
|
||||||
err.span_help(out_op_sp, msg);
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
|
|
||||||
err.emit();
|
|
||||||
}
|
}
|
||||||
|
skip = true;
|
||||||
|
|
||||||
|
let idx2 = *o.get();
|
||||||
|
let op2 = &operands[idx2];
|
||||||
|
let op_sp2 = asm.operands[idx2].1;
|
||||||
|
let reg2 = match op2.reg() {
|
||||||
|
Some(asm::InlineAsmRegOrRegClass::Reg(r)) => r,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let msg = format!(
|
||||||
|
"register `{}` conflicts with register `{}`",
|
||||||
|
reg.name(),
|
||||||
|
reg2.name()
|
||||||
|
);
|
||||||
|
let mut err = sess.struct_span_err(op_sp, &msg);
|
||||||
|
err.span_label(op_sp, &format!("register `{}`", reg.name()));
|
||||||
|
err.span_label(op_sp2, &format!("register `{}`", reg2.name()));
|
||||||
|
|
||||||
|
match (op, op2) {
|
||||||
|
(
|
||||||
|
hir::InlineAsmOperand::In { .. },
|
||||||
|
hir::InlineAsmOperand::Out { late, .. },
|
||||||
|
)
|
||||||
|
| (
|
||||||
|
hir::InlineAsmOperand::Out { late, .. },
|
||||||
|
hir::InlineAsmOperand::In { .. },
|
||||||
|
) => {
|
||||||
|
assert!(!*late);
|
||||||
|
let out_op_sp = if input { op_sp2 } else { op_sp };
|
||||||
|
let msg = "use `lateout` instead of \
|
||||||
|
`out` to avoid conflict";
|
||||||
|
err.span_help(out_op_sp, msg);
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
|
}
|
||||||
|
|
||||||
|
err.emit();
|
||||||
}
|
}
|
||||||
Entry::Vacant(v) => {
|
Entry::Vacant(v) => {
|
||||||
v.insert(idx);
|
v.insert(idx);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue