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;; v32 = iconst.i32 0 19;; @001b v4 = icmp eq v2, v32 ; v32 = 0 20;; @001b v5 = uextend.i32 v4 21;; @001b v7 = iconst.i32 1 22;; v37 = select v2, v7, v32 ; v7 = 1, v32 = 0 23;; @001b brif v5, block4(v37), block2 24;; 25;; block2: 26;; v45 = iconst.i32 1 27;; v46 = band.i32 v2, v45 ; v45 = 1 28;; v47 = iconst.i32 0 29;; v48 = select v46, v47, v45 ; v47 = 0, v45 = 1 30;; @001b brif v46, block4(v48), block3 31;; 32;; block3: 33;; @001b v19 = uextend.i64 v2 34;; @001b v20 = iconst.i64 0 35;; @001b v21 = uadd_overflow_trap v19, v20, user1 ; v20 = 0 36;; v44 = iconst.i64 8 37;; @001b v23 = uadd_overflow_trap v19, v44, user1 ; v44 = 8 38;; @001b v18 = load.i64 notrap aligned readonly v0+48 39;; @001b v24 = icmp ule v23, v18 40;; @001b trapz v24, user1 41;; @001b v16 = load.i64 notrap aligned readonly v0+40 42;; @001b v25 = iadd v16, v21 43;; @001b v26 = load.i32 notrap aligned readonly v25 44;; @001b v27 = iconst.i32 -1476395008 45;; @001b v28 = band v26, v27 ; v27 = -1476395008 46;; @001b v29 = icmp eq v28, v27 ; v27 = -1476395008 47;; @001b v30 = uextend.i32 v29 48;; @001b jump block4(v30) 49;; 50;; block4(v31: i32): 51;; @001e jump block1(v31) 52;; 53;; block1(v3: i32): 54;; @001e return v3 55;; } 56