1*e5b127ccSNick Fitzgerald;;! gc = true
2*e5b127ccSNick Fitzgerald;;! bulk_memory = true
3*e5b127ccSNick Fitzgerald
4*e5b127ccSNick Fitzgerald(module
5*e5b127ccSNick Fitzgerald  (type $s (struct (field (mut i32))))
6*e5b127ccSNick Fitzgerald  (type $arr (array (ref null $s)))
7*e5b127ccSNick Fitzgerald
8*e5b127ccSNick Fitzgerald  (elem $e (ref null $s) (struct.new $s (i32.const 42)))
9*e5b127ccSNick Fitzgerald
10*e5b127ccSNick Fitzgerald  (import "wasmtime" "gc" (func $gc))
11*e5b127ccSNick Fitzgerald
12*e5b127ccSNick Fitzgerald  (func (export "test") (result i32)
13*e5b127ccSNick Fitzgerald    (array.new_elem $arr $e (i32.const 0) (i32.const 1))
14*e5b127ccSNick Fitzgerald
15*e5b127ccSNick Fitzgerald    (call $gc)
16*e5b127ccSNick Fitzgerald    (drop (struct.new $s (i32.const 0)))
17*e5b127ccSNick Fitzgerald    (drop (struct.new $s (i32.const 0)))
18*e5b127ccSNick Fitzgerald    (drop (struct.new $s (i32.const 0)))
19*e5b127ccSNick Fitzgerald    (drop (struct.new $s (i32.const 0)))
20*e5b127ccSNick Fitzgerald    (drop (struct.new $s (i32.const 0)))
21*e5b127ccSNick Fitzgerald
22*e5b127ccSNick Fitzgerald    (struct.get $s 0 (array.get $arr (i32.const 0)))
23*e5b127ccSNick Fitzgerald  )
24*e5b127ccSNick Fitzgerald)
25*e5b127ccSNick Fitzgerald
26*e5b127ccSNick Fitzgerald(assert_return (invoke "test") (i32.const 42))
27