[meta] Avoid unwrapping instructions several times during legalization;

This avoids doing multiple unpacking of the InstructionData for a single
legalization, improving readability and reducing size of the generated
code. For instance, icmp had to unpack the format once per IntCC
condition code.
This commit is contained in:
Benjamin Bouvier
2019-07-04 18:28:12 +02:00
parent ca53090f1b
commit 350b3b2406
5 changed files with 131 additions and 57 deletions

View File

@@ -78,7 +78,7 @@ use crate::unique_table::UniqueSeqTable;
fn emit_instp(instp: &InstructionPredicate, has_func: bool, fmt: &mut Formatter) {
if instp.is_type_predicate() {
fmt.line("let args = inst.arguments(&func.dfg.value_lists);");
fmt.line(instp.rust_predicate());
fmt.line(instp.rust_predicate("func"));
return;
}
@@ -127,7 +127,7 @@ fn emit_instp(instp: &InstructionPredicate, has_func: bool, fmt: &mut Formatter)
// Silence dead argument.
fmt.line("let _ = func;");
}
fmtln!(fmt, "return {};", instp.rust_predicate());
fmtln!(fmt, "return {};", instp.rust_predicate("func"));
});
fmtln!(fmt, "}");