From f1222dce10bd605b092a23d0a913a2e83e8e76ec Mon Sep 17 00:00:00 2001 From: Benjamin Bouvier Date: Tue, 2 Jul 2019 18:30:04 +0200 Subject: [PATCH] [meta] Legalization: emit typeof type variables for results in all the cases; --- cranelift/codegen/meta/src/gen_legalizer.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cranelift/codegen/meta/src/gen_legalizer.rs b/cranelift/codegen/meta/src/gen_legalizer.rs index 545928db1e..f9cf8ba1ae 100644 --- a/cranelift/codegen/meta/src/gen_legalizer.rs +++ b/cranelift/codegen/meta/src/gen_legalizer.rs @@ -134,6 +134,21 @@ fn unwrap_inst( .get(var_pool.get(def.defined_vars[0]).dst_def.unwrap()) .to_comment_string(var_pool) )); + + fmt.line("let results = pos.func.dfg.inst_results(inst);"); + for (i, &var_index) in def.defined_vars.iter().enumerate() { + let var = var_pool.get(var_index); + fmtln!(fmt, "let {} = &results[{}];", var.name, i); + if var.has_free_typevar() { + fmtln!( + fmt, + "let typeof_{} = pos.func.dfg.value_type(*{});", + var.name, + var.name + ); + } + } + replace_inst = true; } else { // Boring case: Detach the result values, capture them in locals.