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 c1275ad5bb..58f8d3bb2a 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,7 @@ and matrix_type = | ConstantMatrix and switch_type = + | ConstantSwitch(constant) | ConstructorSwitch | ArraySwitch @@ -556,6 +558,25 @@ 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(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 + }; + 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,18 +682,11 @@ 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)); - - // 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 constant_type = List.hd(constants); let default = default_matrix(alias, mtx); let default_tree = @@ -682,15 +696,44 @@ 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 (get_constant_tag(constant_type)) { + | Some(_) => + 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( + ConstantSwitch(constant_type), + Some(alias), + 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); + let result = compile_matrix(specialized); + Conditional((equality_type, const), alias, result, acc); + }, + constants, + default_tree, + ); + }; }; | _ => /* Adjust stack so non-wildcard column is on top */ @@ -717,6 +760,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(_) @@ -848,7 +897,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), @@ -1141,97 +1190,296 @@ 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) }; - /* 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, - ); - let value_constr_name = Ident.create("match_constructor"); - let value_constr_id = - Imm.id(~loc=Location.dummy_loc, value_constr_name); - let value_constr = + // 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 => - Comp.adt_get_tag(~loc=Location.dummy_loc, cur_value) - | ArraySwitch => - Comp.prim1( - ~loc=Location.dummy_loc, - ~allocation_type=Unmanaged(WasmI32), - ArrayLength, - cur_value, + | ConstantSwitch(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) }; - /* Fold left should be safe here, since there should be at most one branch - per constructor */ - let (switch_body_ans, switch_body_setup) = + 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, + ~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, + ); + ( + 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, + ), + [], + ) + }; + // Setup Our Switch + let (min, max) = List.fold_left( - ((body_ans, body_setup), (tag, tree)) => { - let cmp_id_name = Ident.create("match_cmp_constructors"); - let cmp_id = Imm.id(~loc=Location.dummy_loc, cmp_id_name); - /* If the constructor has the correct tag, execute this branch. - Otherwise continue. */ - let setup = [ - BLet( - cmp_id_name, + ((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); + let optimize = branch_count == branch_range && default_tree == None; + let (switch_body_ans, switch_body_setup) = + if (optimize) { + 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(WasmI32), - Is, - value_constr_id, - Imm.const( - ~loc=Location.dummy_loc, - Const_number(Const_number_int(Int64.of_int(tag))), - ), - ), - Nonglobal, - ), - ]; - let (tree_ans, tree_setup) = - compile_tree_help( - ~loc, - ~env, - ~mut_boxing, - tree, - values, - expr, - helpI, - helpConst, + ~allocation_type=Unmanaged(value_typ), + sub_op, + cond_id, + compile_cond(min), + ); + ( + match_jmp_id, + [BLet(match_jmp_name, match_mapped_cond, Nonglobal)], ); - let ans = - Comp.if_( + }; + let allocation_type = ref(Unmanaged(WasmI32)); + let cases = + List.map( + ((tag, tree)) => { + let (tree_ans, tree_setup) = + compile_tree_help( + ~loc, + ~env, + ~mut_boxing, + tree, + values, + expr, + 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, + ~allocation_type=allocation_type^, + match_cond_id, + cases, + Total, + ); + (switch_body, match_cond_binds); + } else { + /* 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, + ); + 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"); + 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) => [ + BLet( + alias, + Comp.imm( ~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, - ], - ); + ~allocation_type=Managed, + cur_value, + ), + Nonglobal, + ), + ...switch_setup, + ] + | None => switch_setup + }; + (switch_body_ans, switch_body_setup); }; }; diff --git a/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot b/compiler/test/__snapshots__/basic_functionality.711a4824.0.snapshot index 0f5bced37e..5edcb2d543 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,22 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (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 +133,22 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc + (MImmConst (MConstLiteral (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 +157,23 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 2))) + ((immediate_desc + (MImmConst (MConstLiteral (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 +183,17 @@ basic functionality › pattern_match_unsafe_wasm (immediate_analyses ((last_usage Last)))) (((instr_desc (MImmediate - ((immediate_desc (MImmConst (MConstI32 3))) + ((immediate_desc + (MImmConst (MConstLiteral (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 +201,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 +213,18 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 4))) + (MImmConst + (MConstLiteral (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 +232,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,13 +244,15 @@ basic functionality › pattern_match_unsafe_wasm (((instr_desc (MImmediate ((immediate_desc - (MImmConst (MConstI32 5))) + (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 @@ -258,12 +282,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 +316,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 +350,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 +384,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 +418,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 +452,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 +490,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.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..c85b95a98c 100644 --- a/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.05b60a1e.0.snapshot @@ -55,80 +55,71 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 (MConstI32 1))) + ((immediate_desc MImmTrap) (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MStore - (((MLocalBind 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -161,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 4) (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 1130) (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 50913ffc17..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 1153) (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 1153) (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 ()) @@ -144,414 +144,468 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 16 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 3 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 7 Managed) + (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 (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 (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 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (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 (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (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 (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))) @@ -593,12 +647,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -612,12 +666,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -655,12 +709,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -674,12 +728,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -700,12 +754,12 @@ pattern matching › tuple_match_deep4 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1153) + (MCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -740,12 +794,12 @@ pattern matching › tuple_match_deep4 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1153) + (MReturnCallKnown (func +_1155) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1153 Managed))) + (MImmBinding (MGlobalBind +_1155 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -785,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 12) (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 1158) (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 b1c73a12e6..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 1149) (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 1149) (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 ()) @@ -120,358 +120,410 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (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 - (MSet (MLocalBind 5 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 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 (MConstI32 2))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 10 Managed))) + (immediate_analyses + ((last_usage Last)))))) (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 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -508,12 +560,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -527,12 +579,12 @@ pattern matching › adt_match_4 (MStore (((MLocalBind 16 Managed) ((instr_desc - (MCallKnown (func +_1149) + (MCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -562,12 +614,12 @@ pattern matching › adt_match_4 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1149) + (MReturnCallKnown (func +_1151) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1149 Managed))) + (MImmBinding (MGlobalBind +_1151 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -599,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 12) (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 1152) (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.0fa61137.0.snapshot b/compiler/test/__snapshots__/pattern_matching.0fa61137.0.snapshot index f5d9a897da..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 (MConstI32 0))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 2)))) (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 @@ -84,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 @@ -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 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,12 +161,12 @@ 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) (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.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..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 @@ -69,22 +79,26 @@ 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 - (((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 @@ -130,11 +144,12 @@ 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 - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -152,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 @@ -171,11 +186,12 @@ 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 - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -195,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 @@ -215,20 +231,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 () @@ -239,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 @@ -278,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.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..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 1157) (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 1157) (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 ()) @@ -176,414 +176,468 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 5 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 9 Managed) + (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 (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 (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 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (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 (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (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 (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))) @@ -625,12 +679,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -644,12 +698,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -687,12 +741,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -706,12 +760,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -732,12 +786,12 @@ pattern matching › tuple_match_deep6 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1157) + (MCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -772,12 +826,12 @@ pattern matching › tuple_match_deep6 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1157) + (MReturnCallKnown (func +_1159) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1157 Managed))) + (MImmBinding (MGlobalBind +_1159 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -817,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 12) (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 1162) (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.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..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 1151) (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 1151) (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 ()) @@ -128,414 +128,468 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 2 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 18 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 6 Managed) + (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 (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 (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 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (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 (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (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 (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))) @@ -577,12 +631,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -596,12 +650,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 20 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -639,12 +693,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -658,12 +712,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 21 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -684,12 +738,12 @@ pattern matching › tuple_match_deep3 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -724,12 +778,12 @@ pattern matching › tuple_match_deep3 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -769,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 12) (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 1156) (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.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..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 1143) (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 1143) (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 ()) @@ -72,358 +72,408 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (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 - (MSet (MLocalBind 2 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 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 (MConstI32 2))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 7 Managed))) + (immediate_analyses + ((last_usage Last)))))) (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 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 7 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -460,12 +510,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1143) + (MReturnCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -479,12 +529,12 @@ pattern matching › adt_match_1 (MStore (((MLocalBind 13 Managed) ((instr_desc - (MCallKnown (func +_1143) + (MCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -514,12 +564,12 @@ pattern matching › adt_match_1 ((immediate_desc (MImmBinding (MLocalBind 1 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1143) + (MReturnCallKnown (func +_1145) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1143 Managed))) + (MImmBinding (MGlobalBind +_1145 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -551,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 12) (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 1146) (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.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..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 1145) (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 1145) (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 ()) @@ -88,358 +88,409 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (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 - (MSet (MLocalBind 3 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 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 (MConstI32 2))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 8 Managed))) + (immediate_analyses + ((last_usage Last)))))) (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 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 8 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -476,12 +527,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1145) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -495,12 +546,12 @@ pattern matching › adt_match_2 (MStore (((MLocalBind 14 Managed) ((instr_desc - (MCallKnown (func +_1145) + (MCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -530,12 +581,12 @@ pattern matching › adt_match_2 ((immediate_desc (MImmBinding (MLocalBind 2 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1145) + (MReturnCallKnown (func +_1147) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1145 Managed))) + (MImmBinding (MGlobalBind +_1147 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -567,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 12) (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 1148) (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.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 f633dbaa05..bc8a145c34 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 (MConstLiteral (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)))) @@ -65,18 +70,22 @@ 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 (((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,11 +94,13 @@ 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 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 @@ -150,12 +161,12 @@ 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) (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.c91eac29.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c91eac29.0.snapshot index ae0a1a1ed3..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 1147) (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 1147) (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 ()) @@ -104,358 +104,409 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 10 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 13 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (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 - (MSet (MLocalBind 4 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 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 (MConstI32 2))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 9 Managed))) + (immediate_analyses + ((last_usage Last)))))) (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 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 9 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -492,12 +543,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -511,12 +562,12 @@ pattern matching › adt_match_3 (MStore (((MLocalBind 15 Managed) ((instr_desc - (MCallKnown (func +_1147) + (MCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -546,12 +597,12 @@ pattern matching › adt_match_3 ((immediate_desc (MImmBinding (MLocalBind 3 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1147) + (MReturnCallKnown (func +_1149) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1147 Managed))) + (MImmBinding (MGlobalBind +_1149 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -583,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 12) (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 1150) (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.c9582b6d.0.snapshot b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot index 18157d1e7e..81c39ffa36 100644 --- a/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.c9582b6d.0.snapshot @@ -27,45 +27,59 @@ 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 - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 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 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 @@ -111,11 +125,12 @@ 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 - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -133,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 @@ -152,17 +167,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 () @@ -173,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 @@ -201,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 c13fe6c722..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 1151) (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 1151) (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 ()) @@ -136,358 +136,410 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 12 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 14 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 15 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (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 - (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 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 (MConstI32 2))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) + (MIncRef + ((immediate_desc + (MImmBinding + (MLocalBind 11 Managed))) + (immediate_analyses + ((last_usage Last)))))) (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 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (MIncRef - ((immediate_desc - (MImmBinding (MLocalBind 11 Managed))) - (immediate_analyses - ((last_usage Last)))))) - (immediate_analyses - ((last_usage Unknown))))))))))))) - ((instr_desc - (MImmediate - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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))) @@ -524,12 +576,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -543,12 +595,12 @@ pattern matching › adt_match_5 (MStore (((MLocalBind 17 Managed) ((instr_desc - (MCallKnown (func +_1151) + (MCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -578,12 +630,12 @@ pattern matching › adt_match_5 ((immediate_desc (MImmBinding (MLocalBind 5 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1151) + (MReturnCallKnown (func +_1153) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1151 Managed))) + (MImmBinding (MGlobalBind +_1153 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -615,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 12) (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 1154) (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.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..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 1155) (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 1155) (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 ()) @@ -160,414 +160,468 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 17 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 4 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 20 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 8 Managed) + (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 (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 (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 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (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 (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (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 (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))) @@ -609,12 +663,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -628,12 +682,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 22 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -671,12 +725,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -690,12 +744,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 23 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -716,12 +770,12 @@ pattern matching › tuple_match_deep5 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1155) + (MCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -756,12 +810,12 @@ pattern matching › tuple_match_deep5 ((immediate_desc (MImmBinding (MLocalBind 4 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1155) + (MReturnCallKnown (func +_1157) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1155 Managed))) + (MImmBinding (MGlobalBind +_1157 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -801,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 12) (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 1160) (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.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..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 1159) (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 1159) (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 ()) @@ -192,414 +192,468 @@ 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 Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (immediate_analyses ((last_usage Last)))))))))))) ((instr_desc (MStore (((MLocalBind 2 (Unmanaged WasmI32)) ((instr_desc - (MIf + (MSwitch ((immediate_desc (MImmBinding (MLocalBind 1 (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 4 (Unmanaged WasmI32)) + ((1 + (((instr_desc + (MDrop ((instr_desc - (MAdtOp MAdtGetTag - ((immediate_desc (MImmBinding (MLocalBind 19 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (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 - (MAdtOp MAdtGetTag - ((immediate_desc - (MImmBinding (MLocalBind 21 Managed))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MStore - (((MLocalBind 8 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Unknown)))) - ((immediate_desc (MImmConst (MConstI32 0))) - (immediate_analyses ((last_usage Unknown)))))))))))) + (MSet (MLocalBind 6 Managed) ((instr_desc - (MCleanup - (((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 8 (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 10 (Unmanaged WasmI32)) - ((instr_desc - (MAdtOp MAdtGetTag - ((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 11 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 10 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (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 - (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 (MConstI32 3))) - (immediate_analyses - ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc - (MImmConst (MConstI32 4))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - (((immediate_desc - (MImmBinding (MLocalBind 22 Managed))) - (immediate_analyses - ((last_usage Unknown))))))))) - (((instr_desc - (MStore - (((MLocalBind 9 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 7 (Unmanaged WasmI32)))) - (immediate_analyses - ((last_usage Last)))) - ((immediate_desc - (MImmConst (MConstI32 1))) - (immediate_analyses - ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding - (MLocalBind 9 (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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 11 + (Unmanaged WasmI32)))) + (immediate_analyses + ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 13 (Unmanaged WasmI32)) ((instr_desc - (MSet (MLocalBind 10 Managed) + (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 (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 (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 6 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding - (MLocalBind 4 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (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 - (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 (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))) - (((instr_desc - (MImmediate - ((immediate_desc (MImmConst (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 3 (Unmanaged WasmI32)) - ((instr_desc - (MPrim2 Is - ((immediate_desc - (MImmBinding (MLocalBind 0 (Unmanaged WasmI32)))) - (immediate_analyses ((last_usage Last)))) - ((immediate_desc (MImmConst (MConstI32 1))) - (immediate_analyses ((last_usage Unknown)))))))))))) - ((instr_desc - (MIf - ((immediate_desc - (MImmBinding (MLocalBind 3 (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 (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))) @@ -641,12 +695,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -660,12 +714,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 24 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -703,12 +757,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage TailCallLast)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -722,12 +776,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 25 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -748,12 +802,12 @@ pattern matching › tuple_match_deep7 (MStore (((MLocalBind 26 Managed) ((instr_desc - (MCallKnown (func +_1159) + (MCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Unknown)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -788,12 +842,12 @@ pattern matching › tuple_match_deep7 ((immediate_desc (MImmBinding (MLocalBind 6 Managed))) (immediate_analyses ((last_usage Unknown)))))))) ((instr_desc - (MReturnCallKnown (func +_1159) + (MReturnCallKnown (func +_1161) (closure ((immediate_desc (MIncRef ((immediate_desc - (MImmBinding (MGlobalBind +_1159 Managed))) + (MImmBinding (MGlobalBind +_1161 Managed))) (immediate_analyses ((last_usage Last)))))) (immediate_analyses ((last_usage Unknown))))) (func_type ((Managed Managed) (Managed))) @@ -833,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 12) (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 1164) (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.f25e0163.0.snapshot b/compiler/test/__snapshots__/pattern_matching.f25e0163.0.snapshot index 384d943bbc..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 + (MPrim1 UntagSimpleNumber + ((immediate_desc + (MImmBinding + (MLocalBind 8 (Unmanaged WasmI32)))) + (immediate_analyses ((last_usage Last)))))))))))) + ((instr_desc + (MStore + (((MLocalBind 10 (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 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 @@ -206,34 +255,40 @@ 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 (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 @@ -253,13 +308,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 @@ -270,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 @@ -300,11 +361,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 +375,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 () @@ -323,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 @@ -345,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.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..ba07f69b9e 100644 --- a/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot +++ b/compiler/test/__snapshots__/pattern_matching.f6c9c89c.0.snapshot @@ -20,45 +20,59 @@ 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 - ((immediate_desc (MImmConst (MConstI32 1))) + ((immediate_desc (MImmConst (MConstLiteral (MConstI32 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 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,15 +100,16 @@ 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 - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 5 (Unmanaged WasmI32)) + (((MLocalBind 6 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -112,15 +127,16 @@ 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 - ((immediate_desc (MImmConst (MConstI32 0))) + ((immediate_desc + (MImmConst (MConstLiteral (MConstI32 0)))) (immediate_analyses ((last_usage Unknown)))))))) (((instr_desc (MStore - (((MLocalBind 6 (Unmanaged WasmI32)) + (((MLocalBind 7 (Unmanaged WasmI32)) ((instr_desc (MPrim2 Eq ((immediate_desc @@ -140,25 +156,28 @@ 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 ((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 () @@ -166,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 @@ -191,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/__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..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", "", - 6507, + 6487, ); });