1;;! target = "x86_64"
2;;! flags = "-W function-references,gc"
3;;! test = "compile"
4
5(module
6  (type $ty (struct (field (mut f32))
7                    (field (mut i8))
8                    (field (mut anyref))))
9
10  (func (param f32 i32 anyref) (result (ref $ty))
11    (struct.new $ty (local.get 0) (local.get 1) (local.get 2))
12  )
13)
14;; wasm[0]::function[0]:
15;;       pushq   %rbp
16;;       movq    %rsp, %rbp
17;;       movq    8(%rdi), %r10
18;;       movq    0x18(%r10), %r10
19;;       addq    $0x40, %r10
20;;       cmpq    %rsp, %r10
21;;       ja      0xb5
22;;   19: subq    $0x30, %rsp
23;;       movq    %r13, 0x20(%rsp)
24;;       movq    %r14, 0x28(%rsp)
25;;       movq    %rdx, %r14
26;;       movdqu  %xmm0, 8(%rsp)
27;;       movl    %ecx, (%rsp)
28;;       movl    $0xb0000000, %esi
29;;       xorl    %edx, %edx
30;;       movl    $0x28, %ecx
31;;       movl    $8, %r8d
32;;       movq    %rdi, %r13
33;;       callq   0x12f
34;;       movq    8(%r13), %rdx
35;;       ╰─╼ stack_map: frame_size=48, frame_offsets=[0]
36;;       movq    0x20(%rdx), %rdx
37;;       movl    %eax, %r8d
38;;       movdqu  8(%rsp), %xmm0
39;;       movss   %xmm0, 0x18(%rdx, %r8)
40;;       movq    %r14, %r9
41;;       movb    %r9b, 0x1c(%rdx, %r8)
42;;       movl    (%rsp), %r9d
43;;       movq    %r9, %rcx
44;;       andl    $1, %ecx
45;;       testl   %r9d, %r9d
46;;       sete    %r10b
47;;       movzbl  %r10b, %r10d
48;;       orl     %r10d, %ecx
49;;       testl   %ecx, %ecx
50;;       jne     0x9a
51;;   8d: movl    %r9d, %edi
52;;       leaq    (%rdx, %rdi), %rcx
53;;       addq    $1, 8(%rdx, %rdi)
54;;       movl    (%rsp), %ecx
55;;       movl    %ecx, 0x20(%rdx, %r8)
56;;       movq    0x20(%rsp), %r13
57;;       movq    0x28(%rsp), %r14
58;;       addq    $0x30, %rsp
59;;       movq    %rbp, %rsp
60;;       popq    %rbp
61;;       retq
62;;   b5: ud2
63