1;;! target = "x86_64" 2;;! flags = "-W function-references,gc -C collector=null" 3;;! test = "optimize" 4 5(module 6 (func (param anyref) (result i32) 7 (ref.test (ref array) (local.get 0)) 8 ) 9) 10;; function u0:0(i64 vmctx, i64, i32) -> i32 tail { 11;; gv0 = vmctx 12;; gv1 = load.i64 notrap aligned readonly gv0+8 13;; gv2 = load.i64 notrap aligned gv1+24 14;; gv3 = vmctx 15;; gv4 = load.i64 notrap aligned readonly can_move gv3+8 16;; gv5 = load.i64 notrap aligned readonly can_move gv4+32 17;; gv6 = load.i64 notrap aligned gv4+40 18;; stack_limit = gv2 19;; 20;; block0(v0: i64, v1: i64, v2: i32): 21;; v23 = iconst.i32 0 22;; @001b v4 = icmp eq v2, v23 ; v23 = 0 23;; @001b v5 = uextend.i32 v4 24;; @001b brif v5, block4(v23), block2 ; v23 = 0 25;; 26;; block2: 27;; @001b v7 = iconst.i32 1 28;; @001b v8 = band.i32 v2, v7 ; v7 = 1 29;; v24 = iconst.i32 0 30;; @001b brif v8, block4(v24), block3 ; v24 = 0 31;; 32;; block3: 33;; @001b v21 = load.i64 notrap aligned readonly can_move v0+8 34;; @001b v11 = load.i64 notrap aligned readonly can_move v21+32 35;; @001b v10 = uextend.i64 v2 36;; @001b v12 = iadd v11, v10 37;; @001b v15 = load.i32 notrap aligned readonly v12 38;; @001b v16 = iconst.i32 -1476395008 39;; @001b v17 = band v15, v16 ; v16 = -1476395008 40;; @001b v18 = icmp eq v17, v16 ; v16 = -1476395008 41;; @001b v19 = uextend.i32 v18 42;; @001b jump block4(v19) 43;; 44;; block4(v20: i32): 45;; @001e jump block1(v20) 46;; 47;; block1(v3: i32): 48;; @001e return v3 49;; } 50