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)) (result f32) 11 (struct.get $ty 0 (local.get 0)) 12 ) 13 14 (func (param (ref null $ty)) (result i32) 15 (struct.get_s $ty 1 (local.get 0)) 16 ) 17 18 (func (param (ref null $ty)) (result i32) 19 (struct.get_u $ty 1 (local.get 0)) 20 ) 21 22 (func (param (ref null $ty)) (result anyref) 23 (struct.get $ty 2 (local.get 0)) 24 ) 25) 26;; function u0:0(i64 vmctx, i64, i32) -> f32 tail { 27;; gv0 = vmctx 28;; gv1 = load.i64 notrap aligned readonly gv0+8 29;; gv2 = load.i64 notrap aligned gv1+24 30;; gv3 = vmctx 31;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 32;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 33;; gv6 = load.i64 notrap aligned gv4+40 34;; stack_limit = gv2 35;; 36;; block0(v0: i64, v1: i64, v2: i32): 37;; @0033 trapz v2, user15 38;; @0033 v10 = load.i64 notrap aligned readonly can_move v0+8 39;; @0033 v5 = load.i64 notrap aligned readonly can_move v10+32 40;; @0033 v4 = uextend.i64 v2 41;; @0033 v6 = iadd v5, v4 42;; @0033 v7 = iconst.i64 8 43;; @0033 v8 = iadd v6, v7 ; v7 = 8 44;; @0033 v9 = load.f32 notrap aligned little v8 45;; @0037 jump block1 46;; 47;; block1: 48;; @0037 return v9 49;; } 50;; 51;; function u0:1(i64 vmctx, i64, i32) -> i32 tail { 52;; gv0 = vmctx 53;; gv1 = load.i64 notrap aligned readonly gv0+8 54;; gv2 = load.i64 notrap aligned gv1+24 55;; gv3 = vmctx 56;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 57;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 58;; gv6 = load.i64 notrap aligned gv4+40 59;; stack_limit = gv2 60;; 61;; block0(v0: i64, v1: i64, v2: i32): 62;; @003c trapz v2, user15 63;; @003c v11 = load.i64 notrap aligned readonly can_move v0+8 64;; @003c v5 = load.i64 notrap aligned readonly can_move v11+32 65;; @003c v4 = uextend.i64 v2 66;; @003c v6 = iadd v5, v4 67;; @003c v7 = iconst.i64 12 68;; @003c v8 = iadd v6, v7 ; v7 = 12 69;; @003c v9 = load.i8 notrap aligned little v8 70;; @0040 jump block1 71;; 72;; block1: 73;; @003c v10 = sextend.i32 v9 74;; @0040 return v10 75;; } 76;; 77;; function u0:2(i64 vmctx, i64, i32) -> i32 tail { 78;; gv0 = vmctx 79;; gv1 = load.i64 notrap aligned readonly gv0+8 80;; gv2 = load.i64 notrap aligned gv1+24 81;; gv3 = vmctx 82;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 83;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 84;; gv6 = load.i64 notrap aligned gv4+40 85;; stack_limit = gv2 86;; 87;; block0(v0: i64, v1: i64, v2: i32): 88;; @0045 trapz v2, user15 89;; @0045 v11 = load.i64 notrap aligned readonly can_move v0+8 90;; @0045 v5 = load.i64 notrap aligned readonly can_move v11+32 91;; @0045 v4 = uextend.i64 v2 92;; @0045 v6 = iadd v5, v4 93;; @0045 v7 = iconst.i64 12 94;; @0045 v8 = iadd v6, v7 ; v7 = 12 95;; @0045 v9 = load.i8 notrap aligned little v8 96;; @0049 jump block1 97;; 98;; block1: 99;; @0045 v10 = uextend.i32 v9 100;; @0049 return v10 101;; } 102;; 103;; function u0:3(i64 vmctx, i64, i32) -> i32 tail { 104;; gv0 = vmctx 105;; gv1 = load.i64 notrap aligned readonly gv0+8 106;; gv2 = load.i64 notrap aligned gv1+24 107;; gv3 = vmctx 108;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 109;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 110;; gv6 = load.i64 notrap aligned gv4+40 111;; stack_limit = gv2 112;; 113;; block0(v0: i64, v1: i64, v2: i32): 114;; @004e trapz v2, user15 115;; @004e v10 = load.i64 notrap aligned readonly can_move v0+8 116;; @004e v5 = load.i64 notrap aligned readonly can_move v10+32 117;; @004e v4 = uextend.i64 v2 118;; @004e v6 = iadd v5, v4 119;; @004e v7 = iconst.i64 16 120;; @004e v8 = iadd v6, v7 ; v7 = 16 121;; @004e v9 = load.i32 notrap aligned little v8 122;; @0052 jump block1 123;; 124;; block1: 125;; @0052 return v9 126;; } 127