1;;! target = "x86_64" 2;;! flags = "-W function-references,gc -C collector=drc" 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 readonly can_move gv4+32 19;; sig0 = (i64 vmctx, i32, i32, i32, i32) -> i32 tail 20;; fn0 = colocated u805306368:27 sig0 21;; stack_limit = gv2 22;; 23;; block0(v0: i64, v1: i64, v2: i64, v3: i32): 24;; @0022 v6 = uextend.i64 v3 25;; v35 = iconst.i64 3 26;; v36 = ishl v6, v35 ; v35 = 3 27;; v33 = iconst.i64 32 28;; @0022 v8 = ushr v36, v33 ; v33 = 32 29;; @0022 trapnz v8, user17 30;; @0022 v5 = iconst.i32 32 31;; v42 = iconst.i32 3 32;; v43 = ishl v3, v42 ; v42 = 3 33;; @0022 v10 = uadd_overflow_trap v5, v43, user17 ; v5 = 32 34;; @0022 v12 = iconst.i32 -1476395008 35;; @0022 v13 = iconst.i32 0 36;; v40 = iconst.i32 8 37;; @0022 v15 = call fn0(v0, v12, v13, v10, v40) ; v12 = -1476395008, v13 = 0, v40 = 8 38;; @0022 v31 = load.i64 notrap aligned readonly can_move v0+8 39;; @0022 v16 = load.i64 notrap aligned readonly can_move v31+32 40;; @0022 v17 = uextend.i64 v15 41;; @0022 v18 = iadd v16, v17 42;; v30 = iconst.i64 24 43;; @0022 v19 = iadd v18, v30 ; v30 = 24 44;; @0022 store notrap aligned v3, v19 45;; v52 = iadd v18, v33 ; v33 = 32 46;; @0022 v25 = uextend.i64 v10 47;; @0022 v26 = iadd v18, v25 48;; v34 = iconst.i64 8 49;; @0022 jump block2(v52) 50;; 51;; block2(v27: i64): 52;; @0022 v28 = icmp eq v27, v26 53;; @0022 brif v28, block4, block3 54;; 55;; block3: 56;; @0022 store.i64 notrap aligned little v2, v27 57;; v57 = iconst.i64 8 58;; v58 = iadd.i64 v27, v57 ; v57 = 8 59;; @0022 jump block2(v58) 60;; 61;; block4: 62;; @0025 jump block1 63;; 64;; block1: 65;; @0025 return v15 66;; } 67