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 (ref $ty) i32 i32) (result i64 i64) 9 (array.get $ty (local.get 0) (local.get 1)) 10 (array.get $ty (local.get 0) (local.get 2)) 11 ) 12) 13;; function u0:0(i64 vmctx, i64, i32, i32, i32) -> i64, i64 tail { 14;; gv0 = vmctx 15;; gv1 = load.i64 notrap aligned readonly gv0+8 16;; gv2 = load.i64 notrap aligned gv1 17;; gv3 = vmctx 18;; stack_limit = gv2 19;; 20;; block0(v0: i64, v1: i64, v2: i32, v3: i32, v4: i32): 21;; @0024 trapz v2, user16 22;; @0024 v11 = uextend.i64 v2 23;; @0024 v12 = iconst.i64 8 24;; @0024 v13 = uadd_overflow_trap v11, v12, user1 ; v12 = 8 25;; @0024 v14 = iconst.i64 4 26;; @0024 v15 = uadd_overflow_trap v13, v14, user1 ; v14 = 4 27;; @0024 v10 = load.i64 notrap aligned readonly v0+48 28;; @0024 v16 = icmp ule v15, v10 29;; @0024 trapz v16, user1 30;; @0024 v8 = load.i64 notrap aligned readonly v0+40 31;; @0024 v17 = iadd v8, v13 32;; @0024 v18 = load.i32 notrap aligned v17 33;; @0024 v19 = icmp ult v3, v18 34;; @0024 trapz v19, user17 35;; @0024 v21 = uextend.i64 v18 36;; v79 = iconst.i64 3 37;; v80 = ishl v21, v79 ; v79 = 3 38;; v77 = iconst.i64 32 39;; @0024 v23 = ushr v80, v77 ; v77 = 32 40;; @0024 trapnz v23, user1 41;; v89 = iconst.i32 3 42;; v90 = ishl v18, v89 ; v89 = 3 43;; @0024 v25 = iconst.i32 16 44;; @0024 v26 = uadd_overflow_trap v90, v25, user1 ; v25 = 16 45;; v97 = ishl v3, v89 ; v89 = 3 46;; @0024 v29 = iadd v97, v25 ; v25 = 16 47;; @0024 v35 = uextend.i64 v29 48;; @0024 v36 = uadd_overflow_trap v11, v35, user1 49;; @0024 v37 = uextend.i64 v26 50;; @0024 v38 = uadd_overflow_trap v11, v37, user1 51;; @0024 v39 = icmp ule v38, v10 52;; @0024 trapz v39, user1 53;; @0024 v40 = iadd v8, v36 54;; @0024 v41 = load.i64 notrap aligned little v40 55;; @002b trapz v2, user16 56;; @002b trapz v16, user1 57;; @002b v53 = load.i32 notrap aligned v17 58;; @002b v54 = icmp ult v4, v53 59;; @002b trapz v54, user17 60;; @002b v56 = uextend.i64 v53 61;; v99 = ishl v56, v79 ; v79 = 3 62;; @002b v58 = ushr v99, v77 ; v77 = 32 63;; @002b trapnz v58, user1 64;; v106 = ishl v53, v89 ; v89 = 3 65;; @002b v61 = uadd_overflow_trap v106, v25, user1 ; v25 = 16 66;; v113 = ishl v4, v89 ; v89 = 3 67;; @002b v64 = iadd v113, v25 ; v25 = 16 68;; @002b v70 = uextend.i64 v64 69;; @002b v71 = uadd_overflow_trap v11, v70, user1 70;; @002b v72 = uextend.i64 v61 71;; @002b v73 = uadd_overflow_trap v11, v72, user1 72;; @002b v74 = icmp ule v73, v10 73;; @002b trapz v74, user1 74;; @002b v75 = iadd v8, v71 75;; @002b v76 = load.i64 notrap aligned little v75 76;; @002e jump block1 77;; 78;; block1: 79;; @002e return v41, v76 80;; } 81