1;;! target = "x86_64"
2;;! flags = "-W function-references,gc -C collector=null"
3;;! test = "optimize"
4
5(module
6  (type $ty (struct (field (mut f32))
7                    (field (mut i8))
8                    (field (mut anyref))))
9
10  (func (result (ref $ty))
11    (struct.new_default $ty)
12  )
13)
14;; function u0:0(i64 vmctx, i64) -> i32 tail {
15;;     gv0 = vmctx
16;;     gv1 = load.i64 notrap aligned readonly gv0+8
17;;     gv2 = load.i64 notrap aligned gv1+24
18;;     gv3 = vmctx
19;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
20;;     gv5 = load.i64 notrap aligned gv4+40
21;;     gv6 = load.i64 notrap aligned readonly can_move gv4+32
22;;     sig0 = (i64 vmctx, i64) -> i8 tail
23;;     fn0 = colocated u805306368:26 sig0
24;;     stack_limit = gv2
25;;
26;;                                 block0(v0: i64, v1: i64):
27;; @0021                               v11 = load.i64 notrap aligned readonly v0+32
28;; @0021                               v12 = load.i32 notrap aligned v11
29;;                                     v49 = iconst.i32 7
30;; @0021                               v15 = uadd_overflow_trap v12, v49, user17  ; v49 = 7
31;;                                     v56 = iconst.i32 -8
32;; @0021                               v17 = band v15, v56  ; v56 = -8
33;; @0021                               v6 = iconst.i32 24
34;; @0021                               v18 = uadd_overflow_trap v17, v6, user17  ; v6 = 24
35;; @0021                               v41 = load.i64 notrap aligned readonly can_move v0+8
36;; @0021                               v20 = load.i64 notrap aligned v41+40
37;; @0021                               v19 = uextend.i64 v18
38;; @0021                               v21 = icmp ule v19, v20
39;; @0021                               brif v21, block2, block3
40;;
41;;                                 block2:
42;;                                     v57 = iconst.i32 -1342177256
43;; @0021                               v25 = load.i64 notrap aligned readonly can_move v41+32
44;;                                     v64 = band.i32 v15, v56  ; v56 = -8
45;;                                     v65 = uextend.i64 v64
46;; @0021                               v27 = iadd v25, v65
47;; @0021                               store notrap aligned v57, v27  ; v57 = -1342177256
48;; @0021                               v31 = load.i64 notrap aligned readonly can_move v0+40
49;; @0021                               v32 = load.i32 notrap aligned readonly can_move v31
50;; @0021                               store notrap aligned v32, v27+4
51;; @0021                               store.i32 notrap aligned v18, v11
52;; @0021                               v3 = f32const 0.0
53;;                                     v38 = iconst.i64 8
54;; @0021                               v33 = iadd v27, v38  ; v38 = 8
55;; @0021                               store notrap aligned little v3, v33  ; v3 = 0.0
56;; @0021                               v4 = iconst.i32 0
57;;                                     v37 = iconst.i64 12
58;; @0021                               v34 = iadd v27, v37  ; v37 = 12
59;; @0021                               istore8 notrap aligned little v4, v34  ; v4 = 0
60;;                                     v36 = iconst.i64 16
61;; @0021                               v35 = iadd v27, v36  ; v36 = 16
62;; @0021                               store notrap aligned little v4, v35  ; v4 = 0
63;; @0024                               jump block1
64;;
65;;                                 block3 cold:
66;; @0021                               v23 = isub.i64 v19, v20
67;; @0021                               v24 = call fn0(v0, v23)
68;; @0021                               jump block2
69;;
70;;                                 block1:
71;;                                     v66 = band.i32 v15, v56  ; v56 = -8
72;; @0024                               return v66
73;; }
74