1;;! target = "x86_64" 2;;! flags = "-W function-references,gc -C collector=null" 3;;! test = "optimize" 4 5(module 6 (type $ty (struct (field (mut f32)) 7 (field (mut i8)) 8 (field (mut anyref)))) 9 10 (func (param (ref null $ty) f32) 11 (struct.set $ty 0 (local.get 0) (local.get 1)) 12 ) 13 14 (func (param (ref null $ty) i32) 15 (struct.set $ty 1 (local.get 0) (local.get 1)) 16 ) 17 18 (func (param (ref null $ty) anyref) 19 (struct.set $ty 2 (local.get 0) (local.get 1)) 20 ) 21) 22;; function u0:0(i64 vmctx, i64, i32, f32) tail { 23;; gv0 = vmctx 24;; gv1 = load.i64 notrap aligned readonly gv0+8 25;; gv2 = load.i64 notrap aligned gv1+24 26;; gv3 = vmctx 27;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 28;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 29;; gv6 = load.i64 notrap aligned gv4+40 30;; stack_limit = gv2 31;; 32;; block0(v0: i64, v1: i64, v2: i32, v3: f32): 33;; @0034 trapz v2, user15 34;; @0034 v9 = load.i64 notrap aligned readonly can_move v0+8 35;; @0034 v5 = load.i64 notrap aligned readonly can_move v9+32 36;; @0034 v4 = uextend.i64 v2 37;; @0034 v6 = iadd v5, v4 38;; @0034 v7 = iconst.i64 8 39;; @0034 v8 = iadd v6, v7 ; v7 = 8 40;; @0034 store notrap aligned little v3, v8 41;; @0038 jump block1 42;; 43;; block1: 44;; @0038 return 45;; } 46;; 47;; function u0:1(i64 vmctx, i64, i32, i32) tail { 48;; gv0 = vmctx 49;; gv1 = load.i64 notrap aligned readonly gv0+8 50;; gv2 = load.i64 notrap aligned gv1+24 51;; gv3 = vmctx 52;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 53;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 54;; gv6 = load.i64 notrap aligned gv4+40 55;; stack_limit = gv2 56;; 57;; block0(v0: i64, v1: i64, v2: i32, v3: i32): 58;; @003f trapz v2, user15 59;; @003f v9 = load.i64 notrap aligned readonly can_move v0+8 60;; @003f v5 = load.i64 notrap aligned readonly can_move v9+32 61;; @003f v4 = uextend.i64 v2 62;; @003f v6 = iadd v5, v4 63;; @003f v7 = iconst.i64 12 64;; @003f v8 = iadd v6, v7 ; v7 = 12 65;; @003f istore8 notrap aligned little v3, v8 66;; @0043 jump block1 67;; 68;; block1: 69;; @0043 return 70;; } 71;; 72;; function u0:2(i64 vmctx, i64, i32, i32) tail { 73;; gv0 = vmctx 74;; gv1 = load.i64 notrap aligned readonly gv0+8 75;; gv2 = load.i64 notrap aligned gv1+24 76;; gv3 = vmctx 77;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 78;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 79;; gv6 = load.i64 notrap aligned gv4+40 80;; stack_limit = gv2 81;; 82;; block0(v0: i64, v1: i64, v2: i32, v3: i32): 83;; @004a trapz v2, user15 84;; @004a v9 = load.i64 notrap aligned readonly can_move v0+8 85;; @004a v5 = load.i64 notrap aligned readonly can_move v9+32 86;; @004a v4 = uextend.i64 v2 87;; @004a v6 = iadd v5, v4 88;; @004a v7 = iconst.i64 16 89;; @004a v8 = iadd v6, v7 ; v7 = 16 90;; @004a store notrap aligned little v3, v8 91;; @004e jump block1 92;; 93;; block1: 94;; @004e return 95;; } 96