| (module |
| (type $struct.A (struct (field i32) (field f32) (field $named f64))) |
| (type $struct.B (struct (field i8) (field (mut i16)) (field (ref $struct.A)) (field (mut (ref $struct.A))))) |
| (type $vector (array (mut f64))) |
| (type $none_=>_none (func)) |
| (type $grandchild (struct (field i32) (field i64))) |
| (type $matrix (array (mut (ref null $vector)))) |
| (type $struct.C (struct (field $named-mut (mut f32)))) |
| (type $parent (struct )) |
| (type $child (struct (field i32))) |
| (type $bytes (array (mut i8))) |
| (type $anyref_=>_none (func (param anyref))) |
| (type $nested-child-struct (struct (field (mut (ref $child))))) |
| (type $ref|$struct.A|_=>_ref|$struct.B| (func (param (ref $struct.A)) (result (ref $struct.B)))) |
| (type $ref|$vector|_=>_ref|$matrix| (func (param (ref $vector)) (result (ref $matrix)))) |
| (type $words (array (mut i32))) |
| (type $nested-child-array (array (mut (ref $child)))) |
| (type $rtt_1_$parent_=>_none (func (param (rtt 1 $parent)))) |
| (type $rtt_$parent_=>_none (func (param (rtt $parent)))) |
| (type $ref|$vector|_ref?|$vector|_=>_none (func (param (ref $vector) (ref null $vector)))) |
| (type $none_=>_ref|$vector| (func (result (ref $vector)))) |
| (type $none_=>_ref|$bytes| (func (result (ref $bytes)))) |
| (global $rttparent (rtt 0 $parent) (rtt.canon $parent)) |
| (global $rttchild (rtt 1 $child) (rtt.sub $child |
| (global.get $rttparent) |
| )) |
| (global $rttgrandchild (rtt 2 $grandchild) (rtt.sub $grandchild |
| (global.get $rttchild) |
| )) |
| (global $rttfreshgrandchild (rtt 2 $grandchild) (rtt.fresh_sub $grandchild |
| (global.get $rttchild) |
| )) |
| (global $struct.new-in-global (ref $struct.A) (struct.new_default_with_rtt $struct.A |
| (rtt.canon $struct.A) |
| )) |
| (func $structs (param $x (ref $struct.A)) (result (ref $struct.B)) |
| (local $tA (ref null $struct.A)) |
| (local $tB (ref null $struct.B)) |
| (local $tc (ref null $struct.C)) |
| (local $tv (ref null $vector)) |
| (local $tm (ref null $matrix)) |
| (drop |
| (local.get $x) |
| ) |
| (drop |
| (struct.get $struct.A 0 |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (struct.get $struct.A 1 |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (struct.get $struct.A $named |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (struct.get $struct.A $named |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (struct.get $struct.A $named |
| (ref.null $struct.A) |
| ) |
| ) |
| (drop |
| (struct.get_u $struct.B 0 |
| (local.get $tB) |
| ) |
| ) |
| (drop |
| (struct.get_s $struct.B 0 |
| (local.get $tB) |
| ) |
| ) |
| (drop |
| (struct.get $grandchild 0 |
| (ref.null $grandchild) |
| ) |
| ) |
| (drop |
| (ref.null $struct.A) |
| ) |
| (drop |
| (block $label$1 (result (ref null $struct.A)) |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (if (result (ref null $struct.A)) |
| (i32.const 1) |
| (local.get $x) |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (loop $label$4 (result (ref null $struct.A)) |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (select (result (ref null $struct.A)) |
| (local.get $x) |
| (local.get $x) |
| (i32.const 1) |
| ) |
| ) |
| (struct.set $struct.C $named-mut |
| (ref.null $struct.C) |
| (f32.const 100) |
| ) |
| (struct.set $nested-child-struct 0 |
| (ref.null $nested-child-struct) |
| (ref.as_non_null |
| (ref.null $grandchild) |
| ) |
| ) |
| (drop |
| (struct.new_default_with_rtt $struct.A |
| (rtt.canon $struct.A) |
| ) |
| ) |
| (drop |
| (struct.new_with_rtt $struct.A |
| (i32.const 1) |
| (f32.const 2.3450000286102295) |
| (f64.const 3.14159) |
| (rtt.canon $struct.A) |
| ) |
| ) |
| (unreachable) |
| ) |
| (func $arrays (param $x (ref $vector)) (result (ref $matrix)) |
| (local $tv (ref null $vector)) |
| (local $tm (ref null $matrix)) |
| (local $tb (ref null $bytes)) |
| (local $tw (ref null $words)) |
| (drop |
| (array.new_with_rtt $vector |
| (f64.const 3.14159) |
| (i32.const 3) |
| (rtt.canon $vector) |
| ) |
| ) |
| (drop |
| (array.new_default_with_rtt $matrix |
| (i32.const 10) |
| (rtt.canon $matrix) |
| ) |
| ) |
| (drop |
| (array.get $vector |
| (local.get $x) |
| (i32.const 2) |
| ) |
| ) |
| (array.set $vector |
| (local.get $x) |
| (i32.const 2) |
| (f64.const 2.18281828) |
| ) |
| (array.set $nested-child-array |
| (ref.null $nested-child-array) |
| (i32.const 3) |
| (ref.as_non_null |
| (ref.null $grandchild) |
| ) |
| ) |
| (drop |
| (array.len $vector |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (array.get $words |
| (local.get $tw) |
| (i32.const 1) |
| ) |
| ) |
| (drop |
| (array.get_u $bytes |
| (local.get $tb) |
| (i32.const 2) |
| ) |
| ) |
| (drop |
| (array.get_s $bytes |
| (local.get $tb) |
| (i32.const 3) |
| ) |
| ) |
| (unreachable) |
| ) |
| (func $rtt-param-with-depth (param $rtt (rtt 1 $parent)) |
| (nop) |
| ) |
| (func $rtt-param-without-depth (param $rtt (rtt $parent)) |
| (nop) |
| ) |
| (func $rtt-operations |
| (local $temp.A (ref null $struct.A)) |
| (local $temp.B (ref null $struct.B)) |
| (drop |
| (ref.test |
| (ref.null $struct.A) |
| (rtt.canon $struct.B) |
| ) |
| ) |
| (drop |
| (ref.cast |
| (ref.null $struct.A) |
| (rtt.canon $struct.B) |
| ) |
| ) |
| (drop |
| (block $label$1 (result (ref $struct.B)) |
| (local.set $temp.A |
| (br_on_cast $label$1 |
| (ref.null $struct.A) |
| (rtt.canon $struct.B) |
| ) |
| ) |
| (block $label$2 |
| (drop |
| (ref.null $struct.A) |
| ) |
| (unreachable) |
| ) |
| ) |
| ) |
| (drop |
| (block $label$3 (result (ref null $struct.A)) |
| (local.set $temp.B |
| (br_on_cast_fail $label$3 |
| (ref.null $struct.A) |
| (rtt.canon $struct.B) |
| ) |
| ) |
| (ref.null $struct.A) |
| ) |
| ) |
| ) |
| (func $ref.is_X (param $x anyref) |
| (if |
| (ref.is_func |
| (local.get $x) |
| ) |
| (unreachable) |
| ) |
| (if |
| (ref.is_data |
| (local.get $x) |
| ) |
| (unreachable) |
| ) |
| (if |
| (ref.is_i31 |
| (local.get $x) |
| ) |
| (unreachable) |
| ) |
| ) |
| (func $ref.as_X (param $x anyref) |
| (drop |
| (ref.as_non_null |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (ref.as_func |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (ref.as_data |
| (local.get $x) |
| ) |
| ) |
| (drop |
| (ref.as_i31 |
| (local.get $x) |
| ) |
| ) |
| ) |
| (func $br_on_X (param $x anyref) |
| (local $y anyref) |
| (local $z anyref) |
| (local $temp-func funcref) |
| (local $temp-data (ref null data)) |
| (local $temp-i31 (ref null i31)) |
| (block $label$1 |
| (local.set $z |
| (br_on_null $label$1 |
| (local.get $x) |
| ) |
| ) |
| ) |
| (drop |
| (block $label$2 (result funcref) |
| (local.set $y |
| (br_on_func $label$2 |
| (local.get $x) |
| ) |
| ) |
| (ref.null func) |
| ) |
| ) |
| (drop |
| (block $label$3 (result (ref null data)) |
| (local.set $y |
| (br_on_data $label$3 |
| (local.get $x) |
| ) |
| ) |
| (ref.null data) |
| ) |
| ) |
| (drop |
| (block $label$4 (result (ref null i31)) |
| (local.set $y |
| (br_on_i31 $label$4 |
| (local.get $x) |
| ) |
| ) |
| (ref.null i31) |
| ) |
| ) |
| (drop |
| (block $label$5 (result (ref any)) |
| (br_on_non_null $label$5 |
| (local.get $x) |
| ) |
| (unreachable) |
| ) |
| ) |
| (drop |
| (block $label$6 (result anyref) |
| (local.set $temp-func |
| (br_on_non_func $label$6 |
| (local.get $x) |
| ) |
| ) |
| (ref.null any) |
| ) |
| ) |
| (drop |
| (block $label$7 (result anyref) |
| (local.set $temp-data |
| (br_on_non_data $label$7 |
| (local.get $x) |
| ) |
| ) |
| (ref.null any) |
| ) |
| ) |
| (drop |
| (block $label$8 (result anyref) |
| (local.set $temp-i31 |
| (br_on_non_i31 $label$8 |
| (local.get $x) |
| ) |
| ) |
| (ref.null any) |
| ) |
| ) |
| ) |
| (func $unreachables-1 |
| (unreachable) |
| ) |
| (func $unreachables-2 |
| (drop |
| (ref.null $struct.C) |
| ) |
| (unreachable) |
| ) |
| (func $unreachables-3 |
| (unreachable) |
| ) |
| (func $unreachables-4 |
| (unreachable) |
| ) |
| (func $unreachables-array-1 |
| (unreachable) |
| ) |
| (func $unreachables-array-2 |
| (drop |
| (ref.null $vector) |
| ) |
| (unreachable) |
| ) |
| (func $unreachables-array-3 |
| (unreachable) |
| ) |
| (func $unreachables-array-4 |
| (drop |
| (ref.null $vector) |
| ) |
| (unreachable) |
| ) |
| (func $unreachables-array-5 |
| (drop |
| (ref.null $vector) |
| ) |
| (drop |
| (i32.const 2) |
| ) |
| (unreachable) |
| ) |
| (func $unreachables-array-6 |
| (unreachable) |
| ) |
| (func $unreachables-7 |
| (unreachable) |
| ) |
| (func $array-copy (param $x (ref $vector)) (param $y (ref null $vector)) |
| (array.copy $vector $vector |
| (local.get $x) |
| (i32.const 11) |
| (local.get $y) |
| (i32.const 42) |
| (i32.const 1337) |
| ) |
| ) |
| (func $array-init (result (ref $vector)) |
| (array.init $vector |
| (f64.const 1) |
| (f64.const 2) |
| (f64.const 4) |
| (f64.const 8) |
| (rtt.canon $vector) |
| ) |
| ) |
| (func $array-init-packed (result (ref $bytes)) |
| (array.init $bytes |
| (i32.const 4) |
| (i32.const 2) |
| (i32.const 1) |
| (rtt.canon $bytes) |
| ) |
| ) |
| (func $static-operations |
| (local $temp.A (ref null $struct.A)) |
| (local $temp.B (ref null $struct.B)) |
| (drop |
| (ref.test_static $struct.B |
| (ref.null $struct.A) |
| ) |
| ) |
| (drop |
| (ref.cast_static $struct.B |
| (ref.null $struct.A) |
| ) |
| ) |
| (drop |
| (block $label$1 (result (ref $struct.B)) |
| (local.set $temp.A |
| (br_on_cast_static $label$1 $struct.B |
| (ref.null $struct.A) |
| ) |
| ) |
| (unreachable) |
| ) |
| ) |
| (drop |
| (block $label$2 (result (ref null $struct.A)) |
| (local.set $temp.B |
| (br_on_cast_static_fail $label$2 $struct.B |
| (ref.null $struct.A) |
| ) |
| ) |
| (unreachable) |
| ) |
| ) |
| ) |
| (func $static-constructions |
| (drop |
| (struct.new_default $struct.A) |
| ) |
| (drop |
| (struct.new $struct.A |
| (i32.const 1) |
| (f32.const 2.3450000286102295) |
| (f64.const 3.14159) |
| ) |
| ) |
| (drop |
| (array.new $vector |
| (f64.const 3.14159) |
| (i32.const 3) |
| ) |
| ) |
| (drop |
| (array.new_default $matrix |
| (i32.const 10) |
| ) |
| ) |
| (drop |
| (array.init_static $vector |
| (f64.const 1) |
| (f64.const 2) |
| (f64.const 4) |
| (f64.const 8) |
| ) |
| ) |
| ) |
| ) |
| |