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 (param (ref null $ty) f32)
11    (struct.set $ty 0 (local.get 0) (local.get 1))
12  )
13
14  (func (param (ref null $ty) i32)
15    (struct.set $ty 1 (local.get 0) (local.get 1))
16  )
17
18  (func (param (ref null $ty) anyref)
19    (struct.set $ty 2 (local.get 0) (local.get 1))
20  )
21)
22;; function u0:0(i64 vmctx, i64, i32, f32) tail {
23;;     gv0 = vmctx
24;;     gv1 = load.i64 notrap aligned readonly gv0+8
25;;     gv2 = load.i64 notrap aligned gv1+24
26;;     gv3 = vmctx
27;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
28;;     gv5 = load.i64 notrap aligned readonly can_move gv4+32
29;;     gv6 = load.i64 notrap aligned gv4+40
30;;     stack_limit = gv2
31;;
32;;                                 block0(v0: i64, v1: i64, v2: i32, v3: f32):
33;; @0034                               trapz v2, user15
34;; @0034                               v9 = load.i64 notrap aligned readonly can_move v0+8
35;; @0034                               v5 = load.i64 notrap aligned readonly can_move v9+32
36;; @0034                               v4 = uextend.i64 v2
37;; @0034                               v6 = iadd v5, v4
38;; @0034                               v7 = iconst.i64 8
39;; @0034                               v8 = iadd v6, v7  ; v7 = 8
40;; @0034                               store notrap aligned little v3, v8
41;; @0038                               jump block1
42;;
43;;                                 block1:
44;; @0038                               return
45;; }
46;;
47;; function u0:1(i64 vmctx, i64, i32, i32) tail {
48;;     gv0 = vmctx
49;;     gv1 = load.i64 notrap aligned readonly gv0+8
50;;     gv2 = load.i64 notrap aligned gv1+24
51;;     gv3 = vmctx
52;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
53;;     gv5 = load.i64 notrap aligned readonly can_move gv4+32
54;;     gv6 = load.i64 notrap aligned gv4+40
55;;     stack_limit = gv2
56;;
57;;                                 block0(v0: i64, v1: i64, v2: i32, v3: i32):
58;; @003f                               trapz v2, user15
59;; @003f                               v9 = load.i64 notrap aligned readonly can_move v0+8
60;; @003f                               v5 = load.i64 notrap aligned readonly can_move v9+32
61;; @003f                               v4 = uextend.i64 v2
62;; @003f                               v6 = iadd v5, v4
63;; @003f                               v7 = iconst.i64 12
64;; @003f                               v8 = iadd v6, v7  ; v7 = 12
65;; @003f                               istore8 notrap aligned little v3, v8
66;; @0043                               jump block1
67;;
68;;                                 block1:
69;; @0043                               return
70;; }
71;;
72;; function u0:2(i64 vmctx, i64, i32, i32) tail {
73;;     gv0 = vmctx
74;;     gv1 = load.i64 notrap aligned readonly gv0+8
75;;     gv2 = load.i64 notrap aligned gv1+24
76;;     gv3 = vmctx
77;;     gv4 = load.i64 notrap aligned readonly can_move gv3+8
78;;     gv5 = load.i64 notrap aligned readonly can_move gv4+32
79;;     gv6 = load.i64 notrap aligned gv4+40
80;;     stack_limit = gv2
81;;
82;;                                 block0(v0: i64, v1: i64, v2: i32, v3: i32):
83;; @004a                               trapz v2, user15
84;; @004a                               v9 = load.i64 notrap aligned readonly can_move v0+8
85;; @004a                               v5 = load.i64 notrap aligned readonly can_move v9+32
86;; @004a                               v4 = uextend.i64 v2
87;; @004a                               v6 = iadd v5, v4
88;; @004a                               v7 = iconst.i64 16
89;; @004a                               v8 = iadd v6, v7  ; v7 = 16
90;; @004a                               store notrap aligned little v3, v8
91;; @004e                               jump block1
92;;
93;;                                 block1:
94;; @004e                               return
95;; }
96