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+16 14;; gv3 = vmctx 15;; stack_limit = gv2 16;; 17;; block0(v0: i64, v1: i64, v2: i32): 18;; v28 = iconst.i32 0 19;; @001b v4 = icmp eq v2, v28 ; v28 = 0 20;; @001b v5 = uextend.i32 v4 21;; @001b brif v5, block4(v28), block2 ; v28 = 0 22;; 23;; block2: 24;; @001b v7 = iconst.i32 1 25;; @001b v8 = band.i32 v2, v7 ; v7 = 1 26;; v30 = iconst.i32 0 27;; @001b brif v8, block4(v30), block3 ; v30 = 0 28;; 29;; block3: 30;; @001b v15 = uextend.i64 v2 31;; @001b v16 = iconst.i64 0 32;; @001b v17 = uadd_overflow_trap v15, v16, user1 ; v16 = 0 33;; v29 = iconst.i64 8 34;; @001b v19 = uadd_overflow_trap v15, v29, user1 ; v29 = 8 35;; @001b v14 = load.i64 notrap aligned readonly can_move v0+48 36;; @001b v20 = icmp ule v19, v14 37;; @001b trapz v20, user1 38;; @001b v12 = load.i64 notrap aligned readonly can_move v0+40 39;; @001b v21 = iadd v12, v17 40;; @001b v22 = load.i32 notrap aligned readonly v21 41;; @001b v23 = iconst.i32 -1476395008 42;; @001b v24 = band v22, v23 ; v23 = -1476395008 43;; @001b v25 = icmp eq v24, v23 ; v23 = -1476395008 44;; @001b v26 = uextend.i32 v25 45;; @001b jump block4(v26) 46;; 47;; block4(v27: i32): 48;; @001e jump block1(v27) 49;; 50;; block1(v3: i32): 51;; @001e return v3 52;; } 53