1;;! target = "x86_64" 2;;! flags = "-W function-references,gc -C collector=null" 3;;! test = "optimize" 4 5(module 6 (type $ty (array (mut i64))) 7 8 (func (param i64 i32) (result (ref $ty)) 9 (array.new $ty (local.get 0) (local.get 1)) 10 ) 11) 12;; function u0:0(i64 vmctx, i64, i64, i32) -> i32 tail { 13;; gv0 = vmctx 14;; gv1 = load.i64 notrap aligned readonly gv0+8 15;; gv2 = load.i64 notrap aligned gv1+24 16;; gv3 = vmctx 17;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 18;; gv5 = load.i64 notrap aligned gv4+40 19;; gv6 = load.i64 notrap aligned readonly can_move gv4+32 20;; sig0 = (i64 vmctx, i64) -> i8 tail 21;; fn0 = colocated u805306368:26 sig0 22;; stack_limit = gv2 23;; 24;; block0(v0: i64, v1: i64, v2: i64, v3: i32): 25;; @0022 v6 = uextend.i64 v3 26;; v55 = iconst.i64 3 27;; v56 = ishl v6, v55 ; v55 = 3 28;; v53 = iconst.i64 32 29;; @0022 v8 = ushr v56, v53 ; v53 = 32 30;; @0022 trapnz v8, user17 31;; @0022 v5 = iconst.i32 16 32;; v62 = iconst.i32 3 33;; v63 = ishl v3, v62 ; v62 = 3 34;; @0022 v10 = uadd_overflow_trap v5, v63, user17 ; v5 = 16 35;; @0022 v12 = iconst.i32 -67108864 36;; @0022 v13 = band v10, v12 ; v12 = -67108864 37;; @0022 trapnz v13, user17 38;; @0022 v15 = load.i64 notrap aligned readonly v0+32 39;; @0022 v16 = load.i32 notrap aligned v15 40;; v66 = iconst.i32 7 41;; @0022 v19 = uadd_overflow_trap v16, v66, user17 ; v66 = 7 42;; v73 = iconst.i32 -8 43;; @0022 v21 = band v19, v73 ; v73 = -8 44;; @0022 v22 = uadd_overflow_trap v21, v10, user17 45;; @0022 v51 = load.i64 notrap aligned readonly can_move v0+8 46;; @0022 v24 = load.i64 notrap aligned v51+40 47;; @0022 v23 = uextend.i64 v22 48;; @0022 v25 = icmp ule v23, v24 49;; @0022 brif v25, block2, block3 50;; 51;; block2: 52;; @0022 v32 = iconst.i32 -1476395008 53;; v74 = bor.i32 v10, v32 ; v32 = -1476395008 54;; @0022 v29 = load.i64 notrap aligned readonly can_move v51+32 55;; v88 = band.i32 v19, v73 ; v73 = -8 56;; v89 = uextend.i64 v88 57;; @0022 v31 = iadd v29, v89 58;; @0022 store notrap aligned v74, v31 59;; @0022 v35 = load.i64 notrap aligned readonly can_move v0+40 60;; @0022 v36 = load.i32 notrap aligned readonly can_move v35 61;; @0022 store notrap aligned v36, v31+4 62;; @0022 store.i32 notrap aligned v22, v15 63;; v54 = iconst.i64 8 64;; @0022 v37 = iadd v31, v54 ; v54 = 8 65;; @0022 store.i32 notrap aligned v3, v37 66;; v77 = iconst.i64 16 67;; v83 = iadd v31, v77 ; v77 = 16 68;; @0022 v43 = uextend.i64 v10 69;; @0022 v44 = iadd v31, v43 70;; @0022 jump block4(v83) 71;; 72;; block4(v45: i64): 73;; @0022 v46 = icmp eq v45, v44 74;; @0022 brif v46, block6, block5 75;; 76;; block5: 77;; @0022 store.i64 notrap aligned little v2, v45 78;; v90 = iconst.i64 8 79;; v91 = iadd.i64 v45, v90 ; v90 = 8 80;; @0022 jump block4(v91) 81;; 82;; block6: 83;; @0025 jump block1 84;; 85;; block3 cold: 86;; @0022 v27 = isub.i64 v23, v24 87;; @0022 v28 = call fn0(v0, v27) 88;; @0022 jump block2 89;; 90;; block1: 91;; v92 = band.i32 v19, v73 ; v73 = -8 92;; @0025 return v92 93;; } 94