1;;! target = "x86_64" 2;;! flags = "-W function-references,gc -C collector=drc" 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 24 43;; @0033 v8 = iadd v6, v7 ; v7 = 24 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 28 68;; @003c v8 = iadd v6, v7 ; v7 = 28 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 28 94;; @0045 v8 = iadd v6, v7 ; v7 = 28 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 v58 = load.i64 notrap aligned readonly can_move v0+8 116;; @004e v5 = load.i64 notrap aligned readonly can_move v58+32 117;; @004e v4 = uextend.i64 v2 118;; @004e v6 = iadd v5, v4 119;; @004e v7 = iconst.i64 32 120;; @004e v8 = iadd v6, v7 ; v7 = 32 121;; @004e v9 = load.i32 notrap aligned little v8 122;; v57 = iconst.i32 1 123;; @004e v10 = band v9, v57 ; v57 = 1 124;; v56 = iconst.i32 0 125;; @004e v11 = icmp eq v9, v56 ; v56 = 0 126;; @004e v12 = uextend.i32 v11 127;; @004e v13 = bor v10, v12 128;; @004e brif v13, block4, block2 129;; 130;; block2: 131;; @004e v14 = uextend.i64 v9 132;; @004e v16 = iadd.i64 v5, v14 133;; @004e v17 = load.i32 notrap aligned v16 134;; @004e v18 = iconst.i32 2 135;; @004e v19 = band v17, v18 ; v18 = 2 136;; @004e brif v19, block4, block3 137;; 138;; block3: 139;; @004e v21 = load.i64 notrap aligned readonly v0+32 140;; @004e v22 = load.i32 notrap aligned v21 141;; @004e v26 = iconst.i64 16 142;; @004e v27 = iadd.i64 v16, v26 ; v26 = 16 143;; @004e store notrap aligned v22, v27 144;; v60 = iconst.i32 2 145;; v61 = bor.i32 v17, v60 ; v60 = 2 146;; @004e store notrap aligned v61, v16 147;; @004e v36 = iconst.i64 8 148;; @004e v37 = iadd.i64 v16, v36 ; v36 = 8 149;; @004e v38 = load.i64 notrap aligned v37 150;; v47 = iconst.i64 1 151;; @004e v39 = iadd v38, v47 ; v47 = 1 152;; @004e store notrap aligned v39, v37 153;; @004e store.i32 notrap aligned v9, v21 154;; @004e jump block4 155;; 156;; block4: 157;; @0052 jump block1 158;; 159;; block1: 160;; @0052 return v9 161;; } 162