From c7dfcb308a946f059685ba14e18c247a052aae36 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Tue, 8 Oct 2024 19:57:47 -0400 Subject: [PATCH 01/10] feat(compiler): Improve constant pattern matching --- compiler/src/middle_end/matchcomp.re | 188 +++++++++++++++++++++++---- 1 file changed, 164 insertions(+), 24 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index c1275ad5bb..4c92c577af 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -57,6 +57,7 @@ type decision_tree = with an optional default branch. */ Switch( switch_type, + option(Ident.t), list((int, decision_tree)), option(decision_tree), ) @@ -84,6 +85,12 @@ and matrix_type = | ConstantMatrix and switch_type = + | CharSwitch + | Int8Switch + | Int16Switch + | UInt8Switch + | UInt16Switch + | WasmI32Switch | ConstructorSwitch | ArraySwitch @@ -556,6 +563,20 @@ let equality_type = | Const_wasmf32(_) => PhysicalEquality(WasmF32) | Const_wasmf64(_) => PhysicalEquality(WasmF64); +let get_constant_tag = const => + switch (const) { + | Const_char(char) => + let uchar = List.hd @@ Utf8.decodeUtf8String(char); + let uchar_int: int = Utf8__Uchar.toInt(uchar); + Some((CharSwitch, uchar_int)); + | Const_int8(i) => Some((Int8Switch, Int32.to_int(i))) + | Const_int16(i) => Some((Int16Switch, Int32.to_int(i))) + | Const_uint8(i) => Some((UInt8Switch, Int32.to_int(i))) + | Const_uint16(i) => Some((UInt16Switch, Int32.to_int(i))) + | Const_wasmi32(i) => Some((WasmI32Switch, Int32.to_int(i))) + | _ => None + }; + let rec compile_matrix = mtx => switch (mtx) { | [] => Fail /* No branches to match. */ @@ -606,7 +627,7 @@ let rec compile_matrix = mtx => } else { None; }; - Switch(ArraySwitch, switch_branches, default_tree); + Switch(ArraySwitch, None, switch_branches, default_tree); }; | RecordMatrix(labels) => let mtx = flatten_matrix(Array.length(labels), alias, mtx); @@ -661,11 +682,12 @@ let rec compile_matrix = mtx => } else { None; }; - Switch(ConstructorSwitch, switch_branches, default_tree); + Switch(ConstructorSwitch, None, switch_branches, default_tree); }; | ConstantMatrix => let constants = matrix_head_constants(mtx); - let equality_type = equality_type(List.hd(constants)); + let constant_type = List.hd(constants); + let equality_type = equality_type(constant_type); // TODO(#1185): Optimize physical equality checks into a switch. // We can also do partial switches on Numbers if some of the @@ -682,15 +704,51 @@ let rec compile_matrix = mtx => Fail; }; - List.fold_right( - (const, acc) => { - let specialized = specialize_constant_matrix(const, alias, mtx); - let result = compile_matrix(specialized); - Conditional((equality_type, const), alias, result, acc); - }, - constants, - default_tree, - ); + switch (constant_type) { + | Const_char(_) + | Const_int8(_) + | Const_int16(_) + | Const_uint8(_) + | Const_uint16(_) + | Const_wasmi32(_) => + let switch_type = + switch (get_constant_tag(constant_type)) { + | Some((tag, _)) => tag + | None => + failwith( + "Internal error: compile_matrix: no tag found for constant", + ) + }; + let cases = + List.fold_right( + (const, acc) => { + let specialized = specialize_constant_matrix(const, alias, mtx); + let result = compile_matrix(specialized); + let tag = + switch (get_constant_tag(const)) { + | Some((_, tag)) => tag + | None => + failwith( + "Internal error: compile_matrix: no tag found for constant", + ) + }; + [(tag, result), ...acc]; + }, + constants, + [], + ); + Switch(switch_type, Some(alias), cases, Some(default_tree)); + | _ => + List.fold_right( + (const, acc) => { + let specialized = specialize_constant_matrix(const, alias, mtx); + let result = compile_matrix(specialized); + Conditional((equality_type, const), alias, result, acc); + }, + constants, + default_tree, + ) + }; }; | _ => /* Adjust stack so non-wildcard column is on top */ @@ -1141,8 +1199,8 @@ module MatchTreeCompiler = { helpI, helpConst, ) - | Switch(switch_type, cases, default_tree) => - let (cur_value, rest_values) = + | Switch(switch_type, alias, cases, default_tree) => + let (cur_value, _) = switch (values) { | [] => failwith("Impossible (compile_tree_help): Empty value stack") | [hd, ...tl] => (hd, tl) @@ -1175,19 +1233,86 @@ module MatchTreeCompiler = { ArrayLength, cur_value, ) + | CharSwitch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + UntagChar, + cur_value, + ) + | Int8Switch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + UntagInt8, + cur_value, + ) + | Int16Switch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + UntagInt16, + cur_value, + ) + | UInt8Switch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + UntagUint8, + cur_value, + ) + | UInt16Switch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + UntagUint16, + cur_value, + ) + | WasmI32Switch => + Comp.imm( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + cur_value, + ) }; /* Fold left should be safe here, since there should be at most one branch - per constructor */ + per value */ + // TODO: optimize for a jump table, Comp.switch + // TODO: We need to check what percentage of our range is full + // TODO: branch_condition needs to be extracted into a switch + // TODO: body needs to be the switch code path + // TODO: Base becomes default let (switch_body_ans, switch_body_setup) = List.fold_left( ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_constructors"); + let cmp_id_name = Ident.create("match_cmp_values"); let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - /* If the constructor has the correct tag, execute this branch. + /* If the value has the correct tag, execute this branch. Otherwise continue. */ - let setup = [ - BLet( - cmp_id_name, + let branch_condition = + switch (switch_type) { + | CharSwitch + | Int8Switch + | Int16Switch + | UInt8Switch + | UInt16Switch + | WasmI32Switch => + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + WasmBinaryI32({ + wasm_op: Op_eq_int32, + arg_types: (Wasm_int32, Wasm_int32), + ret_type: Grain_bool, + }), + value_constr_id, + Imm.const( + ~loc=Location.dummy_loc, + Const_wasmi32(Int32.of_int(tag)), + ), + ) + | ConstructorSwitch + | ArraySwitch => Comp.prim2( ~loc=Location.dummy_loc, ~allocation_type=Unmanaged(WasmI32), @@ -1197,10 +1322,9 @@ module MatchTreeCompiler = { ~loc=Location.dummy_loc, Const_number(Const_number_int(Int64.of_int(tag))), ), - ), - Nonglobal, - ), - ]; + ) + }; + let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; let (tree_ans, tree_setup) = compile_tree_help( ~loc, @@ -1225,6 +1349,22 @@ module MatchTreeCompiler = { base, cases, ); + let switch_body_setup = + switch (alias) { + | Some(alias) => [ + BLet( + alias, + Comp.imm( + ~loc=Location.dummy_loc, + ~allocation_type=Managed, + cur_value, + ), + Nonglobal, + ), + ...switch_body_setup, + ] + | None => switch_body_setup + }; ( switch_body_ans, [ From 67b02979f8559f5a1ff90cb13952ce8817fdf056 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Tue, 8 Oct 2024 20:02:30 -0400 Subject: [PATCH 02/10] chore: Update snapshot tests --- .../basic_functionality.711a4824.0.snapshot | 81 +++++++++++-------- .../pattern_matching.be46eb0e.0.snapshot | 24 ++++-- 2 files changed, 65 insertions(+), 40 deletions(-) diff --git a/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot b/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot index 0f5bced37e..f9bea5b435 100644 --- a/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot +++ b/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot @@ -91,11 +91,13 @@ basic functionality › pattern_match_unsafe_wasm (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 6)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore @@ -107,18 +109,21 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstI32 5))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 2)))) + (MImmConst (MConstLiteral (MConstI32 5)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf @@ -127,18 +132,21 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstI32 4))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 3)))) + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf @@ -147,19 +155,22 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc (MImmConst (MConstI32 3))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf @@ -169,13 +180,16 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc (MImmConst (MConstI32 2))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) @@ -183,7 +197,7 @@ basic functionality › pattern_match_unsafe_wasm ((last_usage Unknown)))) ((immediate_desc (MImmConst - (MConstLiteral (MConstI32 5)))) + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -195,14 +209,17 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst (MConstI32 1))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding (MArgBind 1 (Unmanaged WasmI32)))) @@ -210,7 +227,7 @@ basic functionality › pattern_match_unsafe_wasm ((last_usage Last)))) ((immediate_desc (MImmConst - (MConstLiteral (MConstI32 6)))) + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -222,7 +239,7 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 5))) + (MImmConst (MConstI32 0))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc @@ -258,12 +275,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -292,12 +309,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -326,12 +343,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -360,12 +377,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -394,12 +411,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -428,12 +445,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) @@ -466,12 +483,12 @@ basic functionality › pattern_match_unsafe_wasm (((immediate_desc (MImmBinding (MArgBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func print_1125) + (MReturnCallKnown (func print_1126) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind print_1125 Managed))) + (MImmBinding (MGlobalBind print_1126 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) ((Unmanaged WasmI32)))) diff --git a/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot index f633dbaa05..42b8784b84 100644 --- a/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot @@ -30,10 +30,12 @@ pattern matching › low_level_constant_match_1 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore @@ -45,13 +47,16 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstI32 2))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))) @@ -71,12 +76,15 @@ pattern matching › low_level_constant_match_1 (MStore (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))) ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 2)))) + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf @@ -85,7 +93,7 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc (MImmConst (MConstI32 0))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate @@ -156,6 +164,6 @@ pattern matching › low_level_constant_match_1 ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1125) (name function_table_global))) + (global_function_table_offset ((stamp 1126) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) From 87423f50cefb005b94e3af1c3cbb23904e2670f3 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Wed, 9 Oct 2024 00:50:27 -0400 Subject: [PATCH 03/10] feat: Treat low level switch as wasm32 --- compiler/src/codegen/compcore.re | 2 +- compiler/src/middle_end/matchcomp.re | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/src/codegen/compcore.re b/compiler/src/codegen/compcore.re index 397346d504..bb3f9d756e 100644 --- a/compiler/src/codegen/compcore.re +++ b/compiler/src/codegen/compcore.re @@ -2656,7 +2656,7 @@ and compile_switch = (wasm_mod, env, arg, branches, default, ty) => { wasm_mod, create_table(stack), default_label, - untag_number(wasm_mod, compile_imm(wasm_mod, env, arg)), + compile_imm(wasm_mod, env, arg), default_value, ); let default_block_body = diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index 4c92c577af..3bc20baf7c 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -906,7 +906,7 @@ module MatchTreeCompiler = { ~allocation_type=Unmanaged(WasmI32), Imm.const( ~loc=Location.dummy_loc, - Const_number(Const_number_int(Int64.of_int(i))), + Const_wasmi32(Int32.of_int(i)), ), ), get_bindings(~mut_boxing, env, patterns, values, aliases), From 68c1a9a4fe236bc5dccf1e6fcab63cbd0fea5c25 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Wed, 9 Oct 2024 00:51:05 -0400 Subject: [PATCH 04/10] chore: Update snapshot tests and smallest program --- .../basic_functionality.711a4824.0.snapshot | 21 ++++++++++++------- .../pattern_matching.0539d13e.0.snapshot | 2 +- .../pattern_matching.05b60a1e.0.snapshot | 5 +++-- .../pattern_matching.0ad4ac05.0.snapshot | 21 ++++++++++++------- .../pattern_matching.0bb6923e.0.snapshot | 21 ++++++++++++------- .../pattern_matching.0fa61137.0.snapshot | 13 +++++++----- .../pattern_matching.14dc7554.0.snapshot | 2 +- .../pattern_matching.16cd197e.0.snapshot | 4 ++-- .../pattern_matching.16eb3dbf.0.snapshot | 4 ++-- .../pattern_matching.25930935.0.snapshot | 13 +++++++----- .../pattern_matching.3722b060.0.snapshot | 2 +- .../pattern_matching.46f91987.0.snapshot | 2 +- .../pattern_matching.5b158103.0.snapshot | 21 ++++++++++++------- .../pattern_matching.5b6ff2d3.0.snapshot | 17 +++++++++------ .../pattern_matching.5ff49e44.0.snapshot | 2 +- .../pattern_matching.64686134.0.snapshot | 8 ++++--- .../pattern_matching.702ed9b0.0.snapshot | 21 ++++++++++++------- .../pattern_matching.7082d3ca.0.snapshot | 2 +- .../pattern_matching.79346fef.0.snapshot | 21 ++++++++++++------- .../pattern_matching.7f7fe4ef.0.snapshot | 2 +- .../pattern_matching.8614dff3.0.snapshot | 2 +- .../pattern_matching.8c0dc67a.0.snapshot | 21 ++++++++++++------- .../pattern_matching.9561763b.0.snapshot | 2 +- .../pattern_matching.98756c45.0.snapshot | 2 +- .../pattern_matching.9ffaa7a7.0.snapshot | 13 +++++++----- .../pattern_matching.aa8d2963.0.snapshot | 4 ++-- .../pattern_matching.ac58ffc3.0.snapshot | 4 ++-- .../pattern_matching.b1b060ad.0.snapshot | 21 ++++++++++++------- .../pattern_matching.b9db0dd9.0.snapshot | 4 ++-- .../pattern_matching.be46eb0e.0.snapshot | 13 +++++++----- .../pattern_matching.c91eac29.0.snapshot | 21 ++++++++++++------- .../pattern_matching.c9582b6d.0.snapshot | 14 ++++++++----- .../pattern_matching.d048ece0.0.snapshot | 21 ++++++++++++------- .../pattern_matching.e17bcd61.0.snapshot | 5 +++-- .../pattern_matching.e41ad64e.0.snapshot | 21 ++++++++++++------- .../pattern_matching.eb4334e1.0.snapshot | 14 ++++++++----- .../pattern_matching.f0c08ea4.0.snapshot | 21 ++++++++++++------- .../pattern_matching.f25e0163.0.snapshot | 20 +++++++++++------- .../pattern_matching.f3d48b0e.0.snapshot | 5 +++-- .../pattern_matching.f6c9c89c.0.snapshot | 17 +++++++++------ .../__snapshots__/tuples.2c91b91d.0.snapshot | 2 +- compiler/test/suites/basic_functionality.re | 2 +- 42 files changed, 289 insertions(+), 164 deletions(-) diff --git a/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot b/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot index f9bea5b435..5edcb2d543 100644 --- a/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot +++ b/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot @@ -109,7 +109,8 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 5))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 5)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -132,7 +133,8 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -155,7 +157,8 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -180,7 +183,8 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -209,7 +213,8 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc @@ -239,13 +244,15 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 0))) + (MImmConst + (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 6))) + (MImmConst + (MConstLiteral (MConstI32 6)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))))))))))))))))))) ((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.0539d13e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0539d13e.0.snapshot index 243cb6ca80..ae34c83e83 100644 --- a/compiler/test/__snapshots__/pattern_matching.0539d13e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0539d13e.0.snapshot @@ -84,7 +84,7 @@ pattern matching › record_match_3 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot index 922deb732a..bdecabc267 100644 --- a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot @@ -104,7 +104,7 @@ pattern matching › adt_match_deep (immediate_analyses ((last_usage Last))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -123,7 +123,8 @@ pattern matching › adt_match_deep (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot index 50913ffc17..f1a2b5daf7 100644 --- a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot @@ -365,13 +365,15 @@ pattern matching › tuple_match_deep4 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -446,13 +448,15 @@ pattern matching › tuple_match_deep4 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -507,11 +511,13 @@ pattern matching › tuple_match_deep4 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 16 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -546,7 +552,8 @@ pattern matching › tuple_match_deep4 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot index b1c73a12e6..3215474726 100644 --- a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot @@ -326,13 +326,15 @@ pattern matching › adt_match_4 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -392,13 +394,15 @@ pattern matching › adt_match_4 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -439,11 +443,13 @@ pattern matching › adt_match_4 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 11 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -466,7 +472,8 @@ pattern matching › adt_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot index f5d9a897da..7338e21034 100644 --- a/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot @@ -47,7 +47,7 @@ pattern matching › low_level_constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -70,7 +70,8 @@ pattern matching › low_level_constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -93,11 +94,13 @@ pattern matching › low_level_constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))))))) ((instr_desc (MStore @@ -158,7 +161,7 @@ pattern matching › low_level_constant_match_2 (immediate_analyses ((last_usage Last)))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown))))))))) (main_body_stack_size ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) diff --git a/compiler/test/__snapshots__/pattern_matching.14dc7554.0.snapshot b/compiler/test/__snapshots__/pattern_matching.14dc7554.0.snapshot index 8b35e89f4a..0263a28c33 100644 --- a/compiler/test/__snapshots__/pattern_matching.14dc7554.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.14dc7554.0.snapshot @@ -54,7 +54,7 @@ pattern matching › record_match_2 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.16cd197e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.16cd197e.0.snapshot index 6d3d3abc3b..d7d123febc 100644 --- a/compiler/test/__snapshots__/pattern_matching.16cd197e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.16cd197e.0.snapshot @@ -27,11 +27,11 @@ pattern matching › constant_match_3 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MSwitch diff --git a/compiler/test/__snapshots__/pattern_matching.16eb3dbf.0.snapshot b/compiler/test/__snapshots__/pattern_matching.16eb3dbf.0.snapshot index beec7668a6..dad3f9cd92 100644 --- a/compiler/test/__snapshots__/pattern_matching.16eb3dbf.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.16eb3dbf.0.snapshot @@ -171,11 +171,11 @@ pattern matching › guarded_match_2 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.25930935.0.snapshot b/compiler/test/__snapshots__/pattern_matching.25930935.0.snapshot index d419e0314d..8548d6f2fa 100644 --- a/compiler/test/__snapshots__/pattern_matching.25930935.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.25930935.0.snapshot @@ -48,7 +48,7 @@ pattern matching › low_level_constant_match_3 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -73,7 +73,8 @@ pattern matching › low_level_constant_match_3 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -98,11 +99,13 @@ pattern matching › low_level_constant_match_3 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))))))) ((instr_desc (MStore @@ -163,7 +166,7 @@ pattern matching › low_level_constant_match_3 (immediate_analyses ((last_usage Last)))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown))))))))) (main_body_stack_size ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) diff --git a/compiler/test/__snapshots__/pattern_matching.3722b060.0.snapshot b/compiler/test/__snapshots__/pattern_matching.3722b060.0.snapshot index f9157ffaaa..c49564c6d0 100644 --- a/compiler/test/__snapshots__/pattern_matching.3722b060.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.3722b060.0.snapshot @@ -142,7 +142,7 @@ pattern matching › tuple_match_deep (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.46f91987.0.snapshot b/compiler/test/__snapshots__/pattern_matching.46f91987.0.snapshot index ffab51a22c..3d9fb3bb52 100644 --- a/compiler/test/__snapshots__/pattern_matching.46f91987.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.46f91987.0.snapshot @@ -54,7 +54,7 @@ pattern matching › record_match_1 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.5b158103.0.snapshot b/compiler/test/__snapshots__/pattern_matching.5b158103.0.snapshot index c31fe71698..44bf3dd99e 100644 --- a/compiler/test/__snapshots__/pattern_matching.5b158103.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.5b158103.0.snapshot @@ -103,15 +103,18 @@ pattern matching › constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((instr_desc (MStore @@ -154,7 +157,8 @@ pattern matching › constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -174,15 +178,18 @@ pattern matching › constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot b/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot index e18d5086cd..b409a03d39 100644 --- a/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot @@ -69,7 +69,7 @@ pattern matching › alias_match_5 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -130,7 +130,8 @@ pattern matching › alias_match_5 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -171,7 +172,8 @@ pattern matching › alias_match_5 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -215,20 +217,23 @@ pattern matching › alias_match_5 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.5ff49e44.0.snapshot b/compiler/test/__snapshots__/pattern_matching.5ff49e44.0.snapshot index 3d9fbfe82a..08d934946f 100644 --- a/compiler/test/__snapshots__/pattern_matching.5ff49e44.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.5ff49e44.0.snapshot @@ -106,7 +106,7 @@ pattern matching › record_match_4 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.64686134.0.snapshot b/compiler/test/__snapshots__/pattern_matching.64686134.0.snapshot index 0b7af63939..122232ce24 100644 --- a/compiler/test/__snapshots__/pattern_matching.64686134.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.64686134.0.snapshot @@ -31,7 +31,7 @@ pattern matching › constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -60,11 +60,13 @@ pattern matching › constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot index 598c682fe5..d3c9218c76 100644 --- a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot @@ -397,13 +397,15 @@ pattern matching › tuple_match_deep6 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -478,13 +480,15 @@ pattern matching › tuple_match_deep6 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -539,11 +543,13 @@ pattern matching › tuple_match_deep6 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 18 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -578,7 +584,8 @@ pattern matching › tuple_match_deep6 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.7082d3ca.0.snapshot b/compiler/test/__snapshots__/pattern_matching.7082d3ca.0.snapshot index 29442c951f..08e469d017 100644 --- a/compiler/test/__snapshots__/pattern_matching.7082d3ca.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.7082d3ca.0.snapshot @@ -92,7 +92,7 @@ pattern matching › tuple_match_3 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot index 311dd00d83..4c09d55745 100644 --- a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot @@ -349,13 +349,15 @@ pattern matching › tuple_match_deep3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -430,13 +432,15 @@ pattern matching › tuple_match_deep3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -491,11 +495,13 @@ pattern matching › tuple_match_deep3 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 15 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -530,7 +536,8 @@ pattern matching › tuple_match_deep3 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.7f7fe4ef.0.snapshot b/compiler/test/__snapshots__/pattern_matching.7f7fe4ef.0.snapshot index 0783ca06c6..40780972b3 100644 --- a/compiler/test/__snapshots__/pattern_matching.7f7fe4ef.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.7f7fe4ef.0.snapshot @@ -19,7 +19,7 @@ pattern matching › alias_match_1 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.8614dff3.0.snapshot b/compiler/test/__snapshots__/pattern_matching.8614dff3.0.snapshot index fd07d014d3..0187cfec01 100644 --- a/compiler/test/__snapshots__/pattern_matching.8614dff3.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.8614dff3.0.snapshot @@ -34,7 +34,7 @@ pattern matching › alias_match_2 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot index e282a23134..20130baaa8 100644 --- a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot @@ -278,13 +278,15 @@ pattern matching › adt_match_1 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -344,13 +346,15 @@ pattern matching › adt_match_1 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -391,11 +395,13 @@ pattern matching › adt_match_1 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 8 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -418,7 +424,8 @@ pattern matching › adt_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.9561763b.0.snapshot b/compiler/test/__snapshots__/pattern_matching.9561763b.0.snapshot index f20e1de159..db9f7c3368 100644 --- a/compiler/test/__snapshots__/pattern_matching.9561763b.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.9561763b.0.snapshot @@ -271,7 +271,7 @@ pattern matching › tuple_match_deep2 (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.98756c45.0.snapshot b/compiler/test/__snapshots__/pattern_matching.98756c45.0.snapshot index bb56f97423..f7731fd425 100644 --- a/compiler/test/__snapshots__/pattern_matching.98756c45.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.98756c45.0.snapshot @@ -69,7 +69,7 @@ pattern matching › record_match_deep (MCleanup (((instr_desc (MSwitch - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))) ((0 (((instr_desc diff --git a/compiler/test/__snapshots__/pattern_matching.9ffaa7a7.0.snapshot b/compiler/test/__snapshots__/pattern_matching.9ffaa7a7.0.snapshot index c012ef0848..d109b9f870 100644 --- a/compiler/test/__snapshots__/pattern_matching.9ffaa7a7.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.9ffaa7a7.0.snapshot @@ -48,7 +48,7 @@ pattern matching › low_level_constant_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -73,7 +73,8 @@ pattern matching › low_level_constant_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -98,11 +99,13 @@ pattern matching › low_level_constant_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))))))) ((instr_desc (MStore @@ -163,7 +166,7 @@ pattern matching › low_level_constant_match_4 (immediate_analyses ((last_usage Last)))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown))))))))) (main_body_stack_size ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) diff --git a/compiler/test/__snapshots__/pattern_matching.aa8d2963.0.snapshot b/compiler/test/__snapshots__/pattern_matching.aa8d2963.0.snapshot index dd9f344a5e..f21522c779 100644 --- a/compiler/test/__snapshots__/pattern_matching.aa8d2963.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.aa8d2963.0.snapshot @@ -202,11 +202,11 @@ pattern matching › guarded_match_4 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.ac58ffc3.0.snapshot b/compiler/test/__snapshots__/pattern_matching.ac58ffc3.0.snapshot index 62efe44410..467450c637 100644 --- a/compiler/test/__snapshots__/pattern_matching.ac58ffc3.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.ac58ffc3.0.snapshot @@ -171,11 +171,11 @@ pattern matching › guarded_match_1 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot index 53fbcc8cfe..4343c22bbb 100644 --- a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot @@ -294,13 +294,15 @@ pattern matching › adt_match_2 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -360,13 +362,15 @@ pattern matching › adt_match_2 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -407,11 +411,13 @@ pattern matching › adt_match_2 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 9 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -434,7 +440,8 @@ pattern matching › adt_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.b9db0dd9.0.snapshot b/compiler/test/__snapshots__/pattern_matching.b9db0dd9.0.snapshot index 00cd673eca..84182d3db8 100644 --- a/compiler/test/__snapshots__/pattern_matching.b9db0dd9.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.b9db0dd9.0.snapshot @@ -202,11 +202,11 @@ pattern matching › guarded_match_3 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot index 42b8784b84..bc8a145c34 100644 --- a/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.be46eb0e.0.snapshot @@ -47,7 +47,7 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -70,7 +70,8 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -93,11 +94,13 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))))))) ((instr_desc (MStore @@ -158,7 +161,7 @@ pattern matching › low_level_constant_match_1 (immediate_analyses ((last_usage Last)))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown))))))))) (main_body_stack_size ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) diff --git a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot index ae0a1a1ed3..5c5ef27587 100644 --- a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot @@ -310,13 +310,15 @@ pattern matching › adt_match_3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -376,13 +378,15 @@ pattern matching › adt_match_3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -423,11 +427,13 @@ pattern matching › adt_match_3 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 10 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -450,7 +456,8 @@ pattern matching › adt_match_3 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot index 18157d1e7e..c02432d36d 100644 --- a/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot @@ -50,7 +50,7 @@ pattern matching › alias_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -111,7 +111,8 @@ pattern matching › alias_match_4 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -152,17 +153,20 @@ pattern matching › alias_match_4 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot index c13fe6c722..0e413ac907 100644 --- a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot @@ -342,13 +342,15 @@ pattern matching › adt_match_5 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -408,13 +410,15 @@ pattern matching › adt_match_5 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -455,11 +459,13 @@ pattern matching › adt_match_5 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 12 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -482,7 +488,8 @@ pattern matching › adt_match_5 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.e17bcd61.0.snapshot b/compiler/test/__snapshots__/pattern_matching.e17bcd61.0.snapshot index a310c53fa1..ff53f1cf7c 100644 --- a/compiler/test/__snapshots__/pattern_matching.e17bcd61.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.e17bcd61.0.snapshot @@ -22,7 +22,7 @@ pattern matching › or_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -42,7 +42,8 @@ pattern matching › or_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot index e2f43d7817..06a4ce0de3 100644 --- a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot @@ -381,13 +381,15 @@ pattern matching › tuple_match_deep5 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -462,13 +464,15 @@ pattern matching › tuple_match_deep5 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -523,11 +527,13 @@ pattern matching › tuple_match_deep5 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 17 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -562,7 +568,8 @@ pattern matching › tuple_match_deep5 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.eb4334e1.0.snapshot b/compiler/test/__snapshots__/pattern_matching.eb4334e1.0.snapshot index 1980cf68ab..86734c2f82 100644 --- a/compiler/test/__snapshots__/pattern_matching.eb4334e1.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.eb4334e1.0.snapshot @@ -131,7 +131,8 @@ pattern matching › constant_match_4 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -153,7 +154,8 @@ pattern matching › constant_match_4 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MDrop @@ -214,15 +216,17 @@ pattern matching › constant_match_4 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot index 8e6d5272a4..7bf1e9cab0 100644 --- a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot @@ -413,13 +413,15 @@ pattern matching › tuple_match_deep7 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 3))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((immediate_desc @@ -494,13 +496,15 @@ pattern matching › tuple_match_deep7 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -555,11 +559,13 @@ pattern matching › tuple_match_deep7 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 4))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 19 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -594,7 +600,8 @@ pattern matching › tuple_match_deep7 (immediate_analyses ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot index 384d943bbc..3353e738dd 100644 --- a/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot @@ -206,13 +206,15 @@ pattern matching › or_match_3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 0))) + (MImmConst + (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) (((instr_desc @@ -253,13 +255,15 @@ pattern matching › or_match_3 ((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 0))) + (MImmConst + (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc @@ -300,11 +304,13 @@ pattern matching › or_match_3 ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))) @@ -312,7 +318,7 @@ pattern matching › or_match_3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/pattern_matching.f3d48b0e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f3d48b0e.0.snapshot index cac7a6b370..8abc0d6938 100644 --- a/compiler/test/__snapshots__/pattern_matching.f3d48b0e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f3d48b0e.0.snapshot @@ -22,7 +22,7 @@ pattern matching › or_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -42,7 +42,8 @@ pattern matching › or_match_1 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate diff --git a/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot index 19495acb67..e1ed4c0b4d 100644 --- a/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot @@ -43,7 +43,7 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -90,7 +90,8 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -116,7 +117,8 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -145,20 +147,23 @@ pattern matching › or_match_2 (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 2))) + (MImmConst + (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) (((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))))))))))))))) ((instr_desc (MCleanup () diff --git a/compiler/test/__snapshots__/tuples.2c91b91d.0.snapshot b/compiler/test/__snapshots__/tuples.2c91b91d.0.snapshot index 7ff16ace95..79e6c5c61e 100644 --- a/compiler/test/__snapshots__/tuples.2c91b91d.0.snapshot +++ b/compiler/test/__snapshots__/tuples.2c91b91d.0.snapshot @@ -86,7 +86,7 @@ tuples › tup1_destruct_trailing (immediate_analyses ((last_usage Last))))))))))))) ((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown))))))))) (main_body_stack_size ((stack_size_ptr 4) (stack_size_i32 0) (stack_size_i64 0) diff --git a/compiler/test/suites/basic_functionality.re b/compiler/test/suites/basic_functionality.re index 83e3d05753..22e0d69422 100644 --- a/compiler/test/suites/basic_functionality.re +++ b/compiler/test/suites/basic_functionality.re @@ -377,6 +377,6 @@ describe("basic functionality", ({test, testSkip}) => { ~config_fn=smallestFileConfig, "smallest_grain_program", "", - 6507, + 6498, ); }); From 6449b827d26b944bf32dad688779e94259e05118 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Thu, 10 Oct 2024 17:00:10 -0400 Subject: [PATCH 05/10] chore: Cleanup impl --- compiler/src/middle_end/matchcomp.re | 353 +++++++++++++++------------ 1 file changed, 197 insertions(+), 156 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index 3bc20baf7c..0b2a047117 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -85,12 +85,7 @@ and matrix_type = | ConstantMatrix and switch_type = - | CharSwitch - | Int8Switch - | Int16Switch - | UInt8Switch - | UInt16Switch - | WasmI32Switch + | ConstantSwitch(constant) | ConstructorSwitch | ArraySwitch @@ -568,12 +563,12 @@ let get_constant_tag = const => | Const_char(char) => let uchar = List.hd @@ Utf8.decodeUtf8String(char); let uchar_int: int = Utf8__Uchar.toInt(uchar); - Some((CharSwitch, uchar_int)); - | Const_int8(i) => Some((Int8Switch, Int32.to_int(i))) - | Const_int16(i) => Some((Int16Switch, Int32.to_int(i))) - | Const_uint8(i) => Some((UInt8Switch, Int32.to_int(i))) - | Const_uint16(i) => Some((UInt16Switch, Int32.to_int(i))) - | Const_wasmi32(i) => Some((WasmI32Switch, Int32.to_int(i))) + Some(uchar_int); + | Const_int8(i) => Some(Int32.to_int(i)) + | Const_int16(i) => Some(Int32.to_int(i)) + | Const_uint8(i) => Some(Int32.to_int(i)) + | Const_uint16(i) => Some(Int32.to_int(i)) + | Const_wasmi32(i) => Some(Int32.to_int(i)) | _ => None }; @@ -711,14 +706,6 @@ let rec compile_matrix = mtx => | Const_uint8(_) | Const_uint16(_) | Const_wasmi32(_) => - let switch_type = - switch (get_constant_tag(constant_type)) { - | Some((tag, _)) => tag - | None => - failwith( - "Internal error: compile_matrix: no tag found for constant", - ) - }; let cases = List.fold_right( (const, acc) => { @@ -726,7 +713,7 @@ let rec compile_matrix = mtx => let result = compile_matrix(specialized); let tag = switch (get_constant_tag(const)) { - | Some((_, tag)) => tag + | Some(tag) => tag | None => failwith( "Internal error: compile_matrix: no tag found for constant", @@ -737,7 +724,12 @@ let rec compile_matrix = mtx => constants, [], ); - Switch(switch_type, Some(alias), cases, Some(default_tree)); + Switch( + ConstantSwitch(constant_type), + Some(alias), + cases, + default_tree == Fail ? None : Some(default_tree), + ); | _ => List.fold_right( (const, acc) => { @@ -1219,136 +1211,191 @@ module MatchTreeCompiler = { helpI, helpConst, ); - let value_constr_name = Ident.create("match_constructor"); - let value_constr_id = - Imm.id(~loc=Location.dummy_loc, value_constr_name); - let value_constr = + // TODO: Convert array tag and constructor tag to ConstantSwitch on an int32 and untag alternatively we could use low level get functions or primitives + let (switch_content, switch_setup) = switch (switch_type) { - | ConstructorSwitch => - Comp.adt_get_tag(~loc=Location.dummy_loc, cur_value) + | ConstructorSwitch | ArraySwitch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - ArrayLength, - cur_value, - ) - | CharSwitch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - UntagChar, - cur_value, - ) - | Int8Switch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - UntagInt8, - cur_value, - ) - | Int16Switch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - UntagInt16, - cur_value, - ) - | UInt8Switch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - UntagUint8, - cur_value, - ) - | UInt16Switch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - UntagUint16, - cur_value, - ) - | WasmI32Switch => - Comp.imm( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - cur_value, - ) - }; - /* Fold left should be safe here, since there should be at most one branch - per value */ - // TODO: optimize for a jump table, Comp.switch - // TODO: We need to check what percentage of our range is full - // TODO: branch_condition needs to be extracted into a switch - // TODO: body needs to be the switch code path - // TODO: Base becomes default - let (switch_body_ans, switch_body_setup) = - List.fold_left( - ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_values"); - let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - /* If the value has the correct tag, execute this branch. - Otherwise continue. */ - let branch_condition = - switch (switch_type) { - | CharSwitch - | Int8Switch - | Int16Switch - | UInt8Switch - | UInt16Switch - | WasmI32Switch => - Comp.prim2( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - WasmBinaryI32({ - wasm_op: Op_eq_int32, - arg_types: (Wasm_int32, Wasm_int32), - ret_type: Grain_bool, - }), - value_constr_id, - Imm.const( + let value_constr_name = Ident.create("match_constructor"); + let value_constr_id = + Imm.id(~loc=Location.dummy_loc, value_constr_name); + let value_constr = + switch (switch_type) { + | ConstantSwitch(_) => failwith("Impossible") + | ConstructorSwitch => + Comp.adt_get_tag(~loc=Location.dummy_loc, cur_value) + | ArraySwitch => + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + ArrayLength, + cur_value, + ) + }; + /* Fold left should be safe here, since there should be at most one branch + per value */ + let (switch_body_ans, switch_body_setup) = + List.fold_left( + ((body_ans, body_setup), (tag, tree)) => { + let cmp_id_name = Ident.create("match_cmp_values"); + let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); + /* If the value has the correct tag, execute this branch. + Otherwise continue. */ + let branch_condition = + Comp.prim2( ~loc=Location.dummy_loc, - Const_wasmi32(Int32.of_int(tag)), - ), - ) - | ConstructorSwitch - | ArraySwitch => - Comp.prim2( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - Is, - value_constr_id, - Imm.const( + ~allocation_type=Unmanaged(WasmI32), + Is, + value_constr_id, + Imm.const( + ~loc=Location.dummy_loc, + Const_number(Const_number_int(Int64.of_int(tag))), + ), + ); + let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + helpI, + helpConst, + ); + let ans = + Comp.if_( ~loc=Location.dummy_loc, - Const_number(Const_number_int(Int64.of_int(tag))), - ), - ) - }; - let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; - let (tree_ans, tree_setup) = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - tree, - values, - expr, - helpI, - helpConst, - ); - let ans = - Comp.if_( + ~allocation_type=tree_ans.comp_allocation_type, + cmp_id, + fold_tree(tree_setup, tree_ans), + fold_tree(body_setup, body_ans), + ); + (ans, setup); + }, + base, + cases, + ); + ( + switch_body_ans, + [ + BLet(value_constr_name, value_constr, Nonglobal), + ...switch_body_setup, + ], + ); + | ConstantSwitch(const) => + // Get Value Constructor + let compile_cond_i32 = v => + Imm.const( + ~loc=Location.dummy_loc, + Const_wasmi32(Int32.of_int(v)), + ); + let (value_op, value_typ, compile_cond) = + switch (const) { + | Const_char(_) => (Some(UntagChar), WasmI32, compile_cond_i32) + | Const_int8(_) => (Some(UntagInt8), WasmI32, compile_cond_i32) + | Const_int16(_) => (Some(UntagInt16), WasmI32, compile_cond_i32) + | Const_uint8(_) => (Some(UntagUint8), WasmI32, compile_cond_i32) + | Const_uint16(_) => ( + Some(UntagUint16), + WasmI32, + compile_cond_i32, + ) + | Const_wasmi32(_) => (None, WasmI32, compile_cond_i32) + | _ => + failwith("Impossible: should fall back to equality matching") + }; + let cond_name = Ident.create("match_cond"); + let cond_id = Imm.id(~loc=Location.dummy_loc, cond_name); + let condition = + switch (value_op) { + | Some(tag_op) => + Comp.prim1( ~loc=Location.dummy_loc, - ~allocation_type=tree_ans.comp_allocation_type, - cmp_id, - fold_tree(tree_setup, tree_ans), - fold_tree(body_setup, body_ans), - ); - (ans, setup); - }, - base, - cases, - ); + ~allocation_type=Unmanaged(value_typ), + tag_op, + cur_value, + ) + | None => + Comp.imm( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + cur_value, + ) + }; + let equality_op = + switch (value_typ) { + | WasmI32 => + WasmBinaryI32({ + wasm_op: Op_eq_int32, + arg_types: (Wasm_int32, Wasm_int32), + ret_type: Grain_bool, + }) + | WasmI64 => + WasmBinaryI64({ + wasm_op: Op_eq_int64, + arg_types: (Wasm_int64, Wasm_int64), + ret_type: Grain_bool, + }) + | WasmF32 => + WasmBinaryF32({ + wasm_op: Op_eq_float32, + arg_types: (Wasm_float32, Wasm_float32), + ret_type: Grain_bool, + }) + | WasmF64 => + WasmBinaryF64({ + wasm_op: Op_eq_float64, + arg_types: (Wasm_float64, Wasm_float64), + ret_type: Grain_bool, + }) + }; + /* Fold left should be safe here, since there should be at most one branch + per value */ + let (switch_body_ans, switch_body_setup) = + List.fold_left( + ((body_ans, body_setup), (tag, tree)) => { + let cmp_id_name = Ident.create("match_cmp_values"); + let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); + let branch_condition = + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + equality_op, + cond_id, + compile_cond(tag), + ); + let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + helpI, + helpConst, + ); + let ans = + Comp.if_( + ~loc=Location.dummy_loc, + ~allocation_type=tree_ans.comp_allocation_type, + cmp_id, + fold_tree(tree_setup, tree_ans), + fold_tree(body_setup, body_ans), + ); + (ans, setup); + }, + base, + cases, + ); + ( + switch_body_ans, + [BLet(cond_name, condition, Nonglobal), ...switch_body_setup], + ); + }; let switch_body_setup = switch (alias) { | Some(alias) => [ @@ -1361,17 +1408,11 @@ module MatchTreeCompiler = { ), Nonglobal, ), - ...switch_body_setup, + ...switch_setup, ] - | None => switch_body_setup + | None => switch_setup }; - ( - switch_body_ans, - [ - BLet(value_constr_name, value_constr, Nonglobal), - ...switch_body_setup, - ], - ); + (switch_content, switch_body_setup); }; }; From 7f3a26efcd71cd59d1a7e4e833e4f4e494f0a186 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Thu, 10 Oct 2024 19:18:07 -0400 Subject: [PATCH 06/10] feat: Compile Constructors and Arrays the same way --- compiler/src/middle_end/matchcomp.re | 364 +++++++++--------- .../pattern_matching.05b60a1e.0.snapshot | 40 +- .../pattern_matching.0ad4ac05.0.snapshot | 177 ++++++--- .../pattern_matching.0bb6923e.0.snapshot | 165 +++++--- .../pattern_matching.0fa61137.0.snapshot | 10 +- .../pattern_matching.5b6ff2d3.0.snapshot | 52 ++- .../pattern_matching.702ed9b0.0.snapshot | 177 ++++++--- .../pattern_matching.79346fef.0.snapshot | 177 ++++++--- .../pattern_matching.8c0dc67a.0.snapshot | 165 +++++--- .../pattern_matching.b1b060ad.0.snapshot | 165 +++++--- .../pattern_matching.c91eac29.0.snapshot | 165 +++++--- .../pattern_matching.c9582b6d.0.snapshot | 48 ++- .../pattern_matching.d048ece0.0.snapshot | 165 +++++--- .../pattern_matching.e41ad64e.0.snapshot | 177 ++++++--- .../pattern_matching.f0c08ea4.0.snapshot | 177 ++++++--- .../pattern_matching.f25e0163.0.snapshot | 135 +++++-- .../pattern_matching.f6c9c89c.0.snapshot | 52 ++- compiler/test/suites/basic_functionality.re | 2 +- 18 files changed, 1561 insertions(+), 852 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index 0b2a047117..b36b4d2fef 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -566,9 +566,14 @@ let get_constant_tag = const => Some(uchar_int); | Const_int8(i) => Some(Int32.to_int(i)) | Const_int16(i) => Some(Int32.to_int(i)) + | Const_int32(i) => Some(Int32.to_int(i)) + | Const_int64(i) => Some(Int64.to_int(i)) | Const_uint8(i) => Some(Int32.to_int(i)) | Const_uint16(i) => Some(Int32.to_int(i)) + | Const_uint32(i) => Some(Int32.to_int(i)) + | Const_uint64(i) => Some(Int64.to_int(i)) | Const_wasmi32(i) => Some(Int32.to_int(i)) + | Const_wasmi64(i) => Some(Int64.to_int(i)) | _ => None }; @@ -682,7 +687,6 @@ let rec compile_matrix = mtx => | ConstantMatrix => let constants = matrix_head_constants(mtx); let constant_type = List.hd(constants); - let equality_type = equality_type(constant_type); // TODO(#1185): Optimize physical equality checks into a switch. // We can also do partial switches on Numbers if some of the @@ -699,13 +703,8 @@ let rec compile_matrix = mtx => Fail; }; - switch (constant_type) { - | Const_char(_) - | Const_int8(_) - | Const_int16(_) - | Const_uint8(_) - | Const_uint16(_) - | Const_wasmi32(_) => + switch (get_constant_tag(constant_type)) { + | Some(_) => let cases = List.fold_right( (const, acc) => { @@ -730,7 +729,8 @@ let rec compile_matrix = mtx => cases, default_tree == Fail ? None : Some(default_tree), ); - | _ => + | None => + let equality_type = equality_type(constant_type); List.fold_right( (const, acc) => { let specialized = specialize_constant_matrix(const, alias, mtx); @@ -739,7 +739,7 @@ let rec compile_matrix = mtx => }, constants, default_tree, - ) + ); }; }; | _ => @@ -767,6 +767,12 @@ module MatchTreeCompiler = { open Anftree; open Anf_helper; + type constant_value_op = + | Prim1(prim1) + | Prim2(prim2, int) + | Constructor + | Constant; + let pattern_could_contain_binding = patt => switch (patt.pat_desc) { | TPatConstant(_) @@ -1211,191 +1217,171 @@ module MatchTreeCompiler = { helpI, helpConst, ); - // TODO: Convert array tag and constructor tag to ConstantSwitch on an int32 and untag alternatively we could use low level get functions or primitives - let (switch_content, switch_setup) = + // Get Value Constructor + let comp_cond_i32 = v => + Imm.const(~loc=Location.dummy_loc, Const_wasmi32(Int32.of_int(v))); + let comp_cond_i64 = v => + Imm.const(~loc=Location.dummy_loc, Const_wasmi64(Int64.of_int(v))); + let (value_op, value_typ, compile_cond) = switch (switch_type) { - | ConstructorSwitch - | ArraySwitch => - let value_constr_name = Ident.create("match_constructor"); - let value_constr_id = - Imm.id(~loc=Location.dummy_loc, value_constr_name); - let value_constr = - switch (switch_type) { - | ConstantSwitch(_) => failwith("Impossible") - | ConstructorSwitch => - Comp.adt_get_tag(~loc=Location.dummy_loc, cur_value) - | ArraySwitch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - ArrayLength, - cur_value, - ) - }; - /* Fold left should be safe here, since there should be at most one branch - per value */ - let (switch_body_ans, switch_body_setup) = - List.fold_left( - ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_values"); - let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - /* If the value has the correct tag, execute this branch. - Otherwise continue. */ - let branch_condition = - Comp.prim2( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - Is, - value_constr_id, - Imm.const( - ~loc=Location.dummy_loc, - Const_number(Const_number_int(Int64.of_int(tag))), - ), - ); - let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; - let (tree_ans, tree_setup) = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - tree, - values, - expr, - helpI, - helpConst, - ); - let ans = - Comp.if_( - ~loc=Location.dummy_loc, - ~allocation_type=tree_ans.comp_allocation_type, - cmp_id, - fold_tree(tree_setup, tree_ans), - fold_tree(body_setup, body_ans), - ); - (ans, setup); - }, - base, - cases, - ); - ( - switch_body_ans, - [ - BLet(value_constr_name, value_constr, Nonglobal), - ...switch_body_setup, - ], - ); | ConstantSwitch(const) => - // Get Value Constructor - let compile_cond_i32 = v => - Imm.const( + switch (const) { + | Const_char(_) => (Prim1(UntagChar), WasmI32, comp_cond_i32) + | Const_int8(_) => (Prim1(UntagInt8), WasmI32, comp_cond_i32) + | Const_int16(_) => (Prim1(UntagInt16), WasmI32, comp_cond_i32) + | Const_int32(_) => ( + Prim2(WasmLoadI32({sz: 4, signed: true}), 4), + WasmI32, + comp_cond_i32, + ) + | Const_int64(_) => ( + Prim2(WasmLoadI64({sz: 8, signed: true}), 8), + WasmI64, + comp_cond_i64, + ) + | Const_uint8(_) => (Prim1(UntagUint8), WasmI32, comp_cond_i32) + | Const_uint16(_) => (Prim1(UntagUint16), WasmI32, comp_cond_i32) + | Const_uint32(_) => ( + Prim2(WasmLoadI32({sz: 4, signed: false}), 4), + WasmI32, + comp_cond_i32, + ) + | Const_uint64(_) => ( + Prim2(WasmLoadI64({sz: 8, signed: false}), 8), + WasmI64, + comp_cond_i64, + ) + | Const_wasmi32(_) => (Constant, WasmI32, comp_cond_i32) + | Const_wasmi64(_) => (Constant, WasmI64, comp_cond_i64) + | _ => failwith("Impossible: should fall back to equality matching") + } + | ArraySwitch => ( + Prim2(WasmLoadI32({sz: 4, signed: false}), 4), + WasmI32, + comp_cond_i32, + ) + | ConstructorSwitch => (Constructor, WasmI32, comp_cond_i32) + }; + let cond_name = Ident.create("match_cond"); + let cond_id = Imm.id(~loc=Location.dummy_loc, cond_name); + let (cond, cond_binds) = + switch (value_op) { + | Prim1(op) => ( + Comp.prim1( ~loc=Location.dummy_loc, - Const_wasmi32(Int32.of_int(v)), - ); - let (value_op, value_typ, compile_cond) = - switch (const) { - | Const_char(_) => (Some(UntagChar), WasmI32, compile_cond_i32) - | Const_int8(_) => (Some(UntagInt8), WasmI32, compile_cond_i32) - | Const_int16(_) => (Some(UntagInt16), WasmI32, compile_cond_i32) - | Const_uint8(_) => (Some(UntagUint8), WasmI32, compile_cond_i32) - | Const_uint16(_) => ( - Some(UntagUint16), - WasmI32, - compile_cond_i32, - ) - | Const_wasmi32(_) => (None, WasmI32, compile_cond_i32) - | _ => - failwith("Impossible: should fall back to equality matching") - }; - let cond_name = Ident.create("match_cond"); - let cond_id = Imm.id(~loc=Location.dummy_loc, cond_name); - let condition = - switch (value_op) { - | Some(tag_op) => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(value_typ), - tag_op, - cur_value, - ) - | None => - Comp.imm( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(value_typ), - cur_value, - ) - }; - let equality_op = - switch (value_typ) { - | WasmI32 => - WasmBinaryI32({ - wasm_op: Op_eq_int32, - arg_types: (Wasm_int32, Wasm_int32), - ret_type: Grain_bool, - }) - | WasmI64 => - WasmBinaryI64({ - wasm_op: Op_eq_int64, - arg_types: (Wasm_int64, Wasm_int64), - ret_type: Grain_bool, - }) - | WasmF32 => - WasmBinaryF32({ - wasm_op: Op_eq_float32, - arg_types: (Wasm_float32, Wasm_float32), - ret_type: Grain_bool, - }) - | WasmF64 => - WasmBinaryF64({ - wasm_op: Op_eq_float64, - arg_types: (Wasm_float64, Wasm_float64), - ret_type: Grain_bool, - }) - }; - /* Fold left should be safe here, since there should be at most one branch - per value */ - let (switch_body_ans, switch_body_setup) = - List.fold_left( - ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_values"); - let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - let branch_condition = - Comp.prim2( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - equality_op, - cond_id, - compile_cond(tag), - ); - let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; - let (tree_ans, tree_setup) = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - tree, - values, - expr, - helpI, - helpConst, - ); - let ans = - Comp.if_( - ~loc=Location.dummy_loc, - ~allocation_type=tree_ans.comp_allocation_type, - cmp_id, - fold_tree(tree_setup, tree_ans), - fold_tree(body_setup, body_ans), - ); - (ans, setup); - }, - base, - cases, + ~allocation_type=Unmanaged(value_typ), + op, + cur_value, + ), + [], + ) + | Prim2(op, p) => ( + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + op, + cur_value, + comp_cond_i32(p), + ), + [], + ) + | Constructor => + let match_cstr_tag = Ident.create("match_cstr_tag"); + let match_cstr_id = Imm.id(~loc=Location.dummy_loc, match_cstr_tag); + let cstr_tag = + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + LoadAdtVariant, + cur_value, ); ( - switch_body_ans, - [BLet(cond_name, condition, Nonglobal), ...switch_body_setup], + Comp.prim1( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + UntagSimpleNumber, + match_cstr_id, + ), + [BLet(match_cstr_tag, cstr_tag, Nonglobal)], ); + | Constant => ( + Comp.imm( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + cur_value, + ), + [], + ) + }; + let equality_op = + switch (value_typ) { + | WasmI32 => + WasmBinaryI32({ + wasm_op: Op_eq_int32, + arg_types: (Wasm_int32, Wasm_int32), + ret_type: Grain_bool, + }) + | WasmI64 => + WasmBinaryI64({ + wasm_op: Op_eq_int64, + arg_types: (Wasm_int64, Wasm_int64), + ret_type: Grain_bool, + }) + | WasmF32 => + WasmBinaryF32({ + wasm_op: Op_eq_float32, + arg_types: (Wasm_float32, Wasm_float32), + ret_type: Grain_bool, + }) + | WasmF64 => + WasmBinaryF64({ + wasm_op: Op_eq_float64, + arg_types: (Wasm_float64, Wasm_float64), + ret_type: Grain_bool, + }) }; + /* Fold left should be safe here, since there should be at most one branch + per value */ + let (switch_body_ans, switch_body_setup) = + List.fold_left( + ((body_ans, body_setup), (tag, tree)) => { + let cmp_id_name = Ident.create("match_cmp_values"); + let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); + let branch_condition = + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + equality_op, + cond_id, + compile_cond(tag), + ); + let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + helpI, + helpConst, + ); + let ans = + Comp.if_( + ~loc=Location.dummy_loc, + ~allocation_type=tree_ans.comp_allocation_type, + cmp_id, + fold_tree(tree_setup, tree_ans), + fold_tree(body_setup, body_ans), + ); + (ans, setup); + }, + base, + cases, + ); + let switch_setup = + cond_binds @ [BLet(cond_name, cond, Nonglobal), ...switch_body_setup]; let switch_body_setup = switch (alias) { | Some(alias) => [ @@ -1412,7 +1398,7 @@ module MatchTreeCompiler = { ] | None => switch_setup }; - (switch_content, switch_body_setup); + (switch_body_ans, switch_body_setup); }; }; diff --git a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot index bdecabc267..a1209b880a 100644 --- a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot @@ -55,26 +55,36 @@ pattern matching › adt_match_deep (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -108,18 +118,22 @@ pattern matching › adt_match_deep (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -139,7 +153,7 @@ pattern matching › adt_match_deep (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -162,9 +176,9 @@ pattern matching › adt_match_deep (((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 6) (stack_size_i32 4) (stack_size_i64 0) + ((stack_size_ptr 6) (stack_size_i32 5) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1130) (name function_table_global))) + (global_function_table_offset ((stamp 1131) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot index f1a2b5daf7..1337ea3087 100644 --- a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep4 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -144,26 +144,36 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -181,27 +191,39 @@ pattern matching › tuple_match_deep4 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -221,22 +243,35 @@ pattern matching › tuple_match_deep4 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -244,7 +279,7 @@ pattern matching › tuple_match_deep4 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -266,9 +301,9 @@ pattern matching › tuple_match_deep4 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 20 Managed))) (immediate_analyses @@ -281,16 +316,30 @@ pattern matching › tuple_match_deep4 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -299,7 +348,7 @@ pattern matching › tuple_match_deep4 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -382,23 +431,27 @@ pattern matching › tuple_match_deep4 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -467,19 +520,23 @@ pattern matching › tuple_match_deep4 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -525,18 +582,22 @@ pattern matching › tuple_match_deep4 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -570,7 +631,7 @@ pattern matching › tuple_match_deep4 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -600,12 +661,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -619,12 +680,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -662,12 +723,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -681,12 +742,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -707,12 +768,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -747,12 +808,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -792,9 +853,9 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 24) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 24) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1158) (name function_table_global))) + (global_function_table_offset ((stamp 1162) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot index 3215474726..fdb19da59a 100644 --- a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_4 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -120,26 +120,36 @@ pattern matching › adt_match_4 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -157,27 +167,39 @@ pattern matching › adt_match_4 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -197,22 +219,35 @@ pattern matching › adt_match_4 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 13 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -220,7 +255,7 @@ pattern matching › adt_match_4 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -242,9 +277,9 @@ pattern matching › adt_match_4 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) (immediate_analyses @@ -257,16 +292,30 @@ pattern matching › adt_match_4 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -275,7 +324,7 @@ pattern matching › adt_match_4 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -343,23 +392,27 @@ pattern matching › adt_match_4 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -413,19 +466,23 @@ pattern matching › adt_match_4 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -457,18 +514,22 @@ pattern matching › adt_match_4 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -488,7 +549,7 @@ pattern matching › adt_match_4 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -515,12 +576,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -534,12 +595,12 @@ pattern matching › adt_match_4 (MStore (((MLocalBind 16 Managed) ((instr_desc - (MCallKnown (func +_1149) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -569,12 +630,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -606,9 +667,9 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 17) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 17) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1152) (name function_table_global))) + (global_function_table_offset ((stamp 1156) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot index 7338e21034..8d3dbc830f 100644 --- a/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot @@ -35,7 +35,7 @@ pattern matching › low_level_constant_match_2 (arg_types (Wasm_int64 Wasm_int64)) (ret_type Grain_bool)) ((immediate_desc (MImmConst (MConstLiteral (MConstI64 1)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI64 0)))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI64 2)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore @@ -47,7 +47,7 @@ pattern matching › low_level_constant_match_2 (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 2)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore @@ -85,7 +85,7 @@ pattern matching › low_level_constant_match_2 (MImmConst (MConstLiteral (MConstI64 1)))) (immediate_analyses ((last_usage Unknown)))) ((immediate_desc - (MImmConst (MConstLiteral (MConstI64 2)))) + (MImmConst (MConstLiteral (MConstI64 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf @@ -95,7 +95,7 @@ pattern matching › low_level_constant_match_2 (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 2)))) + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MImmediate @@ -167,6 +167,6 @@ pattern matching › low_level_constant_match_2 ((stack_size_ptr 1) (stack_size_i32 6) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1125) (name function_table_global))) + (global_function_table_offset ((stamp 1126) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot b/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot index b409a03d39..7b959547e4 100644 --- a/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.5b6ff2d3.0.snapshot @@ -34,26 +34,36 @@ pattern matching › alias_match_5 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -73,18 +83,22 @@ pattern matching › alias_match_5 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -96,7 +110,7 @@ pattern matching › alias_match_5 (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -112,7 +126,7 @@ pattern matching › alias_match_5 (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -135,7 +149,7 @@ pattern matching › alias_match_5 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -153,7 +167,7 @@ pattern matching › alias_match_5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 5 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -177,7 +191,7 @@ pattern matching › alias_match_5 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -197,7 +211,7 @@ pattern matching › alias_match_5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) + (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -244,7 +258,7 @@ pattern matching › alias_match_5 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -283,9 +297,9 @@ pattern matching › alias_match_5 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 4) (stack_size_i32 7) (stack_size_i64 0) + ((stack_size_ptr 4) (stack_size_i32 8) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1131) (name function_table_global))) + (global_function_table_offset ((stamp 1132) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot index d3c9218c76..0ff474fc31 100644 --- a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep6 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -176,26 +176,36 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -213,27 +223,39 @@ pattern matching › tuple_match_deep6 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -253,22 +275,35 @@ pattern matching › tuple_match_deep6 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 20 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -276,7 +311,7 @@ pattern matching › tuple_match_deep6 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -298,9 +333,9 @@ pattern matching › tuple_match_deep6 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 22 Managed))) (immediate_analyses @@ -313,16 +348,30 @@ pattern matching › tuple_match_deep6 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -331,7 +380,7 @@ pattern matching › tuple_match_deep6 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -414,23 +463,27 @@ pattern matching › tuple_match_deep6 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -499,19 +552,23 @@ pattern matching › tuple_match_deep6 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -557,18 +614,22 @@ pattern matching › tuple_match_deep6 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -602,7 +663,7 @@ pattern matching › tuple_match_deep6 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -632,12 +693,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -651,12 +712,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -694,12 +755,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -713,12 +774,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -739,12 +800,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -779,12 +840,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -824,9 +885,9 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 26) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 26) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1162) (name function_table_global))) + (global_function_table_offset ((stamp 1166) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot index 4c09d55745..376ae6c0b9 100644 --- a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep3 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -128,26 +128,36 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 13 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -165,27 +175,39 @@ pattern matching › tuple_match_deep3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -205,22 +227,35 @@ pattern matching › tuple_match_deep3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -228,7 +263,7 @@ pattern matching › tuple_match_deep3 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -250,9 +285,9 @@ pattern matching › tuple_match_deep3 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 19 Managed))) (immediate_analyses @@ -265,16 +300,30 @@ pattern matching › tuple_match_deep3 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -283,7 +332,7 @@ pattern matching › tuple_match_deep3 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -366,23 +415,27 @@ pattern matching › tuple_match_deep3 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -451,19 +504,23 @@ pattern matching › tuple_match_deep3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -509,18 +566,22 @@ pattern matching › tuple_match_deep3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -554,7 +615,7 @@ pattern matching › tuple_match_deep3 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -584,12 +645,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -603,12 +664,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 20 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -646,12 +707,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -665,12 +726,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -691,12 +752,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -731,12 +792,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -776,9 +837,9 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 23) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 23) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1156) (name function_table_global))) + (global_function_table_offset ((stamp 1160) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot index 20130baaa8..03c390d2d6 100644 --- a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_1 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1143) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1143) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -72,26 +72,36 @@ pattern matching › adt_match_1 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -109,27 +119,39 @@ pattern matching › adt_match_1 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 8 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -149,22 +171,35 @@ pattern matching › adt_match_1 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -172,7 +207,7 @@ pattern matching › adt_match_1 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -194,9 +229,9 @@ pattern matching › adt_match_1 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 12 Managed))) (immediate_analyses @@ -209,16 +244,30 @@ pattern matching › adt_match_1 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -227,7 +276,7 @@ pattern matching › adt_match_1 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -295,23 +344,27 @@ pattern matching › adt_match_1 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -365,19 +418,23 @@ pattern matching › adt_match_1 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -409,18 +466,22 @@ pattern matching › adt_match_1 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -440,7 +501,7 @@ pattern matching › adt_match_1 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -467,12 +528,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1143) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -486,12 +547,12 @@ pattern matching › adt_match_1 (MStore (((MLocalBind 13 Managed) ((instr_desc - (MCallKnown (func +_1143) + (MCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -521,12 +582,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1143) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -558,9 +619,9 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 14) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 14) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1146) (name function_table_global))) + (global_function_table_offset ((stamp 1150) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot index 4343c22bbb..c54af4faff 100644 --- a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_2 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1145) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1145) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -88,26 +88,36 @@ pattern matching › adt_match_2 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -125,27 +135,39 @@ pattern matching › adt_match_2 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 9 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -165,22 +187,35 @@ pattern matching › adt_match_2 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -188,7 +223,7 @@ pattern matching › adt_match_2 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -210,9 +245,9 @@ pattern matching › adt_match_2 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 13 Managed))) (immediate_analyses @@ -225,16 +260,30 @@ pattern matching › adt_match_2 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -243,7 +292,7 @@ pattern matching › adt_match_2 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -311,23 +360,27 @@ pattern matching › adt_match_2 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -381,19 +434,23 @@ pattern matching › adt_match_2 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -425,18 +482,22 @@ pattern matching › adt_match_2 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -456,7 +517,7 @@ pattern matching › adt_match_2 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -483,12 +544,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1145) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -502,12 +563,12 @@ pattern matching › adt_match_2 (MStore (((MLocalBind 14 Managed) ((instr_desc - (MCallKnown (func +_1145) + (MCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -537,12 +598,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1145) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -574,9 +635,9 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 15) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 15) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1148) (name function_table_global))) + (global_function_table_offset ((stamp 1152) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot index 5c5ef27587..d9f4ce9611 100644 --- a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_3 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -104,26 +104,36 @@ pattern matching › adt_match_3 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -141,27 +151,39 @@ pattern matching › adt_match_3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -181,22 +203,35 @@ pattern matching › adt_match_3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 12 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -204,7 +239,7 @@ pattern matching › adt_match_3 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -226,9 +261,9 @@ pattern matching › adt_match_3 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) (immediate_analyses @@ -241,16 +276,30 @@ pattern matching › adt_match_3 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -259,7 +308,7 @@ pattern matching › adt_match_3 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -327,23 +376,27 @@ pattern matching › adt_match_3 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -397,19 +450,23 @@ pattern matching › adt_match_3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -441,18 +498,22 @@ pattern matching › adt_match_3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -472,7 +533,7 @@ pattern matching › adt_match_3 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -499,12 +560,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -518,12 +579,12 @@ pattern matching › adt_match_3 (MStore (((MLocalBind 15 Managed) ((instr_desc - (MCallKnown (func +_1147) + (MCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -553,12 +614,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -590,9 +651,9 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 16) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 16) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1150) (name function_table_global))) + (global_function_table_offset ((stamp 1154) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot index c02432d36d..81c39ffa36 100644 --- a/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot @@ -27,26 +27,36 @@ pattern matching › alias_match_4 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -54,18 +64,22 @@ pattern matching › alias_match_4 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -77,7 +91,7 @@ pattern matching › alias_match_4 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -93,7 +107,7 @@ pattern matching › alias_match_4 (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -116,7 +130,7 @@ pattern matching › alias_match_4 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -134,7 +148,7 @@ pattern matching › alias_match_4 (MIf ((immediate_desc (MImmBinding - (MLocalBind 5 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -177,7 +191,7 @@ pattern matching › alias_match_4 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -205,9 +219,9 @@ pattern matching › alias_match_4 (((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 3) (stack_size_i32 6) (stack_size_i64 0) + ((stack_size_ptr 3) (stack_size_i32 7) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1129) (name function_table_global))) + (global_function_table_offset ((stamp 1130) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot index 0e413ac907..6ce0a08a33 100644 --- a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_5 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -136,26 +136,36 @@ pattern matching › adt_match_5 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -173,27 +183,39 @@ pattern matching › adt_match_5 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 12 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -213,22 +235,35 @@ pattern matching › adt_match_5 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -236,7 +271,7 @@ pattern matching › adt_match_5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -258,9 +293,9 @@ pattern matching › adt_match_5 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) (immediate_analyses @@ -273,16 +308,30 @@ pattern matching › adt_match_5 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -291,7 +340,7 @@ pattern matching › adt_match_5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -359,23 +408,27 @@ pattern matching › adt_match_5 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -429,19 +482,23 @@ pattern matching › adt_match_5 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -473,18 +530,22 @@ pattern matching › adt_match_5 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -504,7 +565,7 @@ pattern matching › adt_match_5 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -531,12 +592,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -550,12 +611,12 @@ pattern matching › adt_match_5 (MStore (((MLocalBind 17 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -585,12 +646,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -622,9 +683,9 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 18) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 18) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1154) (name function_table_global))) + (global_function_table_offset ((stamp 1158) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot index 06a4ce0de3..d0e2953bab 100644 --- a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep5 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -160,26 +160,36 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -197,27 +207,39 @@ pattern matching › tuple_match_deep5 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -237,22 +259,35 @@ pattern matching › tuple_match_deep5 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 19 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -260,7 +295,7 @@ pattern matching › tuple_match_deep5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -282,9 +317,9 @@ pattern matching › tuple_match_deep5 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 21 Managed))) (immediate_analyses @@ -297,16 +332,30 @@ pattern matching › tuple_match_deep5 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -315,7 +364,7 @@ pattern matching › tuple_match_deep5 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -398,23 +447,27 @@ pattern matching › tuple_match_deep5 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -483,19 +536,23 @@ pattern matching › tuple_match_deep5 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -541,18 +598,22 @@ pattern matching › tuple_match_deep5 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -586,7 +647,7 @@ pattern matching › tuple_match_deep5 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -616,12 +677,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -635,12 +696,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -678,12 +739,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -697,12 +758,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -723,12 +784,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -763,12 +824,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -808,9 +869,9 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 25) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 25) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1160) (name function_table_global))) + (global_function_table_offset ((stamp 1164) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot index 7bf1e9cab0..468ddf9b1c 100644 --- a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep7 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1163) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1163) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -192,26 +192,36 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -229,27 +239,39 @@ pattern matching › tuple_match_deep7 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 19 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -269,22 +291,35 @@ pattern matching › tuple_match_deep7 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 21 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 10 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -292,7 +327,7 @@ pattern matching › tuple_match_deep7 (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -314,9 +349,9 @@ pattern matching › tuple_match_deep7 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 23 Managed))) (immediate_analyses @@ -329,16 +364,30 @@ pattern matching › tuple_match_deep7 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) + (((MLocalBind 14 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc @@ -347,7 +396,7 @@ pattern matching › tuple_match_deep7 (MIf ((immediate_desc (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) + (MLocalBind 15 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc @@ -430,23 +479,27 @@ pattern matching › tuple_match_deep7 ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -515,19 +568,23 @@ pattern matching › tuple_match_deep7 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -573,18 +630,22 @@ pattern matching › tuple_match_deep7 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -618,7 +679,7 @@ pattern matching › tuple_match_deep7 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -648,12 +709,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -667,12 +728,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -710,12 +771,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -729,12 +790,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -755,12 +816,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 26 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -795,12 +856,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1163) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1163 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -840,9 +901,9 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 27) (stack_size_i32 12) (stack_size_i64 0) + ((stack_size_ptr 27) (stack_size_i32 16) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1164) (name function_table_global))) + (global_function_table_offset ((stamp 1168) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot index 3353e738dd..e2b653656e 100644 --- a/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot @@ -42,26 +42,36 @@ pattern matching › or_match_3 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -79,27 +89,39 @@ pattern matching › or_match_3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -119,22 +141,35 @@ pattern matching › or_match_3 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 8 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + (((MLocalBind 9 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MCleanup @@ -142,7 +177,7 @@ pattern matching › or_match_3 (MIf ((immediate_desc (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) + (MLocalBind 10 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -155,9 +190,9 @@ pattern matching › or_match_3 ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 7 Managed))) (immediate_analyses @@ -170,23 +205,37 @@ pattern matching › or_match_3 ((last_usage Unknown)))))))) ((instr_desc (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) + (MLocalBind 12 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 14 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) + (MLocalBind 14 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -219,23 +268,27 @@ pattern matching › or_match_3 ((last_usage Unknown)))))))))))) (((instr_desc (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) + (MLocalBind 9 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((immediate_desc - (MImmConst (MConstI32 1))) + (MImmConst + (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc (MImmBinding - (MLocalBind 8 (Unmanaged WasmI32)))) + (MLocalBind 11 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -274,19 +327,23 @@ pattern matching › or_match_3 (immediate_analyses ((last_usage Unknown))))))))) (((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc (MImmBinding - (MLocalBind 3 (Unmanaged WasmI32)))) + (MLocalBind 5 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MDrop @@ -329,7 +386,7 @@ pattern matching › or_match_3 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -351,9 +408,9 @@ pattern matching › or_match_3 (((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 8) (stack_size_i32 11) (stack_size_i64 0) + ((stack_size_ptr 8) (stack_size_i32 15) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1140) (name function_table_global))) + (global_function_table_offset ((stamp 1144) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot index e1ed4c0b4d..ba07f69b9e 100644 --- a/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot @@ -20,26 +20,36 @@ pattern matching › or_match_2 (MStore (((MLocalBind 0 (Unmanaged WasmI32)) ((instr_desc - (MAdtOp MAdtGetTag + (MPrim1 LoadAdtVariant ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore (((MLocalBind 1 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim1 UntagSimpleNumber ((immediate_desc (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 2 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MStore - (((MLocalBind 2 (Unmanaged WasmI32)) + (((MLocalBind 3 (Unmanaged WasmI32)) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -47,18 +57,22 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) + (((MLocalBind 4 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 Is + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))))))) ((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MStore @@ -70,7 +84,7 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) + (((MLocalBind 5 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -86,7 +100,7 @@ pattern matching › or_match_2 (((instr_desc (MIf ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -95,7 +109,7 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -113,7 +127,7 @@ pattern matching › or_match_2 (MIf ((immediate_desc (MImmBinding - (MLocalBind 5 (Unmanaged WasmI32)))) + (MLocalBind 6 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -122,7 +136,7 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -142,7 +156,7 @@ pattern matching › or_match_2 (MIf ((immediate_desc (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) + (MLocalBind 7 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate @@ -171,7 +185,7 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc (MSwitch - ((immediate_desc (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) + ((immediate_desc (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -196,9 +210,9 @@ pattern matching › or_match_2 (immediate_analyses ((last_usage Unknown)))))))) (Unmanaged WasmI32)))))) (main_body_stack_size - ((stack_size_ptr 2) (stack_size_i32 7) (stack_size_i64 0) + ((stack_size_ptr 2) (stack_size_i32 8) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1128) (name function_table_global))) + (global_function_table_offset ((stamp 1129) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/suites/basic_functionality.re b/compiler/test/suites/basic_functionality.re index 22e0d69422..0e603e96ef 100644 --- a/compiler/test/suites/basic_functionality.re +++ b/compiler/test/suites/basic_functionality.re @@ -377,6 +377,6 @@ describe("basic functionality", ({test, testSkip}) => { ~config_fn=smallestFileConfig, "smallest_grain_program", "", - 6498, + 6487, ); }); From 92315d6bf940b31ea8a59565967a3f10e199673b Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Fri, 11 Oct 2024 21:26:33 -0400 Subject: [PATCH 07/10] feat: Use jump table in specific cases --- compiler/src/middle_end/matchcomp.re | 195 ++++++++++++++++++++------- 1 file changed, 145 insertions(+), 50 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index b36b4d2fef..ccab8426e2 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -1204,19 +1204,6 @@ module MatchTreeCompiler = { | [hd, ...tl] => (hd, tl) }; - /* Runs when no cases match */ - let base_tree = Option.value(~default=Fail, default_tree); - let base = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - base_tree, - values, - expr, - helpI, - helpConst, - ); // Get Value Constructor let comp_cond_i32 = v => Imm.const(~loc=Location.dummy_loc, Const_wasmi32(Int32.of_int(v))); @@ -1340,46 +1327,154 @@ module MatchTreeCompiler = { ret_type: Grain_bool, }) }; - /* Fold left should be safe here, since there should be at most one branch - per value */ - let (switch_body_ans, switch_body_setup) = + // Setup Our Switch + let (min, max) = List.fold_left( - ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_values"); - let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - let branch_condition = - Comp.prim2( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - equality_op, - cond_id, - compile_cond(tag), - ); - let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; - let (tree_ans, tree_setup) = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - tree, - values, - expr, - helpI, - helpConst, - ); - let ans = - Comp.if_( - ~loc=Location.dummy_loc, - ~allocation_type=tree_ans.comp_allocation_type, - cmp_id, - fold_tree(tree_setup, tree_ans), - fold_tree(body_setup, body_ans), - ); - (ans, setup); - }, - base, + ((min, max), (t, _)) => (Int.min(min, t), Int.max(max, t)), + (Int.max_int, Int.min_int), cases, ); + let branch_count = List.length(cases); + let branch_range = Int.abs(max - min + 1); + // Printf.printf( + // "%d branches in a range of %d, min: %d, max: %d, default: %s \n", + // branch_count, + // branch_range, + // min, + // max, + // default_tree != None ? "true" : "false", + // ); + // TODO: We do not care about the min == 0 in the future + let optimize = + branch_count == branch_range && default_tree == None && min == 0; + // let optimize = false; + let (switch_body_ans, switch_body_setup) = + if (optimize) { + // Printf.printf("Performing Jump Table Optimiztion\n"); + // let sub_op = + // switch (value_typ) { + // | WasmI32 => + // WasmBinaryI32({ + // wasm_op: Op_add_int32, + // arg_types: (Wasm_int32, Wasm_int32), + // ret_type: Grain_bool, + // }) + // | WasmI64 => + // WasmBinaryI64({ + // wasm_op: Op_add_int64, + // arg_types: (Wasm_int64, Wasm_int64), + // ret_type: Grain_bool, + // }) + // | WasmF32 => + // WasmBinaryF32({ + // wasm_op: Op_add_float32, + // arg_types: (Wasm_float32, Wasm_float32), + // ret_type: Grain_bool, + // }) + // | WasmF64 => + // WasmBinaryF64({ + // wasm_op: Op_add_float64, + // arg_types: (Wasm_float64, Wasm_float64), + // ret_type: Grain_bool, + // }) + // }; + // TODO: Avoid the math if min is 0 + // let match_jmp_name = Ident.create("match_jmp_id"); + // let match_jmp_id = Imm.id(~loc=Location.dummy_loc, match_jmp_name); + // let match_mapped_cond = + // Comp.prim2( + // ~loc=Location.dummy_loc, + // ~allocation_type=Unmanaged(value_typ), + // sub_op, + // cond_id, + // compile_cond(0), + // ); + let cases = + List.map( + ((tag, tree)) => { + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + helpI, + helpConst, + ); + // Printf.printf("Unmapped: %d -> %d\n", tag, tag - min); + (tag - min, fold_tree(tree_setup, tree_ans)); + }, + cases, + ); + let switch_body = + Comp.switch_( + ~loc=Location.dummy_loc, + // TODO: We should probably grab this from ~allocation_type=tree_ans.comp_allocation_type, + ~allocation_type=Unmanaged(WasmI32), + cond_id, + cases, + Total, + ); + ( + switch_body, + [], + // [BLet(match_jmp_name, match_mapped_cond, Nonglobal)], + ); + } else { + // Printf.printf("Not Performing Jump Table Operation\n"); + /* Runs when no cases match */ + let base_tree = Option.value(~default=Fail, default_tree); + let base = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + base_tree, + values, + expr, + helpI, + helpConst, + ); + List.fold_left( + ((body_ans, body_setup), (tag, tree)) => { + let cmp_id_name = Ident.create("match_cmp_values"); + let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); + let branch_condition = + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(WasmI32), + equality_op, + cond_id, + compile_cond(tag), + ); + let setup = [BLet(cmp_id_name, branch_condition, Nonglobal)]; + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + helpI, + helpConst, + ); + let ans = + Comp.if_( + ~loc=Location.dummy_loc, + ~allocation_type=tree_ans.comp_allocation_type, + cmp_id, + fold_tree(tree_setup, tree_ans), + fold_tree(body_setup, body_ans), + ); + (ans, setup); + }, + base, + cases, + ); + }; let switch_setup = cond_binds @ [BLet(cond_name, cond, Nonglobal), ...switch_body_setup]; let switch_body_setup = From 72e95e1a9ac71fa56cec93cd8b0a7c5885d6dd05 Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Fri, 11 Oct 2024 21:26:41 -0400 Subject: [PATCH 08/10] chore: Update snapshots --- .../pattern_matching.05b60a1e.0.snapshot | 118 +-- .../pattern_matching.0ad4ac05.0.snapshot | 898 +++++++++--------- .../pattern_matching.0bb6923e.0.snapshot | 784 ++++++++------- .../pattern_matching.702ed9b0.0.snapshot | 898 +++++++++--------- .../pattern_matching.79346fef.0.snapshot | 898 +++++++++--------- .../pattern_matching.8c0dc67a.0.snapshot | 782 ++++++++------- .../pattern_matching.b1b060ad.0.snapshot | 783 ++++++++------- .../pattern_matching.c91eac29.0.snapshot | 783 ++++++++------- .../pattern_matching.d048ece0.0.snapshot | 784 ++++++++------- .../pattern_matching.e41ad64e.0.snapshot | 898 +++++++++--------- .../pattern_matching.f0c08ea4.0.snapshot | 898 +++++++++--------- 11 files changed, 4173 insertions(+), 4351 deletions(-) diff --git a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot index a1209b880a..c85b95a98c 100644 --- a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot @@ -70,80 +70,56 @@ pattern matching › adt_match_deep (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 4 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 Managed) + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 4 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 2 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 Managed) + ((instr_desc + (MRecordOp (MRecordGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 4 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc (MImmBinding (MLocalBind 4 Managed))) + (immediate_analyses ((last_usage Unknown)))))))) + ((instr_desc + (MDrop ((instr_desc - (MRecordOp (MRecordGet 0) - ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc (MImmBinding (MLocalBind 4 Managed))) - (immediate_analyses ((last_usage Unknown)))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 3 Managed) - ((instr_desc - (MImmediate - ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) - (immediate_analyses ((last_usage Last))))))))))))) - ((instr_desc + (MSet (MLocalBind 3 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmBinding (MLocalBind 5 Managed))) + (immediate_analyses ((last_usage Last))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))) + (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 1)))) + ((immediate_desc MImmTrap) (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 2 Managed))) @@ -153,7 +129,7 @@ pattern matching › adt_match_deep (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -176,9 +152,9 @@ pattern matching › adt_match_deep (((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 6) (stack_size_i32 5) (stack_size_i64 0) + ((stack_size_ptr 6) (stack_size_i32 3) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1131) (name function_table_global))) + (global_function_table_offset ((stamp 1129) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot index 1337ea3087..c9dba3e63c 100644 --- a/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0ad4ac05.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep4 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -159,467 +159,453 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 15 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 16 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 17 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 18 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 3 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 19 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 20 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 10 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 11 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 12 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Unknown)))))) + (immediate_analyses ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 15 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 16 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 17 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 18 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 19 Managed) ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 20 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 7 Managed) + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 11 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 17 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 12 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 19 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 17 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 3 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Last)))))) - (immediate_analyses ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 14 Managed))) @@ -631,7 +617,7 @@ pattern matching › tuple_match_deep4 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -661,12 +647,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -680,12 +666,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -723,12 +709,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -742,12 +728,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -768,12 +754,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -808,12 +794,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -853,9 +839,9 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 24) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 24) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1162) (name function_table_global))) + (global_function_table_offset ((stamp 1160) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot index fdb19da59a..5509440743 100644 --- a/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.0bb6923e.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_4 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -135,411 +135,395 @@ pattern matching › adt_match_4 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 10 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 12 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 14 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 10 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 3 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 3 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 12 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 14 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 5 Managed) + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 3 Managed))) @@ -549,7 +533,7 @@ pattern matching › adt_match_4 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -576,12 +560,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -595,12 +579,12 @@ pattern matching › adt_match_4 (MStore (((MLocalBind 16 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -630,12 +614,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -667,9 +651,9 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 17) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 17) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1156) (name function_table_global))) + (global_function_table_offset ((stamp 1154) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot index 0ff474fc31..d0ebf8ea3e 100644 --- a/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.702ed9b0.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep6 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -191,467 +191,453 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 17 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 18 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 19 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 20 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 5 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 21 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 22 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 22 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 22 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 11 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 12 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 13 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 14 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown)))))) + (immediate_analyses ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 17 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 18 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 19 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 20 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 20 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 21 Managed) ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 22 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 22 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 22 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 9 Managed) + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 11 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 12 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 17 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 13 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 19 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 14 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 21 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 10 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 21 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 17 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 20 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 17 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Last)))))) - (immediate_analyses ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 16 Managed))) @@ -663,7 +649,7 @@ pattern matching › tuple_match_deep6 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -693,12 +679,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1161) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -712,12 +698,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1161) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -755,12 +741,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1161) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -774,12 +760,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1161) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -800,12 +786,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1161) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -840,12 +826,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1161) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1161 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -885,9 +871,9 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 26) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 26) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1166) (name function_table_global))) + (global_function_table_offset ((stamp 1164) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot index 376ae6c0b9..4a89af6fc4 100644 --- a/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.79346fef.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep3 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -143,467 +143,453 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 14 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 16 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 17 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 2 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 18 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 19 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 10 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 11 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))))) + (immediate_analyses ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 14 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 15 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 16 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 17 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 18 Managed) ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 17 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 19 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 17 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 6 Managed) + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 11 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 3 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) + ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 3 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 2 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Last)))))) - (immediate_analyses ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 13 Managed))) @@ -615,7 +601,7 @@ pattern matching › tuple_match_deep3 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -645,12 +631,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -664,12 +650,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 20 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -707,12 +693,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -726,12 +712,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -752,12 +738,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -792,12 +778,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -837,9 +823,9 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 23) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 23) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1160) (name function_table_global))) + (global_function_table_offset ((stamp 1158) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot index 03c390d2d6..e396cba3d6 100644 --- a/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.8c0dc67a.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_1 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1145) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1145) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -87,411 +87,393 @@ pattern matching › adt_match_1 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 7 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 0 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 9 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 11 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 12 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 7 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 7 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 0 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 0 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 8 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 9 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 8 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 10 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 8 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 11 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 12 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 2 Managed) + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 7 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 7 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 3 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 2 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 7 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 3 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 1 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 7 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 1 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 7 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 7 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 8 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 7 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 0 Managed))) @@ -501,7 +483,7 @@ pattern matching › adt_match_1 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -528,12 +510,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -547,12 +529,12 @@ pattern matching › adt_match_1 (MStore (((MLocalBind 13 Managed) ((instr_desc - (MCallKnown (func +_1147) + (MCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -582,12 +564,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -619,9 +601,9 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 14) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 14) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1150) (name function_table_global))) + (global_function_table_offset ((stamp 1148) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot index c54af4faff..2842f87d03 100644 --- a/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.b1b060ad.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_2 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1147) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -103,411 +103,394 @@ pattern matching › adt_match_2 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 8 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 10 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 12 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 8 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 8 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 1 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 1 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 10 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 12 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 3 Managed) + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 8 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 12 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 8 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 3 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 8 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 2 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 8 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 2 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 8 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 1 Managed))) @@ -517,7 +500,7 @@ pattern matching › adt_match_2 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -544,12 +527,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -563,12 +546,12 @@ pattern matching › adt_match_2 (MStore (((MLocalBind 14 Managed) ((instr_desc - (MCallKnown (func +_1149) + (MCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -598,12 +581,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -635,9 +618,9 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 15) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 15) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1152) (name function_table_global))) + (global_function_table_offset ((stamp 1150) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot index d9f4ce9611..a1af46e093 100644 --- a/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_3 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1151) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1149) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -119,411 +119,394 @@ pattern matching › adt_match_3 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 9 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 11 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 12 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 13 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 14 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 9 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 2 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 10 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 2 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 11 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 12 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 13 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 14 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 12 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 4 Managed) + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 4 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 3 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 3 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 10 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 9 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 2 Managed))) @@ -533,7 +516,7 @@ pattern matching › adt_match_3 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -560,12 +543,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -579,12 +562,12 @@ pattern matching › adt_match_3 (MStore (((MLocalBind 15 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -614,12 +597,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -651,9 +634,9 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 16) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 16) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1154) (name function_table_global))) + (global_function_table_offset ((stamp 1152) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot index 6ce0a08a33..a1424d3a46 100644 --- a/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.d048ece0.0.snapshot @@ -2,13 +2,13 @@ pattern matching › adt_match_5 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1155) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1153) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -151,411 +151,395 @@ pattern matching › adt_match_5 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 11 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 12 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 13 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 14 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 15 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 16 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 10 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + ((1 + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 11 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 4 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 12 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 4 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 13 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 14 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 15 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 16 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 6 Managed) + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 15 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 13 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 13 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 12 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 4 Managed))) @@ -565,7 +549,7 @@ pattern matching › adt_match_5 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -592,12 +576,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -611,12 +595,12 @@ pattern matching › adt_match_5 (MStore (((MLocalBind 17 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -646,12 +630,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -683,9 +667,9 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 18) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 18) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1158) (name function_table_global))) + (global_function_table_offset ((stamp 1156) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot index d0e2953bab..7de7701e80 100644 --- a/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.e41ad64e.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep5 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1159) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1157) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -175,467 +175,453 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 16 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 17 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 18 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 19 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 4 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 20 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 21 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 10 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 11 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 12 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 13 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding (MLocalBind 14 Managed))) + (immediate_analyses ((last_usage Unknown)))))) + (immediate_analyses ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 16 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 17 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 15 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 18 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 19 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 20 Managed) ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 21 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 19 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 21 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 21 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 8 Managed) + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 11 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 12 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 13 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 20 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 5 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 14 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 6 Managed) + ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 5 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 4 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Last)))))) - (immediate_analyses ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 15 Managed))) @@ -647,7 +633,7 @@ pattern matching › tuple_match_deep5 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -677,12 +663,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -696,12 +682,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -739,12 +725,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -758,12 +744,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -784,12 +770,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -824,12 +810,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -869,9 +855,9 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 25) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 25) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1164) (name function_table_global))) + (global_function_table_offset ((stamp 1162) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) diff --git a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot index 468ddf9b1c..6be934229a 100644 --- a/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f0c08ea4.0.snapshot @@ -2,13 +2,13 @@ pattern matching › tuple_match_deep7 ((mash_code ((functions ()) (imports - (((mimp_id ((stamp 1163) (name +))) (mimp_mod pervasives.gr) + (((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MFuncImport (Managed (Unmanaged WasmI32) (Unmanaged WasmI32)) ((Unmanaged WasmI32)))) (mimp_kind MImportGrain) (mimp_setup MSetupNone) (mimp_used true)) - ((mimp_id ((stamp 1163) (name +))) (mimp_mod pervasives.gr) + ((mimp_id ((stamp 1161) (name +))) (mimp_mod pervasives.gr) (mimp_name +) (mimp_type (MGlobalImport Managed true)) (mimp_kind MImportGrain) (mimp_setup MCallGetter) (mimp_used true)))) (exports ()) @@ -207,467 +207,453 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) (ret_type Grain_bool)) + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 18 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 19 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 7 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 20 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 21 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 10 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 9 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 6 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 11 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MStore - (((MLocalBind 22 Managed) - ((instr_desc - (MAdtOp (MAdtGet 0) - ((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 23 Managed) - ((instr_desc - (MAdtOp (MAdtGet 1) - ((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 13 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 LoadAdtVariant - ((immediate_desc - (MImmBinding (MLocalBind 23 Managed))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MCleanup () - (((immediate_desc - (MImmBinding (MLocalBind 23 Managed))) - (immediate_analyses - ((last_usage Unknown)))))))) - ((instr_desc - (MStore - (((MLocalBind 14 (Unmanaged WasmI32)) - ((instr_desc - (MPrim1 UntagSimpleNumber - ((immediate_desc - (MImmBinding - (MLocalBind 13 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 15 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 14 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 15 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 12 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 13 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 14 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 15 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 22 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 3)))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 22 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 12 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 1)))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 12 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding (MLocalBind 16 Managed))) + (immediate_analyses ((last_usage Unknown)))))) + (immediate_analyses ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown))))))))) + (0 + (((instr_desc + (MStore + (((MLocalBind 18 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 19 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 17 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 3 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 4 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 5 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 5 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 20 Managed) + ((instr_desc + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 21 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 7 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding (MLocalBind 21 Managed))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 8 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 7 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 9 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 9 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MStore + (((MLocalBind 22 Managed) ((instr_desc - (MSet (MLocalBind 9 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop + (MAdtOp (MAdtGet 0) + ((immediate_desc + (MImmBinding + (MLocalBind 21 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 23 Managed) + ((instr_desc + (MAdtOp (MAdtGet 1) + ((immediate_desc + (MImmBinding + (MLocalBind 21 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 11 (Unmanaged WasmI32)) + ((instr_desc + (MPrim1 LoadAdtVariant + ((immediate_desc + (MImmBinding + (MLocalBind 23 Managed))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MCleanup () + (((immediate_desc + (MImmBinding (MLocalBind 23 Managed))) + (immediate_analyses + ((last_usage Unknown)))))))) + ((instr_desc + (MStore + (((MLocalBind 12 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 10 Managed) + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 12 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MCleanup + (((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 13 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 12 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 13 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 14 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 20 + Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 15 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 22 + Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) ((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) + (MImmConst + (MConstLiteral (MConstI32 3)))) (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 11 Managed) - ((instr_desc + ((last_usage Unknown)))))))) + (((instr_desc (MImmediate ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding - (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Last)))))) + (MImmConst + (MConstLiteral (MConstI32 4)))) (immediate_analyses - ((last_usage Unknown))))))))))))) + ((last_usage Unknown)))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 22 Managed))) + (immediate_analyses + ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 10 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))) + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 1)))) + (immediate_analyses + ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding + (MLocalBind 10 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 9 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 10 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Unknown)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 11 Managed) + ((instr_desc + (MImmediate + ((immediate_desc + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 20 Managed))) + (immediate_analyses + ((last_usage Last)))))) + (immediate_analyses + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 2)))) + (immediate_analyses + ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst + (MConstLiteral (MConstI32 4)))) + (immediate_analyses + ((last_usage Unknown)))))))))))))))) + (((immediate_desc + (MImmBinding (MLocalBind 21 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc + (MImmBinding (MLocalBind 20 Managed))) + (immediate_analyses ((last_usage Unknown))))))))) + (((instr_desc + (MStore + (((MLocalBind 6 (Unmanaged WasmI32)) + ((instr_desc + (MPrim2 + (WasmBinaryI32 (wasm_op Op_eq_int32) + (arg_types (Wasm_int32 Wasm_int32)) + (ret_type Grain_bool)) + ((immediate_desc + (MImmBinding + (MLocalBind 4 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))))))) + ((instr_desc + (MIf + ((immediate_desc + (MImmBinding (MLocalBind 6 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))) + (((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 7 Managed) ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 2)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 16 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc + ((last_usage Unknown))))))))))))) + ((instr_desc + (MDrop + ((instr_desc + (MSet (MLocalBind 8 Managed) + ((instr_desc (MImmediate ((immediate_desc - (MImmConst - (MConstLiteral (MConstI32 4)))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 18 Managed))) + (immediate_analyses + ((last_usage Last)))))) (immediate_analyses - ((last_usage Unknown)))))))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding - (MLocalBind 6 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 8 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 7 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses - ((last_usage Unknown)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 8 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 4)))) - (immediate_analyses ((last_usage Unknown)))))))))))))))) - (((immediate_desc (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown))))))))) + ((last_usage Unknown))))))))))))) + ((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 1)))) + (immediate_analyses ((last_usage Unknown)))))))) + (((instr_desc + (MImmediate + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 4)))) + (immediate_analyses ((last_usage Unknown)))))))))))))))) + (((immediate_desc (MImmBinding (MLocalBind 19 Managed))) + (immediate_analyses ((last_usage Unknown)))) + ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) + (immediate_analyses ((last_usage Unknown))))))))))) (((instr_desc - (MStore - (((MLocalBind 4 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 - (WasmBinaryI32 (wasm_op Op_eq_int32) - (arg_types (Wasm_int32 Wasm_int32)) - (ret_type Grain_bool)) - ((immediate_desc - (MImmBinding (MLocalBind 1 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 1)))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MDrop - ((instr_desc - (MSet (MLocalBind 6 Managed) - ((instr_desc - (MImmediate - ((immediate_desc - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Last)))))) - (immediate_analyses ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstLiteral (MConstI32 0)))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc MImmTrap) - (immediate_analyses ((last_usage Unknown)))))))))))))))))))) + (MImmediate + ((immediate_desc MImmTrap) + (immediate_analyses ((last_usage Unknown)))))))) + (Unmanaged WasmI32))))))))) ((instr_desc (MCleanup () (((immediate_desc (MImmBinding (MLocalBind 17 Managed))) @@ -679,7 +665,7 @@ pattern matching › tuple_match_deep7 (((instr_desc (MSwitch ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) + (MImmBinding (MLocalBind 2 (Unmanaged WasmI32)))) (immediate_analyses ((last_usage Last)))) ((0 (((instr_desc @@ -709,12 +695,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1163) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -728,12 +714,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1163) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -771,12 +757,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1163) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -790,12 +776,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1163) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -816,12 +802,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 26 Managed) ((instr_desc - (MCallKnown (func +_1163) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -856,12 +842,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1163) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1163 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -901,9 +887,9 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))))) (main_body_stack_size - ((stack_size_ptr 27) (stack_size_i32 16) (stack_size_i64 0) + ((stack_size_ptr 27) (stack_size_i32 14) (stack_size_i64 0) (stack_size_f32 0) (stack_size_f64 0))) (globals ()) (function_table_elements ()) - (global_function_table_offset ((stamp 1168) (name function_table_global))) + (global_function_table_offset ((stamp 1166) (name function_table_global))) (compilation_mode Normal) (type_metadata ))) (signature )) From 0c2aad60fca35be47fea9bb58d8d12bc0a806bee Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Fri, 11 Oct 2024 21:52:21 -0400 Subject: [PATCH 09/10] chore: cleanup --- compiler/src/middle_end/matchcomp.re | 170 ++++++++++++--------------- 1 file changed, 77 insertions(+), 93 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index ccab8426e2..b3041a9679 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -688,13 +688,6 @@ let rec compile_matrix = mtx => let constants = matrix_head_constants(mtx); let constant_type = List.hd(constants); - // TODO(#1185): Optimize physical equality checks into a switch. - // We can also do partial switches on Numbers if some of the - // patterns are stack-allocated numbers. Addtionally, since we - // know the types of the non-Number number types, we can make - // compilation smarter and also switch on those values after - // loaded from the heap. - let default = default_matrix(alias, mtx); let default_tree = if (List.length(default) != 0) { @@ -1300,33 +1293,6 @@ module MatchTreeCompiler = { [], ) }; - let equality_op = - switch (value_typ) { - | WasmI32 => - WasmBinaryI32({ - wasm_op: Op_eq_int32, - arg_types: (Wasm_int32, Wasm_int32), - ret_type: Grain_bool, - }) - | WasmI64 => - WasmBinaryI64({ - wasm_op: Op_eq_int64, - arg_types: (Wasm_int64, Wasm_int64), - ret_type: Grain_bool, - }) - | WasmF32 => - WasmBinaryF32({ - wasm_op: Op_eq_float32, - arg_types: (Wasm_float32, Wasm_float32), - ret_type: Grain_bool, - }) - | WasmF64 => - WasmBinaryF64({ - wasm_op: Op_eq_float64, - arg_types: (Wasm_float64, Wasm_float64), - ret_type: Grain_bool, - }) - }; // Setup Our Switch let (min, max) = List.fold_left( @@ -1336,59 +1302,56 @@ module MatchTreeCompiler = { ); let branch_count = List.length(cases); let branch_range = Int.abs(max - min + 1); - // Printf.printf( - // "%d branches in a range of %d, min: %d, max: %d, default: %s \n", - // branch_count, - // branch_range, - // min, - // max, - // default_tree != None ? "true" : "false", - // ); - // TODO: We do not care about the min == 0 in the future - let optimize = - branch_count == branch_range && default_tree == None && min == 0; - // let optimize = false; + let optimize = branch_count == branch_range && default_tree == None; let (switch_body_ans, switch_body_setup) = if (optimize) { - // Printf.printf("Performing Jump Table Optimiztion\n"); - // let sub_op = - // switch (value_typ) { - // | WasmI32 => - // WasmBinaryI32({ - // wasm_op: Op_add_int32, - // arg_types: (Wasm_int32, Wasm_int32), - // ret_type: Grain_bool, - // }) - // | WasmI64 => - // WasmBinaryI64({ - // wasm_op: Op_add_int64, - // arg_types: (Wasm_int64, Wasm_int64), - // ret_type: Grain_bool, - // }) - // | WasmF32 => - // WasmBinaryF32({ - // wasm_op: Op_add_float32, - // arg_types: (Wasm_float32, Wasm_float32), - // ret_type: Grain_bool, - // }) - // | WasmF64 => - // WasmBinaryF64({ - // wasm_op: Op_add_float64, - // arg_types: (Wasm_float64, Wasm_float64), - // ret_type: Grain_bool, - // }) - // }; - // TODO: Avoid the math if min is 0 - // let match_jmp_name = Ident.create("match_jmp_id"); - // let match_jmp_id = Imm.id(~loc=Location.dummy_loc, match_jmp_name); - // let match_mapped_cond = - // Comp.prim2( - // ~loc=Location.dummy_loc, - // ~allocation_type=Unmanaged(value_typ), - // sub_op, - // cond_id, - // compile_cond(0), - // ); + let sub_op = + switch (value_typ) { + | WasmI32 => + WasmBinaryI32({ + wasm_op: Op_sub_int32, + arg_types: (Wasm_int32, Wasm_int32), + ret_type: Wasm_int32, + }) + | WasmI64 => + WasmBinaryI64({ + wasm_op: Op_sub_int64, + arg_types: (Wasm_int64, Wasm_int64), + ret_type: Wasm_int32, + }) + | WasmF32 => + WasmBinaryF32({ + wasm_op: Op_sub_float32, + arg_types: (Wasm_float32, Wasm_float32), + ret_type: Wasm_int32, + }) + | WasmF64 => + WasmBinaryF64({ + wasm_op: Op_sub_float64, + arg_types: (Wasm_float64, Wasm_float64), + ret_type: Wasm_int32, + }) + }; + let (match_cond_id, match_cond_binds) = + if (min == 0) { + (cond_id, []); + } else { + let match_jmp_name = Ident.create("match_jmp_id"); + let match_jmp_id = + Imm.id(~loc=Location.dummy_loc, match_jmp_name); + let match_mapped_cond = + Comp.prim2( + ~loc=Location.dummy_loc, + ~allocation_type=Unmanaged(value_typ), + sub_op, + cond_id, + compile_cond(min), + ); + ( + match_jmp_id, + [BLet(match_jmp_name, match_mapped_cond, Nonglobal)], + ); + }; let cases = List.map( ((tag, tree)) => { @@ -1403,7 +1366,6 @@ module MatchTreeCompiler = { helpI, helpConst, ); - // Printf.printf("Unmapped: %d -> %d\n", tag, tag - min); (tag - min, fold_tree(tree_setup, tree_ans)); }, cases, @@ -1413,17 +1375,12 @@ module MatchTreeCompiler = { ~loc=Location.dummy_loc, // TODO: We should probably grab this from ~allocation_type=tree_ans.comp_allocation_type, ~allocation_type=Unmanaged(WasmI32), - cond_id, + match_cond_id, cases, Total, ); - ( - switch_body, - [], - // [BLet(match_jmp_name, match_mapped_cond, Nonglobal)], - ); + (switch_body, match_cond_binds); } else { - // Printf.printf("Not Performing Jump Table Operation\n"); /* Runs when no cases match */ let base_tree = Option.value(~default=Fail, default_tree); let base = @@ -1437,6 +1394,33 @@ module MatchTreeCompiler = { helpI, helpConst, ); + let equality_op = + switch (value_typ) { + | WasmI32 => + WasmBinaryI32({ + wasm_op: Op_eq_int32, + arg_types: (Wasm_int32, Wasm_int32), + ret_type: Grain_bool, + }) + | WasmI64 => + WasmBinaryI64({ + wasm_op: Op_eq_int64, + arg_types: (Wasm_int64, Wasm_int64), + ret_type: Grain_bool, + }) + | WasmF32 => + WasmBinaryF32({ + wasm_op: Op_eq_float32, + arg_types: (Wasm_float32, Wasm_float32), + ret_type: Grain_bool, + }) + | WasmF64 => + WasmBinaryF64({ + wasm_op: Op_eq_float64, + arg_types: (Wasm_float64, Wasm_float64), + ret_type: Grain_bool, + }) + }; List.fold_left( ((body_ans, body_setup), (tag, tree)) => { let cmp_id_name = Ident.create("match_cmp_values"); From 2a605c42c78494ac8fe65cf33a99449772c5de6c Mon Sep 17 00:00:00 2001 From: Spotandjake Date: Fri, 11 Oct 2024 22:20:05 -0400 Subject: [PATCH 10/10] feat: do not hardcode allocation type --- compiler/src/middle_end/matchcomp.re | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/src/middle_end/matchcomp.re b/compiler/src/middle_end/matchcomp.re index b3041a9679..58f8d3bb2a 100644 --- a/compiler/src/middle_end/matchcomp.re +++ b/compiler/src/middle_end/matchcomp.re @@ -1352,6 +1352,7 @@ module MatchTreeCompiler = { [BLet(match_jmp_name, match_mapped_cond, Nonglobal)], ); }; + let allocation_type = ref(Unmanaged(WasmI32)); let cases = List.map( ((tag, tree)) => { @@ -1366,15 +1367,16 @@ module MatchTreeCompiler = { helpI, helpConst, ); + allocation_type := tree_ans.comp_allocation_type; (tag - min, fold_tree(tree_setup, tree_ans)); }, cases, ); + assert(List.length(cases) != 0); let switch_body = Comp.switch_( ~loc=Location.dummy_loc, - // TODO: We should probably grab this from ~allocation_type=tree_ans.comp_allocation_type, - ~allocation_type=Unmanaged(WasmI32), + ~allocation_type=allocation_type^, match_cond_id, cases, Total,