summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2021-11-08 17:35:33 -0800
committerGitHub <noreply@github.com>2021-11-08 17:35:33 -0800
commit31a5bf7ad7dbe30ec47766271ba13276117f98a0 (patch)
treee40a3f1e8b5ddfbed9b8ada1dacfe46f8671f5e4
parented4d22e22414a561e5b5af0064a3a47fc8db1645 (diff)
downloadbinaryen-31a5bf7ad7dbe30ec47766271ba13276117f98a0.tar.gz
binaryen-31a5bf7ad7dbe30ec47766271ba13276117f98a0.tar.bz2
binaryen-31a5bf7ad7dbe30ec47766271ba13276117f98a0.zip
Print heap types in text format in nominal mode (#4316)
Without this roundtripping may not work in nominal mode, as we might not assign the expected heap types in the right places. Specifically, when the signature matches but the nominal types are distinct then we need to keep them that way (and the sugar in the text format parsing will merge them).
-rw-r--r--src/passes/Print.cpp4
-rw-r--r--test/lit/binary/heap-types.wast10
-rw-r--r--test/lit/gc-eh.wast2
-rw-r--r--test/lit/gc-read-write-effects.wast2
-rw-r--r--test/lit/lub-bug-3843.wast2
-rw-r--r--test/lit/nominal-chain.wast2
-rw-r--r--test/lit/nominal-func.wast4
-rw-r--r--test/lit/nominal-good.wast8
-rw-r--r--test/lit/nominal-named-field.wast2
-rw-r--r--test/lit/passes/cfp.wast112
-rw-r--r--test/lit/passes/dae-gc-refine-params.wast24
-rw-r--r--test/lit/passes/dae-gc-refine-return.wast50
-rw-r--r--test/lit/passes/dae-gc.wast8
-rw-r--r--test/lit/passes/gto-mutability.wast36
-rw-r--r--test/lit/passes/gto-removals.wast46
-rw-r--r--test/lit/passes/gto_and_cfp_in_O.wast2
-rw-r--r--test/lit/passes/heap2local.wast88
-rw-r--r--test/lit/passes/inlining_all-features.wast20
-rw-r--r--test/lit/passes/instrument-memory-gc.wast4
-rw-r--r--test/lit/passes/local-subtyping-nn.wast4
-rw-r--r--test/lit/passes/name-types.wast2
-rw-r--r--test/lit/passes/optimize-instructions-call_ref-roundtrip.wast8
-rw-r--r--test/lit/passes/optimize-instructions-gc-iit.wast20
-rw-r--r--test/lit/passes/optimize-instructions-gc.wast100
-rw-r--r--test/lit/passes/precompute-gc-immutable.wast52
-rw-r--r--test/lit/passes/precompute-gc.wast58
-rw-r--r--test/lit/passes/roundtrip-gc.wast15
-rw-r--r--test/lit/passes/simplify-locals-gc.wast8
-rw-r--r--test/lit/tail-call.wast10
29 files changed, 360 insertions, 343 deletions
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index db121a22c..ce4238f34 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -2727,6 +2727,10 @@ struct PrintSExpression : public UnifiedExpressionVisitor<PrintSExpression> {
o << '(';
printMajor(o, "func ");
printName(curr->name, o);
+ if (getTypeSystem() == TypeSystem::Nominal) {
+ o << " (type ";
+ printHeapType(o, curr->type, currModule) << ')';
+ }
if (!stackIR && curr->stackIR && !minify) {
o << " (; has Stack IR ;)";
}
diff --git a/test/lit/binary/heap-types.wast b/test/lit/binary/heap-types.wast
index 98ece30bf..ff9e59290 100644
--- a/test/lit/binary/heap-types.wast
+++ b/test/lit/binary/heap-types.wast
@@ -21,7 +21,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $test
+ ;; NOMNL: (func $test (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test_static $struct.B
;; NOMNL-NEXT: (ref.null $struct.A)
@@ -48,7 +48,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $test
+ ;; NOMNL: (func $test (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast_static $struct.B
;; NOMNL-NEXT: (ref.null $struct.A)
@@ -71,7 +71,7 @@
;; CHECK-NEXT: (struct.new_default $struct.A)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $test
+ ;; NOMNL: (func $test (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (struct.new_default $struct.A)
;; NOMNL-NEXT: )
@@ -95,7 +95,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $test
+ ;; NOMNL: (func $test (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (array.new $vector
;; NOMNL-NEXT: (f64.const 3.14159)
@@ -127,7 +127,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $test
+ ;; NOMNL: (func $test (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (array.init_static $vector
;; NOMNL-NEXT: (f64.const 1)
diff --git a/test/lit/gc-eh.wast b/test/lit/gc-eh.wast
index 7a69f01ab..41897d0b3 100644
--- a/test/lit/gc-eh.wast
+++ b/test/lit/gc-eh.wast
@@ -29,7 +29,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null $A)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo (result (ref null $A))
+ ;; NOMNL: (func $foo (type $none_=>_ref?|$A|) (result (ref null $A))
;; NOMNL-NEXT: (try $try
;; NOMNL-NEXT: (do
;; NOMNL-NEXT: (nop)
diff --git a/test/lit/gc-read-write-effects.wast b/test/lit/gc-read-write-effects.wast
index 62ec481b1..b7ba2d065 100644
--- a/test/lit/gc-read-write-effects.wast
+++ b/test/lit/gc-read-write-effects.wast
@@ -37,7 +37,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $y)
;; CHECK-NEXT: )
- ;; NOMNL: (func $test (param $x (ref null $A)) (result i32)
+ ;; NOMNL: (func $test (type $ref?|$A|_=>_i32) (param $x (ref null $A)) (result i32)
;; NOMNL-NEXT: (local $y i32)
;; NOMNL-NEXT: (local.set $y
;; NOMNL-NEXT: (struct.get $A 0
diff --git a/test/lit/lub-bug-3843.wast b/test/lit/lub-bug-3843.wast
index 409526a78..596f4a6d9 100644
--- a/test/lit/lub-bug-3843.wast
+++ b/test/lit/lub-bug-3843.wast
@@ -31,7 +31,7 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo (param $a (ref null $A)) (result (ref null $A))
+ ;; NOMNL: (func $foo (type $ref?|$A|_=>_ref?|$A|) (param $a (ref null $A)) (result (ref null $A))
;; NOMNL-NEXT: (select (result (ref null $A))
;; NOMNL-NEXT: (local.get $a)
;; NOMNL-NEXT: (ref.null $B)
diff --git a/test/lit/nominal-chain.wast b/test/lit/nominal-chain.wast
index 2c90ee6ec..474286e6b 100644
--- a/test/lit/nominal-chain.wast
+++ b/test/lit/nominal-chain.wast
@@ -23,7 +23,7 @@
(type $root (struct))
- ;; CHECK: (func $make-root (result (ref null $root))
+ ;; CHECK: (func $make-root (type $none_=>_ref?|$root|) (result (ref null $root))
;; CHECK-NEXT: (ref.null $leaf)
;; CHECK-NEXT: )
(func $make-root (result (ref null $root))
diff --git a/test/lit/nominal-func.wast b/test/lit/nominal-func.wast
index 08acae21d..9e59d6900 100644
--- a/test/lit/nominal-func.wast
+++ b/test/lit/nominal-func.wast
@@ -9,7 +9,7 @@
;; CHECK: (type $foo_t (func_subtype func))
(type $foo_t (func))
- ;; CHECK: (func $foo
+ ;; CHECK: (func $foo (type $foo_t)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
(func $foo (type $foo_t)
@@ -17,7 +17,7 @@
)
;; $foo needs to be assigned type foo_t rather than bad_t for this to validate.
- ;; CHECK: (func $make-ref (result (ref $foo_t))
+ ;; CHECK: (func $make-ref (type $none_=>_ref|$foo_t|) (result (ref $foo_t))
;; CHECK-NEXT: (ref.func $foo)
;; CHECK-NEXT: )
(func $make-ref (result (ref $foo_t))
diff --git a/test/lit/nominal-good.wast b/test/lit/nominal-good.wast
index cbe036488..10ecc2901 100644
--- a/test/lit/nominal-good.wast
+++ b/test/lit/nominal-good.wast
@@ -26,7 +26,7 @@
;; TODO: signature types as well, once functions store their HeapTypes.
- ;; NOMINAL: (func $make-super-struct (result (ref $super-struct))
+ ;; NOMINAL: (func $make-super-struct (type $none_=>_ref|$super-struct|) (result (ref $super-struct))
;; NOMINAL-NEXT: (call $make-sub-struct)
;; NOMINAL-NEXT: )
;; EQUIREC: (func $make-super-struct (result (ref $super-struct))
@@ -36,7 +36,7 @@
(call $make-sub-struct)
)
- ;; NOMINAL: (func $make-sub-struct (result (ref $sub-struct))
+ ;; NOMINAL: (func $make-sub-struct (type $none_=>_ref|$sub-struct|) (result (ref $sub-struct))
;; NOMINAL-NEXT: (unreachable)
;; NOMINAL-NEXT: )
;; EQUIREC: (func $make-sub-struct (result (ref $sub-struct))
@@ -46,7 +46,7 @@
(unreachable)
)
- ;; NOMINAL: (func $make-super-array (result (ref $super-array))
+ ;; NOMINAL: (func $make-super-array (type $none_=>_ref|$super-array|) (result (ref $super-array))
;; NOMINAL-NEXT: (call $make-sub-array)
;; NOMINAL-NEXT: )
;; EQUIREC: (func $make-super-array (result (ref $super-array))
@@ -56,7 +56,7 @@
(call $make-sub-array)
)
- ;; NOMINAL: (func $make-sub-array (result (ref $sub-array))
+ ;; NOMINAL: (func $make-sub-array (type $none_=>_ref|$sub-array|) (result (ref $sub-array))
;; NOMINAL-NEXT: (unreachable)
;; NOMINAL-NEXT: )
;; EQUIREC: (func $make-sub-array (result (ref $sub-array))
diff --git a/test/lit/nominal-named-field.wast b/test/lit/nominal-named-field.wast
index 3b827e11b..297ad0a9a 100644
--- a/test/lit/nominal-named-field.wast
+++ b/test/lit/nominal-named-field.wast
@@ -13,7 +13,7 @@
(field $named f64)
))
- ;; CHECK: (func $foo (param $0 (ref $struct))
+ ;; CHECK: (func $foo (type $ref|$struct|_=>_none) (param $0 (ref $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct $named
;; CHECK-NEXT: (local.get $0)
diff --git a/test/lit/passes/cfp.wast b/test/lit/passes/cfp.wast
index 3a99e807f..d1eecc658 100644
--- a/test/lit/passes/cfp.wast
+++ b/test/lit/passes/cfp.wast
@@ -8,7 +8,7 @@
;; CHECK: (type $struct (struct_subtype (field i32) data))
(type $struct (struct i32))
- ;; CHECK: (func $impossible-get
+ ;; CHECK: (func $impossible-get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (drop
@@ -35,7 +35,7 @@
(type $struct (struct i64))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default_with_rtt $struct
;; CHECK-NEXT: (rtt.canon $struct)
@@ -78,7 +78,7 @@
(type $struct (struct f32))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (f32.const 42)
@@ -118,7 +118,7 @@
(type $struct (struct f32))
;; CHECK: (type $f32_=>_none (func_subtype (param f32) func))
- ;; CHECK: (func $test (param $f f32)
+ ;; CHECK: (func $test (type $f32_=>_none) (param $f f32)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (local.get $f)
@@ -154,7 +154,7 @@
;; CHECK: (type $struct (struct_subtype (field i32) data))
(type $struct (struct i32))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -170,7 +170,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -199,7 +199,7 @@
;; CHECK: (type $struct (struct_subtype (field i32) data))
(type $struct (struct i32))
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -219,7 +219,7 @@
)
)
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -244,7 +244,7 @@
(type $struct (struct f32))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (f32.const 42)
@@ -290,7 +290,7 @@
(type $struct (struct (mut f32)))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (f32.const 42)
@@ -306,7 +306,7 @@
)
)
)
- ;; CHECK: (func $set
+ ;; CHECK: (func $set (type $none_=>_none)
;; CHECK-NEXT: (struct.set $struct 0
;; CHECK-NEXT: (ref.null $struct)
;; CHECK-NEXT: (f32.const 1337)
@@ -318,7 +318,7 @@
(f32.const 1337)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (ref.null $struct)
@@ -341,7 +341,7 @@
(type $struct (struct (mut f32)))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (f32.const 42)
@@ -357,7 +357,7 @@
)
)
)
- ;; CHECK: (func $set
+ ;; CHECK: (func $set (type $none_=>_none)
;; CHECK-NEXT: (struct.set $struct 0
;; CHECK-NEXT: (ref.null $struct)
;; CHECK-NEXT: (f32.const 42)
@@ -369,7 +369,7 @@
(f32.const 42) ;; The last testcase had 1337 here.
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result f32)
;; CHECK-NEXT: (drop
@@ -398,7 +398,7 @@
;; CHECK: (type $i32_=>_none (func_subtype (param i32) func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (block (result f32)
@@ -421,7 +421,7 @@
)
)
)
- ;; CHECK: (func $set (param $x i32)
+ ;; CHECK: (func $set (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (struct.set $struct 0
;; CHECK-NEXT: (ref.null $struct)
;; CHECK-NEXT: (if (result f32)
@@ -442,7 +442,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result f32)
;; CHECK-NEXT: (drop
@@ -471,7 +471,7 @@
(type $struct (struct funcref))
;; CHECK: (elem declare func $test)
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (ref.func $test)
@@ -509,7 +509,7 @@
(type $struct (struct (mut i32)))
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit)
;; CHECK-NEXT: (drop
@@ -566,7 +566,7 @@
;; CHECK: (type $substruct (struct_subtype (field i32) $struct))
(type $substruct (struct_subtype i32 $struct))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -582,7 +582,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block
;; CHECK-NEXT: (drop
@@ -613,7 +613,7 @@
;; CHECK: (type $substruct (struct_subtype (field (mut i32)) $struct))
(type $substruct (struct_subtype (mut i32) $struct))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -637,7 +637,7 @@
(i32.const 10)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -670,7 +670,7 @@
;; CHECK: (type $struct (struct_subtype (field i32) data))
(type $struct (struct i32))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $substruct
;; CHECK-NEXT: (i32.const 10)
@@ -688,7 +688,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -719,7 +719,7 @@
;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct))
(type $substruct (struct_subtype i32 f64 $struct))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -749,7 +749,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -781,7 +781,7 @@
;; CHECK: (type $substruct (struct_subtype (field i32) (field f64) $struct))
(type $substruct (struct_subtype i32 f64 $struct))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -811,7 +811,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (ref.null $struct)
@@ -840,7 +840,7 @@
;; CHECK: (type $struct (struct_subtype (field i32) data))
(type $struct (struct i32))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -870,7 +870,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -901,7 +901,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.const 10)
@@ -939,7 +939,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $substruct 0
;; CHECK-NEXT: (ref.null $substruct)
@@ -969,7 +969,7 @@
;; CHECK: (type $struct1 (struct_subtype (field i32) data))
(type $struct1 (struct i32))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct3
;; CHECK-NEXT: (i32.const 20)
@@ -989,7 +989,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -1106,7 +1106,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create (param $any anyref)
+ ;; CHECK: (func $create (type $anyref_=>_none) (param $any anyref)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct1
;; CHECK-NEXT: (i32.const 10)
@@ -1147,7 +1147,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result i32)
;; CHECK-NEXT: (drop
@@ -1336,7 +1336,7 @@
;; CHECK: (type $struct3 (struct_subtype (field (mut i32)) (field f64) (field anyref) $struct2))
(type $struct3 (struct_subtype (mut i32) f64 anyref $struct2))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct1
;; CHECK-NEXT: (i32.const 10)
@@ -1382,7 +1382,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct1 0
;; CHECK-NEXT: (ref.null $struct1)
@@ -1438,7 +1438,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct1
;; CHECK-NEXT: (i32.const 10)
@@ -1493,7 +1493,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct1 0
;; CHECK-NEXT: (ref.null $struct1)
@@ -1538,7 +1538,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $struct
;; CHECK-NEXT: (i32.eqz
@@ -1566,7 +1566,7 @@
)
)
)
- ;; CHECK: (func $get
+ ;; CHECK: (func $get (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (ref.null $struct)
@@ -1672,7 +1672,7 @@
;; CHECK: (type $B (struct_subtype (field (mut i32)) $A))
(type $B (struct_subtype (mut i32) $A))
- ;; CHECK: (func $create
+ ;; CHECK: (func $create (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_with_rtt $C
;; CHECK-NEXT: (i32.const 10)
@@ -1688,7 +1688,7 @@
)
)
)
- ;; CHECK: (func $set (param $a (ref $A))
+ ;; CHECK: (func $set (type $ref|$A|_=>_none) (param $a (ref $A))
;; CHECK-NEXT: (struct.set $A 0
;; CHECK-NEXT: (local.get $a)
;; CHECK-NEXT: (i32.const 20)
@@ -1700,7 +1700,7 @@
(i32.const 20)
)
)
- ;; CHECK: (func $get (param $c (ref $C))
+ ;; CHECK: (func $get (type $ref|$C|_=>_none) (param $c (ref $C))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $C 0
;; CHECK-NEXT: (local.get $c)
@@ -1724,7 +1724,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default_with_rtt $struct
;; CHECK-NEXT: (rtt.canon $struct)
@@ -1784,7 +1784,7 @@
;; CHECK: (type $other (struct_subtype (field (mut f64)) (field (mut i32)) data))
(type $other (struct (mut f64) (mut i32)))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default_with_rtt $struct
;; CHECK-NEXT: (rtt.canon $struct)
@@ -1833,7 +1833,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default_with_rtt $struct
;; CHECK-NEXT: (rtt.canon $struct)
@@ -1886,7 +1886,7 @@
;; CHECK: (global $global i32 (i32.const 42))
(global $global i32 (i32.const 42))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (global.get $global)
@@ -1928,7 +1928,7 @@
;; CHECK: (global $global (mut i32) (i32.const 42))
(global $global (mut i32) (i32.const 42))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (global.get $global)
@@ -1964,7 +1964,7 @@
;; CHECK: (global $global i32 (i32.const 42))
(global $global i32 (i32.const 42))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (global.get $global)
@@ -2017,7 +2017,7 @@
;; CHECK: (global $global-2 i32 (i32.const 1337))
(global $global-2 i32 (i32.const 1337))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (global.get $global)
@@ -2063,7 +2063,7 @@
;; CHECK: (global $global-2 i32 (i32.const 1337))
(global $global-2 i32 (i32.const 1337))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (global.get $global)
@@ -2131,7 +2131,7 @@
)
))
- ;; CHECK: (func $test (result funcref)
+ ;; CHECK: (func $test (type $none_=>_funcref) (result funcref)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $object
;; CHECK-NEXT: (global.get $global)
diff --git a/test/lit/passes/dae-gc-refine-params.wast b/test/lit/passes/dae-gc-refine-params.wast
index 7c986bd4e..7ecbcc5c8 100644
--- a/test/lit/passes/dae-gc-refine-params.wast
+++ b/test/lit/passes/dae-gc-refine-params.wast
@@ -33,7 +33,7 @@
;; CHECK-NEXT: (ref.null ${f64})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-no
+ ;; NOMNL: (func $call-various-params-no (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-no
;; NOMNL-NEXT: (ref.null ${})
;; NOMNL-NEXT: (ref.null ${i32})
@@ -65,7 +65,7 @@
;; CHECK-NEXT: (local.get $y)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-no (param $x (ref null ${})) (param $y (ref null ${}))
+ ;; NOMNL: (func $various-params-no (type $ref?|${}|_ref?|${}|_=>_none) (param $x (ref null ${})) (param $y (ref null ${}))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
@@ -91,7 +91,7 @@
;; CHECK-NEXT: (ref.null ${i32_i64})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-yes
+ ;; NOMNL: (func $call-various-params-yes (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-yes
;; NOMNL-NEXT: (ref.null ${i32})
;; NOMNL-NEXT: (i32.const 0)
@@ -131,7 +131,7 @@
;; CHECK-NEXT: (local.get $y)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-yes (param $x (ref null ${i32})) (param $i i32) (param $y (ref null ${i32}))
+ ;; NOMNL: (func $various-params-yes (type $ref?|${i32}|_i32_ref?|${i32}|_=>_none) (param $x (ref null ${i32})) (param $i i32) (param $y (ref null ${i32}))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
@@ -159,7 +159,7 @@
;; CHECK-NEXT: (ref.null ${i32_i64})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-set
+ ;; NOMNL: (func $call-various-params-set (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-set
;; NOMNL-NEXT: (ref.null ${i32})
;; NOMNL-NEXT: (ref.null ${i32})
@@ -198,7 +198,7 @@
;; CHECK-NEXT: (ref.null ${i32_i64})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-set (param $x (ref null ${})) (param $y (ref null ${i32}))
+ ;; NOMNL: (func $various-params-set (type $ref?|${}|_ref?|${i32}|_=>_none) (param $x (ref null ${})) (param $y (ref null ${i32}))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
@@ -227,7 +227,7 @@
;; CHECK-NEXT: (ref.null ${i32})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-tee
+ ;; NOMNL: (func $call-various-params-tee (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-tee
;; NOMNL-NEXT: (ref.null ${i32})
;; NOMNL-NEXT: )
@@ -250,7 +250,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-tee (param $x (ref null ${i32}))
+ ;; NOMNL: (func $various-params-tee (type $ref?|${i32}|_=>_none) (param $x (ref null ${i32}))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
@@ -291,7 +291,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-null
+ ;; NOMNL: (func $call-various-params-null (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-null
;; NOMNL-NEXT: (ref.as_non_null
;; NOMNL-NEXT: (ref.null ${i32})
@@ -333,7 +333,7 @@
;; CHECK-NEXT: (local.get $temp)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-null (param $x (ref ${i32})) (param $y (ref null ${i32}))
+ ;; NOMNL: (func $various-params-null (type $ref|${i32}|_ref?|${i32}|_=>_none) (param $x (ref ${i32})) (param $y (ref null ${i32}))
;; NOMNL-NEXT: (local $temp i32)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
@@ -365,7 +365,7 @@
;; CHECK-NEXT: (ref.null ${i32_f32})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-various-params-middle
+ ;; NOMNL: (func $call-various-params-middle (type $none_=>_none)
;; NOMNL-NEXT: (call $various-params-middle
;; NOMNL-NEXT: (ref.null ${i32_i64})
;; NOMNL-NEXT: )
@@ -388,7 +388,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $various-params-middle (param $x (ref null ${i32}))
+ ;; NOMNL: (func $various-params-middle (type $ref?|${i32}|_=>_none) (param $x (ref null ${i32}))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
diff --git a/test/lit/passes/dae-gc-refine-return.wast b/test/lit/passes/dae-gc-refine-return.wast
index 60b340cdc..c5ea326d9 100644
--- a/test/lit/passes/dae-gc-refine-return.wast
+++ b/test/lit/passes/dae-gc-refine-return.wast
@@ -33,7 +33,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-no-return (result anyref)
+ ;; NOMNL: (func $refine-return-no-return (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-no-return)
@@ -58,7 +58,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null any)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-no-refining (result anyref)
+ ;; NOMNL: (func $refine-return-no-refining (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-no-refining)
@@ -80,7 +80,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null func)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-flow (result funcref)
+ ;; NOMNL: (func $refine-return-flow (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-flow)
@@ -104,7 +104,7 @@
;; CHECK-NEXT: (call $refine-return-flow)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $call-refine-return-flow (result funcref)
+ ;; NOMNL: (func $call-refine-return-flow (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $call-refine-return-flow)
@@ -139,7 +139,7 @@
;; CHECK-NEXT: (ref.null func)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-return (result funcref)
+ ;; NOMNL: (func $refine-return-return (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-return)
@@ -175,7 +175,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null func)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-many (result funcref)
+ ;; NOMNL: (func $refine-return-many (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-many)
@@ -228,7 +228,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null func)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-many-blocked (result anyref)
+ ;; NOMNL: (func $refine-return-many-blocked (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-many-blocked)
@@ -282,7 +282,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null data)
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-many-blocked-2 (result anyref)
+ ;; NOMNL: (func $refine-return-many-blocked-2 (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-many-blocked-2)
@@ -330,7 +330,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null ${i32_f32})
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-many-middle (result (ref null ${i32}))
+ ;; NOMNL: (func $refine-return-many-middle (type $none_=>_ref?|${i32}|) (result (ref null ${i32}))
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (call $refine-return-many-middle)
@@ -369,7 +369,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $refine-return-tuple (result funcref i32)
+ ;; NOMNL: (func $refine-return-tuple (type $none_=>_funcref_i32) (result funcref i32)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (tuple.extract 0
@@ -402,7 +402,7 @@
;; CHECK: (func $do-return-call (result funcref)
;; CHECK-NEXT: (return_call $return-ref-func)
;; CHECK-NEXT: )
- ;; NOMNL: (func $do-return-call (result funcref)
+ ;; NOMNL: (func $do-return-call (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (return_call $return-ref-func)
;; NOMNL-NEXT: )
(func $do-return-call (result funcref)
@@ -411,7 +411,7 @@
;; CHECK: (func $return-ref-func (result (ref $none_=>_funcref))
;; CHECK-NEXT: (ref.func $do-return-call)
;; CHECK-NEXT: )
- ;; NOMNL: (func $return-ref-func (result (ref $none_=>_funcref))
+ ;; NOMNL: (func $return-ref-func (type $none_=>_ref|none_->_funcref|) (result (ref $none_=>_funcref))
;; NOMNL-NEXT: (ref.func $do-return-call)
;; NOMNL-NEXT: )
(func $return-ref-func (result funcref)
@@ -423,7 +423,7 @@
;; CHECK: (func $tail-callee (result (ref ${}))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-callee (result (ref ${}))
+ ;; NOMNL: (func $tail-callee (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $tail-callee (result (ref ${}))
@@ -432,7 +432,7 @@
;; CHECK: (func $tail-caller-yes (result (ref ${}))
;; CHECK-NEXT: (return_call $tail-callee)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-yes (result (ref ${}))
+ ;; NOMNL: (func $tail-caller-yes (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (return_call $tail-callee)
;; NOMNL-NEXT: )
(func $tail-caller-yes (result anyref)
@@ -449,7 +449,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (return_call $tail-callee)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-no (result anyref)
+ ;; NOMNL: (func $tail-caller-no (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (if
;; NOMNL-NEXT: (i32.const 1)
;; NOMNL-NEXT: (return
@@ -474,7 +474,7 @@
;; CHECK-NEXT: (call $tail-caller-no)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-call-caller
+ ;; NOMNL: (func $tail-call-caller (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (call $tail-caller-yes)
;; NOMNL-NEXT: )
@@ -496,7 +496,7 @@
;; CHECK: (func $tail-callee-indirect (result (ref ${}))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-callee-indirect (result (ref ${}))
+ ;; NOMNL: (func $tail-callee-indirect (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $tail-callee-indirect (result (ref ${}))
@@ -507,7 +507,7 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-indirect-yes (result (ref ${}))
+ ;; NOMNL: (func $tail-caller-indirect-yes (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (return_call_indirect $0 (type $return_{})
;; NOMNL-NEXT: (i32.const 0)
;; NOMNL-NEXT: )
@@ -526,7 +526,7 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-indirect-no (result anyref)
+ ;; NOMNL: (func $tail-caller-indirect-no (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (if
;; NOMNL-NEXT: (i32.const 1)
;; NOMNL-NEXT: (return
@@ -551,7 +551,7 @@
;; CHECK-NEXT: (call $tail-caller-indirect-no)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-call-caller-indirect
+ ;; NOMNL: (func $tail-call-caller-indirect (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (call $tail-caller-indirect-yes)
;; NOMNL-NEXT: )
@@ -572,7 +572,7 @@
;; CHECK: (func $tail-callee-call_ref (result (ref ${}))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-callee-call_ref (result (ref ${}))
+ ;; NOMNL: (func $tail-callee-call_ref (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $tail-callee-call_ref (result (ref ${}))
@@ -583,7 +583,7 @@
;; CHECK-NEXT: (ref.null $return_{})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-call_ref-yes (result (ref ${}))
+ ;; NOMNL: (func $tail-caller-call_ref-yes (type $return_{}) (result (ref ${}))
;; NOMNL-NEXT: (return_call_ref
;; NOMNL-NEXT: (ref.null $return_{})
;; NOMNL-NEXT: )
@@ -602,7 +602,7 @@
;; CHECK-NEXT: (ref.null $return_{})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-call_ref-no (result anyref)
+ ;; NOMNL: (func $tail-caller-call_ref-no (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (if
;; NOMNL-NEXT: (i32.const 1)
;; NOMNL-NEXT: (return
@@ -622,7 +622,7 @@
;; CHECK: (func $tail-caller-call_ref-unreachable
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-caller-call_ref-unreachable
+ ;; NOMNL: (func $tail-caller-call_ref-unreachable (type $none_=>_none)
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $tail-caller-call_ref-unreachable (result anyref)
@@ -639,7 +639,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $tail-caller-call_ref-unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tail-call-caller-call_ref
+ ;; NOMNL: (func $tail-call-caller-call_ref (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (call $tail-caller-call_ref-yes)
;; NOMNL-NEXT: )
diff --git a/test/lit/passes/dae-gc.wast b/test/lit/passes/dae-gc.wast
index 3cc1c8653..bcf177f74 100644
--- a/test/lit/passes/dae-gc.wast
+++ b/test/lit/passes/dae-gc.wast
@@ -10,7 +10,7 @@
;; CHECK: (func $foo
;; CHECK-NEXT: (call $bar)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo
+ ;; NOMNL: (func $foo (type $none_=>_none)
;; NOMNL-NEXT: (call $bar)
;; NOMNL-NEXT: )
(func $foo
@@ -35,7 +35,7 @@
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $bar
+ ;; NOMNL: (func $bar (type $none_=>_none)
;; NOMNL-NEXT: (local $0 (ref null i31))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.as_non_null
@@ -74,7 +74,7 @@
;; CHECK: (func $get-rtt (param $0 (rtt ${}))
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $get-rtt (param $0 (rtt ${}))
+ ;; NOMNL: (func $get-rtt (type $rtt_${}_=>_none) (param $0 (rtt ${}))
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $get-rtt (param $0 (rtt ${}))
@@ -85,7 +85,7 @@
;; CHECK-NEXT: (rtt.canon ${})
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $send-rtt
+ ;; NOMNL: (func $send-rtt (type $none_=>_none)
;; NOMNL-NEXT: (call $get-rtt
;; NOMNL-NEXT: (rtt.canon ${})
;; NOMNL-NEXT: )
diff --git a/test/lit/passes/gto-mutability.wast b/test/lit/passes/gto-mutability.wast
index 26376e738..89c2a537f 100644
--- a/test/lit/passes/gto-mutability.wast
+++ b/test/lit/passes/gto-mutability.wast
@@ -29,7 +29,7 @@
;; CHECK: (tag $tag (param (ref $struct)))
(tag $tag (param (ref $struct)))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (local $temp (ref null $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
@@ -97,7 +97,7 @@
)
)
- ;; CHECK: (func $foo (result (ref null $struct))
+ ;; CHECK: (func $foo (type $none_=>_ref?|$struct|) (result (ref null $struct))
;; CHECK-NEXT: (try $try
;; CHECK-NEXT: (do
;; CHECK-NEXT: (nop)
@@ -126,7 +126,7 @@
(ref.null $struct)
)
- ;; CHECK: (func $func-two-params (param $x (ref $struct)) (param $y (ref $struct))
+ ;; CHECK: (func $func-two-params (type $two-params) (param $x (ref $struct)) (param $y (ref $struct))
;; CHECK-NEXT: (local $z (ref null $two-params))
;; CHECK-NEXT: (local.set $z
;; CHECK-NEXT: (ref.func $func-two-params)
@@ -153,7 +153,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 2
;; CHECK-NEXT: (ref.null $struct)
@@ -180,7 +180,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $A))
+ ;; CHECK: (func $func (type $ref|$A|_=>_none) (param $x (ref $A))
;; CHECK-NEXT: (struct.set $A 0
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (ref.null $B)
@@ -201,7 +201,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $A 0
;; CHECK-NEXT: (ref.null $A)
@@ -244,7 +244,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $B))
+ ;; CHECK: (func $func (type $ref|$B|_=>_none) (param $x (ref $B))
;; CHECK-NEXT: (struct.set $B 0
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (ref.null $A)
@@ -265,7 +265,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $A 0
;; CHECK-NEXT: (ref.null $A)
@@ -308,7 +308,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $A)) (param $y (ref $B))
+ ;; CHECK: (func $func (type $ref|$A|_ref|$B|_=>_none) (param $x (ref $A)) (param $y (ref $B))
;; CHECK-NEXT: (struct.set $A 0
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (ref.null $B)
@@ -329,7 +329,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $A 0
;; CHECK-NEXT: (ref.null $A)
@@ -371,7 +371,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (struct.set $struct 2
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (i32.const 1)
@@ -384,7 +384,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (ref.null $struct)
@@ -419,7 +419,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func
+ ;; CHECK: (func $func (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $super
;; CHECK-NEXT: (i32.const 1)
@@ -445,7 +445,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $super 0
;; CHECK-NEXT: (ref.null $super)
@@ -475,7 +475,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $super))
+ ;; CHECK: (func $func (type $ref|$super|_=>_none) (param $x (ref $super))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $super
;; CHECK-NEXT: (i32.const 1)
@@ -509,7 +509,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $super 0
;; CHECK-NEXT: (ref.null $super)
@@ -541,7 +541,7 @@
;; CHECK: (type $none_=>_none (func_subtype func))
- ;; CHECK: (func $func (param $x (ref $sub))
+ ;; CHECK: (func $func (type $ref|$sub|_=>_none) (param $x (ref $sub))
;; CHECK-NEXT: (struct.set $sub 0
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (i32.const 2)
@@ -554,7 +554,7 @@
)
)
- ;; CHECK: (func $field-keepalive
+ ;; CHECK: (func $field-keepalive (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $super 0
;; CHECK-NEXT: (ref.null $super)
diff --git a/test/lit/passes/gto-removals.wast b/test/lit/passes/gto-removals.wast
index 188019fab..fc5ed90bf 100644
--- a/test/lit/passes/gto-removals.wast
+++ b/test/lit/passes/gto-removals.wast
@@ -12,7 +12,7 @@
;; CHECK: (type $struct (struct_subtype data))
(type $struct (struct_subtype (field (mut funcref)) data))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func (param $x (ref $struct))
@@ -27,7 +27,7 @@
;; CHECK: (type $struct (struct_subtype data))
(type $struct (struct_subtype (field (mut funcref)) data))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
@@ -53,7 +53,7 @@
;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default $struct)
;; CHECK-NEXT: )
@@ -76,7 +76,7 @@
;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new_default $struct)
;; CHECK-NEXT: )
@@ -98,7 +98,7 @@
;; CHECK: (type $ref|$struct|_=>_none (func_subtype (param (ref $struct)) func))
- ;; CHECK: (func $func (param $x (ref $struct))
+ ;; CHECK: (func $func (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (local.get $x)
@@ -132,7 +132,7 @@
;; CHECK: (type $ref|$imm-struct|_=>_none (func_subtype (param (ref $imm-struct)) func))
- ;; CHECK: (func $func-mut (param $x (ref $mut-struct))
+ ;; CHECK: (func $func-mut (type $ref|$mut-struct|_=>_none) (param $x (ref $mut-struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $mut-struct $r
;; CHECK-NEXT: (local.get $x)
@@ -221,7 +221,7 @@
)
)
- ;; CHECK: (func $func-imm (param $x (ref $imm-struct))
+ ;; CHECK: (func $func-imm (type $ref|$imm-struct|_=>_none) (param $x (ref $imm-struct))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $imm-struct
;; CHECK-NEXT: (i32.const 1)
@@ -284,7 +284,7 @@
(ref.func $func-4)
))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $vtable $v1
;; CHECK-NEXT: (global.get $vtable)
@@ -313,23 +313,23 @@
;; one before it.
)
- ;; CHECK: (func $func-0
+ ;; CHECK: (func $func-0 (type $none_=>_none)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func-0)
- ;; CHECK: (func $func-1
+ ;; CHECK: (func $func-1 (type $none_=>_none)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func-1)
- ;; CHECK: (func $func-2
+ ;; CHECK: (func $func-2 (type $none_=>_none)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func-2)
- ;; CHECK: (func $func-3
+ ;; CHECK: (func $func-3 (type $none_=>_none)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func-3)
- ;; CHECK: (func $func-4
+ ;; CHECK: (func $func-4 (type $none_=>_none)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $func-4)
@@ -358,7 +358,7 @@
(ref.null data)
))
- ;; CHECK: (func $test
+ ;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (local $i64 i64)
;; CHECK-NEXT: (local $f32 f32)
;; CHECK-NEXT: (local.set $i64
@@ -411,7 +411,7 @@
;; CHECK: (global $mut-i32 (mut i32) (i32.const 5678))
(global $mut-i32 (mut i32) (i32.const 5678))
- ;; CHECK: (func $gets (param $x (ref any))
+ ;; CHECK: (func $gets (type $ref|any|_=>_none) (param $x (ref any))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.get $struct 0
;; CHECK-NEXT: (ref.null $struct)
@@ -437,7 +437,7 @@
)
)
- ;; CHECK: (func $new-side-effect
+ ;; CHECK: (func $new-side-effect (type $none_=>_none)
;; CHECK-NEXT: (local $0 i32)
;; CHECK-NEXT: (local $1 f64)
;; CHECK-NEXT: (local $2 anyref)
@@ -482,7 +482,7 @@
)
)
- ;; CHECK: (func $new-side-effect-global-imm
+ ;; CHECK: (func $new-side-effect-global-imm (type $none_=>_none)
;; CHECK-NEXT: (local $0 f64)
;; CHECK-NEXT: (local $1 anyref)
;; CHECK-NEXT: (drop
@@ -519,7 +519,7 @@
)
)
- ;; CHECK: (func $new-side-effect-global-mut
+ ;; CHECK: (func $new-side-effect-global-mut (type $none_=>_none)
;; CHECK-NEXT: (local $0 i32)
;; CHECK-NEXT: (local $1 f64)
;; CHECK-NEXT: (local $2 anyref)
@@ -558,7 +558,7 @@
)
)
- ;; CHECK: (func $new-unreachable
+ ;; CHECK: (func $new-unreachable (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit)
;; CHECK-NEXT: (drop
@@ -591,7 +591,7 @@
)
)
- ;; CHECK: (func $new-side-effect-in-kept (param $any (ref any))
+ ;; CHECK: (func $new-side-effect-in-kept (type $ref|any|_=>_none) (param $any (ref any))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (struct.new $struct
;; CHECK-NEXT: (call $helper0
@@ -614,21 +614,21 @@
)
)
- ;; CHECK: (func $helper0 (param $x i32) (result i32)
+ ;; CHECK: (func $helper0 (type $i32_=>_i32) (param $x i32) (result i32)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
(func $helper0 (param $x i32) (result i32)
(unreachable)
)
- ;; CHECK: (func $helper1 (param $x i32) (result f64)
+ ;; CHECK: (func $helper1 (type $i32_=>_f64) (param $x i32) (result f64)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
(func $helper1 (param $x i32) (result f64)
(unreachable)
)
- ;; CHECK: (func $helper2 (param $x i32) (result (ref any))
+ ;; CHECK: (func $helper2 (type $i32_=>_ref|any|) (param $x i32) (result (ref any))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
(func $helper2 (param $x i32) (result (ref any))
diff --git a/test/lit/passes/gto_and_cfp_in_O.wast b/test/lit/passes/gto_and_cfp_in_O.wast
index dcff13a8c..6f0151122 100644
--- a/test/lit/passes/gto_and_cfp_in_O.wast
+++ b/test/lit/passes/gto_and_cfp_in_O.wast
@@ -30,7 +30,7 @@
;; CHECK: (export "main" (func $main))
- ;; CHECK: (func $main (; has Stack IR ;) (result i32)
+ ;; CHECK: (func $main (type $none_=>_i32) (; has Stack IR ;) (result i32)
;; CHECK-NEXT: (i32.const 100)
;; CHECK-NEXT: )
(func $main (export "main") (result i32)
diff --git a/test/lit/passes/heap2local.wast b/test/lit/passes/heap2local.wast
index 98b5d894e..ebe5d1db9 100644
--- a/test/lit/passes/heap2local.wast
+++ b/test/lit/passes/heap2local.wast
@@ -47,7 +47,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $simple
+ ;; NOMNL: (func $simple (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (drop
@@ -94,7 +94,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $to-local
+ ;; NOMNL: (func $to-local (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -149,7 +149,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $one-get
+ ;; NOMNL: (func $one-get (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (drop
@@ -210,7 +210,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $one-get-b
+ ;; NOMNL: (func $one-get-b (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (drop
@@ -265,7 +265,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $one-set
+ ;; NOMNL: (func $one-set (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (drop
@@ -305,7 +305,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $packed
+ ;; NOMNL: (func $packed (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (struct.get_u $struct.packed 0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.packed
@@ -356,7 +356,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $with-init-values
+ ;; NOMNL: (func $with-init-values (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (local $2 i32)
@@ -420,7 +420,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ignore-unreachable
+ ;; NOMNL: (func $ignore-unreachable (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block ;; (replaces something unreachable we can't emit)
;; NOMNL-NEXT: (drop
@@ -463,7 +463,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $nondefaultable
+ ;; NOMNL: (func $nondefaultable (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (struct.get $struct.nondefaultable 0
;; NOMNL-NEXT: (struct.new_with_rtt $struct.nondefaultable
@@ -513,7 +513,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $simple-one-local-set
+ ;; NOMNL: (func $simple-one-local-set (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -581,7 +581,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $simple-one-local-get (result f64)
+ ;; NOMNL: (func $simple-one-local-get (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -622,7 +622,7 @@
;; CHECK: (func $send-ref (param $0 (ref null $struct.A))
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $send-ref (param $0 (ref null $struct.A))
+ ;; NOMNL: (func $send-ref (type $ref?|$struct.A|_=>_none) (param $0 (ref null $struct.A))
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $send-ref (param (ref null $struct.A))
@@ -656,7 +656,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $safe-to-drop (result f64)
+ ;; NOMNL: (func $safe-to-drop (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -714,7 +714,7 @@
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $escape-via-call (result f64)
+ ;; NOMNL: (func $escape-via-call (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local.set $ref
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -776,7 +776,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $safe-to-drop-multiflow (result f64)
+ ;; NOMNL: (func $safe-to-drop-multiflow (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -848,7 +848,7 @@
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $escape-after-multiflow (result f64)
+ ;; NOMNL: (func $escape-after-multiflow (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local.set $ref
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -905,7 +905,7 @@
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $non-exclusive-set (result f64)
+ ;; NOMNL: (func $non-exclusive-set (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local.set $ref
;; NOMNL-NEXT: (select (result (ref $struct.A))
@@ -970,7 +970,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $local-copies (result f64)
+ ;; NOMNL: (func $local-copies (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -1053,7 +1053,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $local-copies-2
+ ;; NOMNL: (func $local-copies-2 (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $ref-2 (ref null $struct.A))
;; NOMNL-NEXT: (local $2 i32)
@@ -1148,7 +1148,7 @@
;; CHECK-NEXT: (local.get $3)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $local-copies-conditional (param $x i32) (result f64)
+ ;; NOMNL: (func $local-copies-conditional (type $i32_=>_f64) (param $x i32) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $2 i32)
;; NOMNL-NEXT: (local $3 f64)
@@ -1229,7 +1229,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $block-value (result f64)
+ ;; NOMNL: (func $block-value (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -1295,7 +1295,7 @@
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $non-exclusive-get (param $x i32) (result f64)
+ ;; NOMNL: (func $non-exclusive-get (type $i32_=>_f64) (param $x i32) (result f64)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local.set $ref
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -1351,7 +1351,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
- ;; NOMNL: (func $tee (result i32)
+ ;; NOMNL: (func $tee (type $none_=>_i32) (result i32)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -1401,7 +1401,7 @@
;; CHECK-NEXT: (ref.null $struct.recursive)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $tee-set
+ ;; NOMNL: (func $tee-set (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.recursive))
;; NOMNL-NEXT: (local $1 (ref null $struct.recursive))
;; NOMNL-NEXT: (drop
@@ -1443,7 +1443,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $set-value
+ ;; NOMNL: (func $set-value (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.recursive))
;; NOMNL-NEXT: (struct.set $struct.recursive 0
;; NOMNL-NEXT: (ref.null $struct.recursive)
@@ -1497,7 +1497,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $initialize-with-reference
+ ;; NOMNL: (func $initialize-with-reference (type $none_=>_none)
;; NOMNL-NEXT: (local $0 (ref null $struct.recursive))
;; NOMNL-NEXT: (local $1 (ref null $struct.recursive))
;; NOMNL-NEXT: (local $2 (ref null $struct.recursive))
@@ -1563,7 +1563,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
- ;; NOMNL: (func $escape-flow-out (result anyref)
+ ;; NOMNL: (func $escape-flow-out (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (struct.set $struct.A 0
;; NOMNL-NEXT: (local.tee $ref
@@ -1603,7 +1603,7 @@
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $escape-return (result anyref)
+ ;; NOMNL: (func $escape-return (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (struct.set $struct.A 0
;; NOMNL-NEXT: (local.tee $ref
@@ -1660,7 +1660,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $non-nullable (param $a (ref $struct.A))
+ ;; NOMNL: (func $non-nullable (type $ref|$struct.A|_=>_none) (param $a (ref $struct.A))
;; NOMNL-NEXT: (local $1 (ref null $struct.A))
;; NOMNL-NEXT: (local $2 (ref null $struct.A))
;; NOMNL-NEXT: (drop
@@ -1797,7 +1797,7 @@
;; CHECK-NEXT: (br $outer)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $before-loop-use-multi (param $x i32)
+ ;; NOMNL: (func $before-loop-use-multi (type $i32_=>_none) (param $x i32)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $2 i32)
;; NOMNL-NEXT: (local $3 f64)
@@ -2017,7 +2017,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $multi-separate
+ ;; NOMNL: (func $multi-separate (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (local $2 i32)
@@ -2158,7 +2158,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $multi-separate-same-local-index
+ ;; NOMNL: (func $multi-separate-same-local-index (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -2287,7 +2287,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $multi-separate-different-local-index-overlapping-lifetimes
+ ;; NOMNL: (func $multi-separate-different-local-index-overlapping-lifetimes (type $none_=>_none)
;; NOMNL-NEXT: (local $ref1 (ref null $struct.A))
;; NOMNL-NEXT: (local $ref2 (ref null $struct.A))
;; NOMNL-NEXT: (local $2 i32)
@@ -2385,7 +2385,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $get-through-block (result f64)
+ ;; NOMNL: (func $get-through-block (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local.set $0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -2447,7 +2447,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $branch-to-block (result f64)
+ ;; NOMNL: (func $branch-to-block (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local.set $0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -2523,7 +2523,7 @@
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $branch-to-block-no-fallthrough (result f64)
+ ;; NOMNL: (func $branch-to-block-no-fallthrough (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -2608,7 +2608,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $two-branches (result f64)
+ ;; NOMNL: (func $two-branches (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local.set $0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -2690,7 +2690,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $two-branches-b (result f64)
+ ;; NOMNL: (func $two-branches-b (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local.set $0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -2767,7 +2767,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $br_if_flow (result f64)
+ ;; NOMNL: (func $br_if_flow (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local.set $0
;; NOMNL-NEXT: (struct.new_default_with_rtt $struct.A
@@ -2843,7 +2843,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-as-non-null
+ ;; NOMNL: (func $ref-as-non-null (type $none_=>_none)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -2927,7 +2927,7 @@
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-as-non-null-through-local (result i32)
+ ;; NOMNL: (func $ref-as-non-null-through-local (type $none_=>_i32) (result i32)
;; NOMNL-NEXT: (local $ref (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -3016,7 +3016,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
- ;; NOMNL: (func $br_if-allocation (result f64)
+ ;; NOMNL: (func $br_if-allocation (type $none_=>_f64) (result f64)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
@@ -3090,7 +3090,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $simple-no-rtt
+ ;; NOMNL: (func $simple-no-rtt (type $none_=>_none)
;; NOMNL-NEXT: (local $0 i32)
;; NOMNL-NEXT: (local $1 f64)
;; NOMNL-NEXT: (drop
@@ -3137,7 +3137,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $pass-through-loop
+ ;; NOMNL: (func $pass-through-loop (type $none_=>_none)
;; NOMNL-NEXT: (local $0 (ref null $struct.A))
;; NOMNL-NEXT: (local $1 i32)
;; NOMNL-NEXT: (local $2 f64)
diff --git a/test/lit/passes/inlining_all-features.wast b/test/lit/passes/inlining_all-features.wast
index fce3cc460..051201b23 100644
--- a/test/lit/passes/inlining_all-features.wast
+++ b/test/lit/passes/inlining_all-features.wast
@@ -25,7 +25,7 @@
;; CHECK: (func $foo
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo
+ ;; NOMNL: (func $foo (type $none_=>_none)
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $foo)
@@ -38,7 +38,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.func $foo)
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref_func_test (result funcref)
+ ;; NOMNL: (func $ref_func_test (type $none_=>_funcref) (result funcref)
;; NOMNL-NEXT: (block
;; NOMNL-NEXT: (block $__inlined_func$foo
;; NOMNL-NEXT: (nop)
@@ -66,7 +66,7 @@
;; CHECK: (func $0 (result i32)
;; CHECK-NEXT: (i32.const 1337)
;; CHECK-NEXT: )
- ;; NOMNL: (func $0 (result i32)
+ ;; NOMNL: (func $0 (type $none_=>_i32) (result i32)
;; NOMNL-NEXT: (i32.const 1337)
;; NOMNL-NEXT: )
(func $0 (result i32)
@@ -78,7 +78,7 @@
;; CHECK-NEXT: (i32.const 1337)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $1 (result i32)
+ ;; NOMNL: (func $1 (type $none_=>_i32) (result i32)
;; NOMNL-NEXT: (block $__inlined_func$0 (result i32)
;; NOMNL-NEXT: (i32.const 1337)
;; NOMNL-NEXT: )
@@ -102,7 +102,7 @@
;; CHECK: (func $0
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $0
+ ;; NOMNL: (func $0 (type $none_=>_none)
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $0
@@ -114,7 +114,7 @@
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $1
+ ;; NOMNL: (func $1 (type $none_=>_none)
;; NOMNL-NEXT: (block $__inlined_func$0
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
@@ -150,7 +150,7 @@
;; CHECK-NEXT: (br $__inlined_func$0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $1
+ ;; NOMNL: (func $1 (type $none_=>_none)
;; NOMNL-NEXT: (block $__inlined_func$0
;; NOMNL-NEXT: (block
;; NOMNL-NEXT: (call_ref
@@ -191,7 +191,7 @@
;; NOMNL: (elem declare func $1)
- ;; NOMNL: (func $1 (result (ref func))
+ ;; NOMNL: (func $1 (type $none_=>_ref|func|) (result (ref func))
;; NOMNL-NEXT: (local $0 funcref)
;; NOMNL-NEXT: (block $__inlined_func$0 (result (ref func))
;; NOMNL-NEXT: (local.set $0
@@ -225,7 +225,7 @@
;; NOMNL: (type $none_=>_none (func_subtype func))
- ;; NOMNL: (func $0 (param $rtt (rtt $struct))
+ ;; NOMNL: (func $0 (type $rtt_$struct_=>_none) (param $rtt (rtt $struct))
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $0 (param $rtt (rtt $struct))
@@ -235,7 +235,7 @@
;; CHECK-NEXT: (rtt.canon $struct)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $1
+ ;; NOMNL: (func $1 (type $none_=>_none)
;; NOMNL-NEXT: (call $0
;; NOMNL-NEXT: (rtt.canon $struct)
;; NOMNL-NEXT: )
diff --git a/test/lit/passes/instrument-memory-gc.wast b/test/lit/passes/instrument-memory-gc.wast
index bbc55ba77..972096130 100644
--- a/test/lit/passes/instrument-memory-gc.wast
+++ b/test/lit/passes/instrument-memory-gc.wast
@@ -188,7 +188,7 @@
;; NOMNL: (import "env" "array_set_index" (func $array_set_index (param i32 i32) (result i32)))
- ;; NOMNL: (func $structs (param $x (ref $struct))
+ ;; NOMNL: (func $structs (type $ref|$struct|_=>_none) (param $x (ref $struct))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (call $struct_get_val_i32
;; NOMNL-NEXT: (i32.const 0)
@@ -259,7 +259,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $arrays (param $x (ref $array))
+ ;; NOMNL: (func $arrays (type $ref|$array|_=>_none) (param $x (ref $array))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (call $array_get_val_f64
;; NOMNL-NEXT: (i32.const 5)
diff --git a/test/lit/passes/local-subtyping-nn.wast b/test/lit/passes/local-subtyping-nn.wast
index 290fe032d..9b68a6480 100644
--- a/test/lit/passes/local-subtyping-nn.wast
+++ b/test/lit/passes/local-subtyping-nn.wast
@@ -28,7 +28,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $non-nullable
+ ;; NOMNL: (func $non-nullable (type $none_=>_none)
;; NOMNL-NEXT: (local $x (ref $struct))
;; NOMNL-NEXT: (local $y (ref $none_=>_i32))
;; NOMNL-NEXT: (local.set $x
@@ -75,7 +75,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $uses-default (param $i i32)
+ ;; NOMNL: (func $uses-default (type $i32_=>_none) (param $i i32)
;; NOMNL-NEXT: (local $x (ref null $struct))
;; NOMNL-NEXT: (if
;; NOMNL-NEXT: (local.get $i)
diff --git a/test/lit/passes/name-types.wast b/test/lit/passes/name-types.wast
index 12fe549ea..de3bb01e9 100644
--- a/test/lit/passes/name-types.wast
+++ b/test/lit/passes/name-types.wast
@@ -22,7 +22,7 @@
;; CHECK: (func $foo (param $x (ref $type$1)) (param $y (ref $reasonable-name))
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo (param $x (ref $type$1)) (param $y (ref $reasonable-name))
+ ;; NOMNL: (func $foo (type $type$0) (param $x (ref $type$1)) (param $y (ref $reasonable-name))
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $foo
diff --git a/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast b/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast
index 0477abe79..1d362780b 100644
--- a/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast
+++ b/test/lit/passes/optimize-instructions-call_ref-roundtrip.wast
@@ -42,20 +42,20 @@
(elem $elem-3 (table $table-3) (i32.const 0) (ref null $v3)
(ref.func $helper-3))
- ;; CHECK: (func $helper-1
+ ;; CHECK: (func $helper-1 (type $v1)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper-1 (type $v1))
- ;; CHECK: (func $helper-2
+ ;; CHECK: (func $helper-2 (type $v2)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper-2 (type $v2))
- ;; CHECK: (func $helper-3
+ ;; CHECK: (func $helper-3 (type $v3)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper-3 (type $v3))
- ;; CHECK: (func $call-table-get (param $x i32)
+ ;; CHECK: (func $call-table-get (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (call_indirect $table-1 (type $v1)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
diff --git a/test/lit/passes/optimize-instructions-gc-iit.wast b/test/lit/passes/optimize-instructions-gc-iit.wast
index 9923bf89b..37bc6cb69 100644
--- a/test/lit/passes/optimize-instructions-gc-iit.wast
+++ b/test/lit/passes/optimize-instructions-gc-iit.wast
@@ -24,10 +24,10 @@
;; CHECK: (func $foo
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo
+ ;; NOMNL: (func $foo (type $none_=>_none)
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
- ;; NOMNL-TNH: (func $foo
+ ;; NOMNL-TNH: (func $foo (type $none_=>_none)
;; NOMNL-TNH-NEXT: (nop)
;; NOMNL-TNH-NEXT: )
(func $foo)
@@ -68,7 +68,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-iit (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) (param $parent-rtt (rtt $parent)) (param $child-rtt (rtt $child)) (param $other-rtt (rtt $other))
+ ;; NOMNL: (func $ref-cast-iit (type $ref|$parent|_ref|$child|_ref|$other|_rtt_$parent_rtt_$child_rtt_$other_=>_none) (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) (param $parent-rtt (rtt $parent)) (param $child-rtt (rtt $child)) (param $other-rtt (rtt $other))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref $parent))
;; NOMNL-NEXT: (drop
@@ -103,7 +103,7 @@
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
- ;; NOMNL-TNH: (func $ref-cast-iit (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) (param $parent-rtt (rtt $parent)) (param $child-rtt (rtt $child)) (param $other-rtt (rtt $other))
+ ;; NOMNL-TNH: (func $ref-cast-iit (type $ref|$parent|_ref|$child|_ref|$other|_rtt_$parent_rtt_$child_rtt_$other_=>_none) (param $parent (ref $parent)) (param $child (ref $child)) (param $other (ref $other)) (param $parent-rtt (rtt $parent)) (param $child-rtt (rtt $child)) (param $other-rtt (rtt $other))
;; NOMNL-TNH-NEXT: (drop
;; NOMNL-TNH-NEXT: (block (result (ref $parent))
;; NOMNL-TNH-NEXT: (drop
@@ -214,7 +214,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-iit-bad (param $parent (ref $parent)) (param $parent-rtt (rtt $parent))
+ ;; NOMNL: (func $ref-cast-iit-bad (type $ref|$parent|_rtt_$parent_=>_none) (param $parent (ref $parent)) (param $parent-rtt (rtt $parent))
;; NOMNL-NEXT: (local $2 (ref null $parent))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref $parent))
@@ -248,7 +248,7 @@
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
- ;; NOMNL-TNH: (func $ref-cast-iit-bad (param $parent (ref $parent)) (param $parent-rtt (rtt $parent))
+ ;; NOMNL-TNH: (func $ref-cast-iit-bad (type $ref|$parent|_rtt_$parent_=>_none) (param $parent (ref $parent)) (param $parent-rtt (rtt $parent))
;; NOMNL-TNH-NEXT: (local $2 (ref null $parent))
;; NOMNL-TNH-NEXT: (drop
;; NOMNL-TNH-NEXT: (block (result (ref $parent))
@@ -320,12 +320,12 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-eq-ref-cast (param $x eqref)
+ ;; NOMNL: (func $ref-eq-ref-cast (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (i32.const 1)
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
- ;; NOMNL-TNH: (func $ref-eq-ref-cast (param $x eqref)
+ ;; NOMNL-TNH: (func $ref-eq-ref-cast (type $eqref_=>_none) (param $x eqref)
;; NOMNL-TNH-NEXT: (drop
;; NOMNL-TNH-NEXT: (i32.const 1)
;; NOMNL-TNH-NEXT: )
@@ -348,12 +348,12 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $set-of-as-non-null (param $x anyref)
+ ;; NOMNL: (func $set-of-as-non-null (type $anyref_=>_none) (param $x anyref)
;; NOMNL-NEXT: (local.set $x
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: )
;; NOMNL-NEXT: )
- ;; NOMNL-TNH: (func $set-of-as-non-null (param $x anyref)
+ ;; NOMNL-TNH: (func $set-of-as-non-null (type $anyref_=>_none) (param $x anyref)
;; NOMNL-TNH-NEXT: (local.set $x
;; NOMNL-TNH-NEXT: (local.get $x)
;; NOMNL-TNH-NEXT: )
diff --git a/test/lit/passes/optimize-instructions-gc.wast b/test/lit/passes/optimize-instructions-gc.wast
index 47d2a17bc..691d259d3 100644
--- a/test/lit/passes/optimize-instructions-gc.wast
+++ b/test/lit/passes/optimize-instructions-gc.wast
@@ -47,7 +47,7 @@
;; CHECK: (func $if-arms-subtype-fold (result anyref)
;; CHECK-NEXT: (ref.null extern)
;; CHECK-NEXT: )
- ;; NOMNL: (func $if-arms-subtype-fold (result anyref)
+ ;; NOMNL: (func $if-arms-subtype-fold (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (ref.null extern)
;; NOMNL-NEXT: )
(func $if-arms-subtype-fold (result anyref)
@@ -65,7 +65,7 @@
;; CHECK-NEXT: (ref.null func)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $if-arms-subtype-nofold (result anyref)
+ ;; NOMNL: (func $if-arms-subtype-nofold (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (if (result anyref)
;; NOMNL-NEXT: (i32.const 0)
;; NOMNL-NEXT: (ref.null extern)
@@ -95,7 +95,7 @@
;; CHECK-NEXT: (call $get-i32)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $store-trunc (param $x (ref null $struct))
+ ;; NOMNL: (func $store-trunc (type $ref?|$struct|_=>_none) (param $x (ref null $struct))
;; NOMNL-NEXT: (struct.set $struct $i8
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: (i32.const 35)
@@ -135,7 +135,7 @@
;; CHECK-NEXT: (i32.const 35)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $store-trunc2 (param $x (ref null $array))
+ ;; NOMNL: (func $store-trunc2 (type $ref?|$array|_=>_none) (param $x (ref null $array))
;; NOMNL-NEXT: (array.set $array
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: (i32.const 0)
@@ -186,7 +186,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_is (param $struct (ref $struct)) (param $func (ref func)) (param $data dataref) (param $i31 i31ref)
+ ;; NOMNL: (func $unneeded_is (type $ref|$struct|_ref|func|_dataref_i31ref_=>_none) (param $struct (ref $struct)) (param $func (ref func)) (param $data dataref) (param $i31 i31ref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result i32)
;; NOMNL-NEXT: (drop
@@ -269,7 +269,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_is_null (param $struct (ref null $struct)) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
+ ;; NOMNL: (func $unneeded_is_null (type $ref?|$struct|_funcref_ref?|data|_ref?|i31|_=>_none) (param $struct (ref null $struct)) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.is_null
;; NOMNL-NEXT: (local.get $struct)
@@ -374,7 +374,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_is_bad_kinds (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
+ ;; NOMNL: (func $unneeded_is_bad_kinds (type $funcref_ref?|data|_ref?|i31|_=>_none) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result i32)
;; NOMNL-NEXT: (drop
@@ -471,7 +471,7 @@
;; CHECK-NEXT: (local.get $i31)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_as (param $struct (ref $struct)) (param $func (ref func)) (param $data dataref) (param $i31 i31ref)
+ ;; NOMNL: (func $unneeded_as (type $ref|$struct|_ref|func|_dataref_i31ref_=>_none) (param $struct (ref $struct)) (param $func (ref func)) (param $data dataref) (param $i31 i31ref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $struct)
;; NOMNL-NEXT: )
@@ -528,7 +528,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_as_null (param $struct (ref null $struct)) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
+ ;; NOMNL: (func $unneeded_as_null (type $ref?|$struct|_funcref_ref?|data|_ref?|i31|_=>_none) (param $struct (ref null $struct)) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.as_non_null
;; NOMNL-NEXT: (local.get $struct)
@@ -621,7 +621,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_as_bad_kinds (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
+ ;; NOMNL: (func $unneeded_as_bad_kinds (type $funcref_ref?|data|_ref?|i31|_=>_none) (param $func funcref) (param $data (ref null data)) (param $i31 (ref null i31))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref func))
;; NOMNL-NEXT: (drop
@@ -708,7 +708,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $unneeded_unreachability
+ ;; NOMNL: (func $unneeded_unreachability (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.is_func
;; NOMNL-NEXT: (unreachable)
@@ -762,7 +762,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $redundant-non-null-casts (param $x (ref null $struct)) (param $y (ref null $array))
+ ;; NOMNL: (func $redundant-non-null-casts (type $ref?|$struct|_ref?|$array|_=>_none) (param $x (ref null $struct)) (param $y (ref null $array))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.as_non_null
;; NOMNL-NEXT: (local.get $x)
@@ -844,7 +844,7 @@
;; CHECK: (func $get-eqref (result eqref)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $get-eqref (result eqref)
+ ;; NOMNL: (func $get-eqref (type $none_=>_eqref) (result eqref)
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $get-eqref (result eqref)
@@ -873,7 +873,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-eq (param $x eqref) (param $y eqref)
+ ;; NOMNL: (func $ref-eq (type $eqref_eqref_=>_none) (param $x eqref) (param $y eqref)
;; NOMNL-NEXT: (local $lx eqref)
;; NOMNL-NEXT: (local $ly eqref)
;; NOMNL-NEXT: (drop
@@ -945,7 +945,7 @@
;; CHECK: (func $nothing
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
- ;; NOMNL: (func $nothing
+ ;; NOMNL: (func $nothing (type $none_=>_none)
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: )
(func $nothing)
@@ -978,7 +978,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-eq-corner-cases (param $x eqref)
+ ;; NOMNL: (func $ref-eq-corner-cases (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.eq
;; NOMNL-NEXT: (block (result eqref)
@@ -1069,7 +1069,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-eq-ref-cast (param $x eqref)
+ ;; NOMNL: (func $ref-eq-ref-cast (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.eq
;; NOMNL-NEXT: (local.get $x)
@@ -1136,7 +1136,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $flip-cast-of-as-non-null (param $x anyref)
+ ;; NOMNL: (func $flip-cast-of-as-non-null (type $anyref_=>_none) (param $x anyref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.as_non_null
;; NOMNL-NEXT: (ref.cast
@@ -1235,7 +1235,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $flip-tee-of-as-non-null (param $x anyref)
+ ;; NOMNL: (func $flip-tee-of-as-non-null (type $anyref_=>_none) (param $x anyref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.as_non_null
;; NOMNL-NEXT: (local.tee $x
@@ -1264,7 +1264,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $flip-tee-of-as-non-null-non-nullable (param $x (ref any))
+ ;; NOMNL: (func $flip-tee-of-as-non-null-non-nullable (type $ref|any|_=>_none) (param $x (ref any))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.tee $x
;; NOMNL-NEXT: (ref.as_non_null
@@ -1296,7 +1296,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ternary-identical-arms (param $x i32) (param $y (ref null $struct)) (param $z (ref null $struct))
+ ;; NOMNL: (func $ternary-identical-arms (type $i32_ref?|$struct|_ref?|$struct|_=>_none) (param $x i32) (param $y (ref null $struct)) (param $z (ref null $struct))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.is_null
;; NOMNL-NEXT: (if (result (ref null $struct))
@@ -1329,7 +1329,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $select-identical-arms-but-side-effect (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32)
+ ;; NOMNL: (func $select-identical-arms-but-side-effect (type $ref?|$struct|_ref?|$struct|_i32_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (select
;; NOMNL-NEXT: (struct.get_u $struct $i8
@@ -1367,7 +1367,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ternary-identical-arms-no-side-effect (param $x (ref $struct)) (param $y (ref $struct)) (param $z i32)
+ ;; NOMNL: (func $ternary-identical-arms-no-side-effect (type $ref|$struct|_ref|$struct|_i32_=>_none) (param $x (ref $struct)) (param $y (ref $struct)) (param $z i32)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (struct.get_u $struct $i8
;; NOMNL-NEXT: (select (result (ref $struct))
@@ -1403,7 +1403,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $if-identical-arms-with-side-effect (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32)
+ ;; NOMNL: (func $if-identical-arms-with-side-effect (type $ref?|$struct|_ref?|$struct|_i32_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct)) (param $z i32)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (struct.get_u $struct $i8
;; NOMNL-NEXT: (if (result (ref null $struct))
@@ -1438,7 +1438,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-squared (param $x eqref)
+ ;; NOMNL: (func $ref-cast-squared (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (local.get $x)
@@ -1468,7 +1468,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-squared-fallthrough (param $x eqref)
+ ;; NOMNL: (func $ref-cast-squared-fallthrough (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.tee $x
;; NOMNL-NEXT: (ref.cast
@@ -1500,7 +1500,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-cubed (param $x eqref)
+ ;; NOMNL: (func $ref-cast-cubed (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (local.get $x)
@@ -1534,7 +1534,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-squared-different (param $x eqref)
+ ;; NOMNL: (func $ref-cast-squared-different (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (ref.cast
@@ -1568,7 +1568,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-squared-effects (param $x eqref)
+ ;; NOMNL: (func $ref-cast-squared-effects (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (ref.cast
@@ -1596,7 +1596,7 @@
;; CHECK: (func $get-rtt (result (rtt $empty))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $get-rtt (result (rtt $empty))
+ ;; NOMNL: (func $get-rtt (type $none_=>_rtt_$empty) (result (rtt $empty))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $get-rtt (result (rtt $empty))
@@ -1618,7 +1618,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-eq-null (param $x eqref)
+ ;; NOMNL: (func $ref-eq-null (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.is_null
;; NOMNL-NEXT: (local.get $x)
@@ -1670,7 +1670,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $hoist-LUB-danger (param $x i32) (result i32)
+ ;; NOMNL: (func $hoist-LUB-danger (type $i32_=>_i32) (param $x i32) (result i32)
;; NOMNL-NEXT: (if (result i32)
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: (struct.get $B 1
@@ -1714,7 +1714,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $incompatible-cast-of-non-null (param $struct (ref $struct))
+ ;; NOMNL: (func $incompatible-cast-of-non-null (type $ref|$struct|_=>_none) (param $struct (ref $struct))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref $array))
;; NOMNL-NEXT: (drop
@@ -1764,7 +1764,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $incompatible-cast-of-null
+ ;; NOMNL: (func $incompatible-cast-of-null (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref null $array))
;; NOMNL-NEXT: (drop
@@ -1820,7 +1820,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $incompatible-cast-of-unknown (param $struct (ref null $struct))
+ ;; NOMNL: (func $incompatible-cast-of-unknown (type $ref?|$struct|_=>_none) (param $struct (ref null $struct))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (local.get $struct)
@@ -1850,7 +1850,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $incompatible-test (param $struct (ref null $struct))
+ ;; NOMNL: (func $incompatible-test (type $ref?|$struct|_=>_none) (param $struct (ref null $struct))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result i32)
;; NOMNL-NEXT: (drop
@@ -1887,7 +1887,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $subtype-compatible (param $A (ref null $A)) (param $B (ref null $B))
+ ;; NOMNL: (func $subtype-compatible (type $ref?|$A|_ref?|$B|_=>_none) (param $A (ref null $A)) (param $B (ref null $B))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test
;; NOMNL-NEXT: (local.get $A)
@@ -1925,7 +1925,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref.test-unreachable (param $A (ref null $A))
+ ;; NOMNL: (func $ref.test-unreachable (type $ref?|$A|_=>_none) (param $A (ref null $A))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test
;; NOMNL-NEXT: (unreachable)
@@ -1957,7 +1957,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $consecutive-opts-with-unreachable (param $func funcref)
+ ;; NOMNL: (func $consecutive-opts-with-unreachable (type $funcref_=>_none) (param $func funcref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (block (result dataref)
@@ -2027,7 +2027,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-null
+ ;; NOMNL: (func $ref-cast-static-null (type $none_=>_none)
;; NOMNL-NEXT: (local $a (ref null $A))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref null $A))
@@ -2102,7 +2102,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-impossible (param $func (ref func))
+ ;; NOMNL: (func $ref-cast-static-impossible (type $ref|func|_=>_none) (param $func (ref func))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result (ref $struct))
;; NOMNL-NEXT: (drop
@@ -2139,7 +2139,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-general (param $a (ref null $A)) (param $b (ref null $B))
+ ;; NOMNL: (func $ref-cast-static-general (type $ref?|$A|_ref?|$B|_=>_none) (param $a (ref null $A)) (param $b (ref null $B))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (local.get $a)
;; NOMNL-NEXT: )
@@ -2203,7 +2203,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-squared (param $x eqref)
+ ;; NOMNL: (func $ref-cast-static-squared (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast_static $A
;; NOMNL-NEXT: (local.get $x)
@@ -2278,7 +2278,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-many (param $x eqref)
+ ;; NOMNL: (func $ref-cast-static-many (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast_static $B-child
;; NOMNL-NEXT: (local.get $x)
@@ -2376,7 +2376,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-very-many (param $x eqref)
+ ;; NOMNL: (func $ref-cast-static-very-many (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast_static $B-child
;; NOMNL-NEXT: (local.get $x)
@@ -2431,7 +2431,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-cast-static-squared-impossible (param $x eqref)
+ ;; NOMNL: (func $ref-cast-static-squared-impossible (type $eqref_=>_none) (param $x eqref)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast_static $struct
;; NOMNL-NEXT: (ref.cast_static $array
@@ -2481,7 +2481,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-test-static-same-type (param $nullable (ref null $A)) (param $non-nullable (ref $A))
+ ;; NOMNL: (func $ref-test-static-same-type (type $ref?|$A|_ref|$A|_=>_none) (param $nullable (ref null $A)) (param $non-nullable (ref $A))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test_static $A
;; NOMNL-NEXT: (local.get $nullable)
@@ -2527,7 +2527,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-test-static-subtype (param $nullable (ref null $B)) (param $non-nullable (ref $B))
+ ;; NOMNL: (func $ref-test-static-subtype (type $ref?|$B|_ref|$B|_=>_none) (param $nullable (ref null $B)) (param $non-nullable (ref $B))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test_static $A
;; NOMNL-NEXT: (local.get $nullable)
@@ -2568,7 +2568,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-test-static-supertype (param $nullable (ref null $A)) (param $non-nullable (ref $A))
+ ;; NOMNL: (func $ref-test-static-supertype (type $ref?|$A|_ref|$A|_=>_none) (param $nullable (ref null $A)) (param $non-nullable (ref $A))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.test_static $B
;; NOMNL-NEXT: (local.get $nullable)
@@ -2613,7 +2613,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-test-static-impossible (param $nullable (ref null $array)) (param $non-nullable (ref $array))
+ ;; NOMNL: (func $ref-test-static-impossible (type $ref?|$array|_ref|$array|_=>_none) (param $nullable (ref null $array)) (param $non-nullable (ref $array))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block (result i32)
;; NOMNL-NEXT: (drop
diff --git a/test/lit/passes/precompute-gc-immutable.wast b/test/lit/passes/precompute-gc-immutable.wast
index ef867fdf9..0fd4e822d 100644
--- a/test/lit/passes/precompute-gc-immutable.wast
+++ b/test/lit/passes/precompute-gc-immutable.wast
@@ -9,7 +9,7 @@
;; CHECK: (type $struct-mut (struct_subtype (field (mut i32)) data))
(type $struct-mut (struct_subtype (mut i32) data))
- ;; CHECK: (func $propagate
+ ;; CHECK: (func $propagate (type $none_=>_none)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (local $ref-mut (ref null $struct-mut))
;; CHECK-NEXT: (local.set $ref-imm
@@ -59,7 +59,7 @@
)
)
- ;; CHECK: (func $non-constant (param $param i32)
+ ;; CHECK: (func $non-constant (type $i32_=>_none) (param $param i32)
;; CHECK-NEXT: (local $ref (ref null $struct-imm))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $struct-imm
@@ -87,7 +87,7 @@
)
)
- ;; CHECK: (func $unreachable
+ ;; CHECK: (func $unreachable (type $none_=>_none)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (local.tee $ref-imm
;; CHECK-NEXT: (block ;; (replaces something unreachable we can't emit)
@@ -117,7 +117,7 @@
)
)
- ;; CHECK: (func $param (param $ref-imm (ref null $struct-imm))
+ ;; CHECK: (func $param (type $ref?|$struct-imm|_=>_none) (param $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (call $helper
;; CHECK-NEXT: (struct.get $struct-imm 0
;; CHECK-NEXT: (local.get $ref-imm)
@@ -133,7 +133,7 @@
)
)
- ;; CHECK: (func $local-null
+ ;; CHECK: (func $local-null (type $none_=>_none)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (call $helper
;; CHECK-NEXT: (struct.get $struct-imm 0
@@ -152,7 +152,7 @@
)
)
- ;; CHECK: (func $local-unknown (param $x i32)
+ ;; CHECK: (func $local-unknown (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (if
;; CHECK-NEXT: (local.get $x)
@@ -197,7 +197,7 @@
)
)
- ;; CHECK: (func $local-unknown-ref-same-value (param $x i32)
+ ;; CHECK: (func $local-unknown-ref-same-value (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (if
;; CHECK-NEXT: (local.get $x)
@@ -244,7 +244,7 @@
)
)
- ;; CHECK: (func $propagate-multi-refs (param $x i32)
+ ;; CHECK: (func $propagate-multi-refs (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (if
;; CHECK-NEXT: (local.get $x)
@@ -303,7 +303,7 @@
)
)
- ;; CHECK: (func $propagate-multi-values (param $x i32)
+ ;; CHECK: (func $propagate-multi-values (type $i32_=>_none) (param $x i32)
;; CHECK-NEXT: (local $ref-imm (ref null $struct-imm))
;; CHECK-NEXT: (local.set $ref-imm
;; CHECK-NEXT: (struct.new $struct-imm
@@ -345,7 +345,7 @@
)
)
- ;; CHECK: (func $helper (param $0 i32)
+ ;; CHECK: (func $helper (type $i32_=>_none) (param $0 i32)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param i32))
@@ -357,7 +357,7 @@
;; CHECK: (type $struct (struct_subtype (field (mut i32)) (field i32) data))
(type $struct (struct_subtype (mut i32) i32 data))
- ;; CHECK: (func $propagate
+ ;; CHECK: (func $propagate (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $struct))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $struct
@@ -396,7 +396,7 @@
)
)
- ;; CHECK: (func $helper (param $0 i32)
+ ;; CHECK: (func $helper (type $i32_=>_none) (param $0 i32)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param i32))
@@ -412,7 +412,7 @@
(type $vtable (struct_subtype funcref data))
(type $object (struct_subtype (ref $vtable) data))
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -445,7 +445,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -460,7 +460,7 @@
(type $vtable (struct_subtype (mut funcref) data))
(type $object (struct_subtype (ref $vtable) data))
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -497,7 +497,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -513,7 +513,7 @@
(type $vtable (struct_subtype funcref data))
(type $object (struct_subtype (mut (ref $vtable)) data))
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -548,7 +548,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -572,7 +572,7 @@
)
)
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -599,7 +599,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -623,7 +623,7 @@
)
)
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -654,7 +654,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -679,7 +679,7 @@
)
)
- ;; CHECK: (func $nested-creations (param $param i32)
+ ;; CHECK: (func $nested-creations (type $i32_=>_none) (param $param i32)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -725,7 +725,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
@@ -767,7 +767,7 @@
)
)
- ;; CHECK: (func $nested-creations
+ ;; CHECK: (func $nested-creations (type $none_=>_none)
;; CHECK-NEXT: (local $ref (ref null $object))
;; CHECK-NEXT: (local.set $ref
;; CHECK-NEXT: (struct.new $object
@@ -815,7 +815,7 @@
)
)
- ;; CHECK: (func $helper (param $0 funcref)
+ ;; CHECK: (func $helper (type $funcref_=>_none) (param $0 funcref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
(func $helper (param funcref))
diff --git a/test/lit/passes/precompute-gc.wast b/test/lit/passes/precompute-gc.wast
index 9b12202b1..14347bd3c 100644
--- a/test/lit/passes/precompute-gc.wast
+++ b/test/lit/passes/precompute-gc.wast
@@ -39,7 +39,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
- ;; NOMNL: (func $test-fallthrough (result i32)
+ ;; NOMNL: (func $test-fallthrough (type $func-return-i32) (result i32)
;; NOMNL-NEXT: (local $x funcref)
;; NOMNL-NEXT: (local.set $x
;; NOMNL-NEXT: (block (result funcref)
@@ -105,7 +105,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $load-from-struct
+ ;; NOMNL: (func $load-from-struct (type $none_=>_none)
;; NOMNL-NEXT: (local $x (ref null $struct))
;; NOMNL-NEXT: (local.set $x
;; NOMNL-NEXT: (struct.new_with_rtt $struct
@@ -194,7 +194,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $load-from-struct-bad-merge (param $i i32)
+ ;; NOMNL: (func $load-from-struct-bad-merge (type $i32_=>_none) (param $i i32)
;; NOMNL-NEXT: (local $x (ref null $struct))
;; NOMNL-NEXT: (if
;; NOMNL-NEXT: (local.get $i)
@@ -250,7 +250,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $modify-gc-heap (param $x (ref null $struct))
+ ;; NOMNL: (func $modify-gc-heap (type $ref?|$struct|_=>_none) (param $x (ref null $struct))
;; NOMNL-NEXT: (struct.set $struct 0
;; NOMNL-NEXT: (local.get $x)
;; NOMNL-NEXT: (i32.add
@@ -291,7 +291,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $load-from-struct-bad-escape
+ ;; NOMNL: (func $load-from-struct-bad-escape (type $none_=>_none)
;; NOMNL-NEXT: (local $x (ref null $struct))
;; NOMNL-NEXT: (local.set $x
;; NOMNL-NEXT: (struct.new_with_rtt $struct
@@ -330,7 +330,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $load-from-struct-bad-arrive (param $x (ref null $struct))
+ ;; NOMNL: (func $load-from-struct-bad-arrive (type $ref?|$struct|_=>_none) (param $x (ref null $struct))
;; NOMNL-NEXT: (call $log
;; NOMNL-NEXT: (struct.get $struct 0
;; NOMNL-NEXT: (local.get $x)
@@ -368,7 +368,7 @@
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref-comparisons (param $x (ref null $struct)) (param $y (ref null $struct))
+ ;; NOMNL: (func $ref-comparisons (type $ref?|$struct|_ref?|$struct|_=>_none) (param $x (ref null $struct)) (param $y (ref null $struct))
;; NOMNL-NEXT: (local $z (ref null $struct))
;; NOMNL-NEXT: (local $w (ref null $struct))
;; NOMNL-NEXT: (call $log
@@ -444,7 +444,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
- ;; NOMNL: (func $new-ref-comparisons (result i32)
+ ;; NOMNL: (func $new-ref-comparisons (type $func-return-i32) (result i32)
;; NOMNL-NEXT: (local $x (ref null $struct))
;; NOMNL-NEXT: (local $y (ref null $struct))
;; NOMNL-NEXT: (local $tempresult i32)
@@ -501,7 +501,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-equal (result i32)
+ ;; NOMNL: (func $propagate-equal (type $func-return-i32) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local.set $tempresult
@@ -543,7 +543,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-unequal (result i32)
+ ;; NOMNL: (func $propagate-unequal (type $func-return-i32) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local.set $tempresult
@@ -585,7 +585,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $tempresult)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-uncertain-param (param $input (ref $empty)) (result i32)
+ ;; NOMNL: (func $propagate-uncertain-param (type $ref|$empty|_=>_i32) (param $input (ref $empty)) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local.set $tempresult
@@ -624,7 +624,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $tempresult)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-different-params (param $input1 (ref $empty)) (param $input2 (ref $empty)) (result i32)
+ ;; NOMNL: (func $propagate-different-params (type $ref|$empty|_ref|$empty|_=>_i32) (param $input1 (ref $empty)) (param $input2 (ref $empty)) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local.set $tempresult
;; NOMNL-NEXT: (ref.eq
@@ -656,7 +656,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $tempresult)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-same-param (param $input (ref $empty)) (result i32)
+ ;; NOMNL: (func $propagate-same-param (type $ref|$empty|_=>_i32) (param $input (ref $empty)) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local.set $tempresult
;; NOMNL-NEXT: (ref.eq
@@ -709,7 +709,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $tempresult)
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-uncertain-local (result i32)
+ ;; NOMNL: (func $propagate-uncertain-local (type $func-return-i32) (result i32)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local $stashedref (ref null $empty))
@@ -803,7 +803,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-uncertain-loop
+ ;; NOMNL: (func $propagate-uncertain-loop (type $none_=>_none)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local $stashedref (ref null $empty))
@@ -891,7 +891,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-certain-loop
+ ;; NOMNL: (func $propagate-certain-loop (type $none_=>_none)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local $stashedref (ref null $empty))
@@ -966,7 +966,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-certain-loop-2
+ ;; NOMNL: (func $propagate-certain-loop-2 (type $none_=>_none)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local $stashedref (ref null $empty))
@@ -1049,7 +1049,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $propagate-possibly-certain-loop
+ ;; NOMNL: (func $propagate-possibly-certain-loop (type $none_=>_none)
;; NOMNL-NEXT: (local $tempresult i32)
;; NOMNL-NEXT: (local $tempref (ref null $empty))
;; NOMNL-NEXT: (local $stashedref (ref null $empty))
@@ -1119,7 +1119,7 @@
;; CHECK: (func $helper (param $0 i32) (result i32)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $helper (param $0 i32) (result i32)
+ ;; NOMNL: (func $helper (type $i32_=>_i32) (param $0 i32) (result i32)
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $helper (param i32) (result i32)
@@ -1137,7 +1137,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $odd-cast-and-get
+ ;; NOMNL: (func $odd-cast-and-get (type $none_=>_none)
;; NOMNL-NEXT: (local $temp (ref null $B))
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (ref.null $B)
@@ -1183,7 +1183,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $odd-cast-and-get-tuple
+ ;; NOMNL: (func $odd-cast-and-get-tuple (type $none_=>_none)
;; NOMNL-NEXT: (local $temp ((ref null $B) i32))
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (tuple.make
@@ -1221,7 +1221,7 @@
;; CHECK: (func $receive-f64 (param $0 f64)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $receive-f64 (param $0 f64)
+ ;; NOMNL: (func $receive-f64 (type $f64_=>_none) (param $0 f64)
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $receive-f64 (param f64)
@@ -1241,7 +1241,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $odd-cast-and-get-non-null (param $temp (ref $func-return-i32))
+ ;; NOMNL: (func $odd-cast-and-get-non-null (type $ref|$func-return-i32|_=>_none) (param $temp (ref $func-return-i32))
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (ref.func $receive-f64)
@@ -1283,7 +1283,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $cast-breaking-rtt
+ ;; NOMNL: (func $cast-breaking-rtt (type $none_=>_none)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (ref.cast
;; NOMNL-NEXT: (ref.cast
@@ -1309,7 +1309,7 @@
;; CHECK: (func $unreachable-rtt (result (rtt $struct))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $unreachable-rtt (result (rtt $struct))
+ ;; NOMNL: (func $unreachable-rtt (type $none_=>_rtt_$struct) (result (rtt $struct))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $unreachable-rtt (result (rtt $struct))
@@ -1328,7 +1328,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $new_block_unreachable (result anyref)
+ ;; NOMNL: (func $new_block_unreachable (type $none_=>_anyref) (result anyref)
;; NOMNL-NEXT: (block ;; (replaces something unreachable we can't emit)
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (block
@@ -1365,7 +1365,7 @@
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $br_on_cast-on-creation-rtt (result (ref $empty))
+ ;; NOMNL: (func $br_on_cast-on-creation-rtt (type $none_=>_ref|$empty|) (result (ref $empty))
;; NOMNL-NEXT: (block $label (result (ref $empty))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (br_on_cast $label
@@ -1405,7 +1405,7 @@
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $br_on_cast-on-creation-nortt (result (ref $empty))
+ ;; NOMNL: (func $br_on_cast-on-creation-nortt (type $none_=>_ref|$empty|) (result (ref $empty))
;; NOMNL-NEXT: (block $label (result (ref $empty))
;; NOMNL-NEXT: (drop
;; NOMNL-NEXT: (br_on_cast_static $label $empty
@@ -1459,7 +1459,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $ref.is_null (param $param i32)
+ ;; NOMNL: (func $ref.is_null (type $i32_=>_none) (param $param i32)
;; NOMNL-NEXT: (local $ref (ref null $empty))
;; NOMNL-NEXT: (local.set $ref
;; NOMNL-NEXT: (struct.new_default $empty)
diff --git a/test/lit/passes/roundtrip-gc.wast b/test/lit/passes/roundtrip-gc.wast
index 9b73f1181..2fb5d57b2 100644
--- a/test/lit/passes/roundtrip-gc.wast
+++ b/test/lit/passes/roundtrip-gc.wast
@@ -1,10 +1,11 @@
;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
;; RUN: wasm-opt %s -all --generate-stack-ir --optimize-stack-ir --roundtrip -S -o - | filecheck %s
-;; RUN: wasm-opt %s -all --generate-stack-ir --optimize-stack-ir --roundtrip --nominal -S -o - | filecheck %s
+;; RUN: wasm-opt %s -all --generate-stack-ir --optimize-stack-ir --roundtrip --nominal -S -o - | filecheck %s --check-prefix NOMNL
(module
(type ${i32} (struct (field i32)))
;; CHECK: (export "export" (func $test))
+ ;; NOMNL: (export "export" (func $test))
(export "export" (func $test))
;; CHECK: (func $test
;; CHECK-NEXT: (call $help
@@ -15,6 +16,15 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
+ ;; NOMNL: (func $test (type $none_=>_none)
+ ;; NOMNL-NEXT: (call $help
+ ;; NOMNL-NEXT: (rtt.canon $\7bi32\7d)
+ ;; NOMNL-NEXT: (block $label$1 (result i32)
+ ;; NOMNL-NEXT: (nop)
+ ;; NOMNL-NEXT: (i32.const 1)
+ ;; NOMNL-NEXT: )
+ ;; NOMNL-NEXT: )
+ ;; NOMNL-NEXT: )
(func $test
(call $help
(rtt.canon ${i32})
@@ -32,6 +42,9 @@
;; CHECK: (func $help (param $3 (rtt $\7bi32\7d)) (param $4 i32)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: )
+ ;; NOMNL: (func $help (type $rtt_$\7bi32\7d_i32_=>_none) (param $3 (rtt $\7bi32\7d)) (param $4 i32)
+ ;; NOMNL-NEXT: (nop)
+ ;; NOMNL-NEXT: )
(func $help (param $3 (rtt ${i32})) (param $4 i32)
(nop)
)
diff --git a/test/lit/passes/simplify-locals-gc.wast b/test/lit/passes/simplify-locals-gc.wast
index 380bcc16b..33e4d1bd5 100644
--- a/test/lit/passes/simplify-locals-gc.wast
+++ b/test/lit/passes/simplify-locals-gc.wast
@@ -27,7 +27,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $temp)
;; CHECK-NEXT: )
- ;; NOMNL: (func $no-reorder-past-write (param $x (ref $struct)) (result i32)
+ ;; NOMNL: (func $no-reorder-past-write (type $ref|$struct|_=>_i32) (param $x (ref $struct)) (result i32)
;; NOMNL-NEXT: (local $temp i32)
;; NOMNL-NEXT: (local.set $temp
;; NOMNL-NEXT: (struct.get $struct 0
@@ -65,7 +65,7 @@
;; CHECK-NEXT: (local.get $y)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $reorder-past-write-if-immutable (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32)
+ ;; NOMNL: (func $reorder-past-write-if-immutable (type $ref|$struct|_ref|$struct-immutable|_=>_i32) (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32)
;; NOMNL-NEXT: (local $temp i32)
;; NOMNL-NEXT: (nop)
;; NOMNL-NEXT: (struct.set $struct 0
@@ -105,7 +105,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.get $temp)
;; CHECK-NEXT: )
- ;; NOMNL: (func $unreachable-struct.get (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32)
+ ;; NOMNL: (func $unreachable-struct.get (type $ref|$struct|_ref|$struct-immutable|_=>_i32) (param $x (ref $struct)) (param $y (ref $struct-immutable)) (result i32)
;; NOMNL-NEXT: (local $temp i32)
;; NOMNL-NEXT: (local.tee $temp
;; NOMNL-NEXT: (block ;; (replaces something unreachable we can't emit)
@@ -160,7 +160,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $no-block-values-if-br_on
+ ;; NOMNL: (func $no-block-values-if-br_on (type $none_=>_none)
;; NOMNL-NEXT: (local $temp anyref)
;; NOMNL-NEXT: (block $block
;; NOMNL-NEXT: (drop
diff --git a/test/lit/tail-call.wast b/test/lit/tail-call.wast
index c5e863ff9..6948bd001 100644
--- a/test/lit/tail-call.wast
+++ b/test/lit/tail-call.wast
@@ -22,7 +22,7 @@
;; CHECK: (func $foo
;; CHECK-NEXT: (return_call $bar)
;; CHECK-NEXT: )
- ;; NOMNL: (func $foo
+ ;; NOMNL: (func $foo (type $void)
;; NOMNL-NEXT: (return_call $bar)
;; NOMNL-NEXT: )
(func $foo
@@ -34,7 +34,7 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $bar
+ ;; NOMNL: (func $bar (type $void)
;; NOMNL-NEXT: (return_call_indirect $t (type $void)
;; NOMNL-NEXT: (i32.const 0)
;; NOMNL-NEXT: )
@@ -73,7 +73,7 @@
;; CHECK: (func $caller (result (ref null $A))
;; CHECK-NEXT: (return_call $callee)
;; CHECK-NEXT: )
- ;; NOMNL: (func $caller (result (ref null $A))
+ ;; NOMNL: (func $caller (type $return-A) (result (ref null $A))
;; NOMNL-NEXT: (return_call $callee)
;; NOMNL-NEXT: )
(func $caller (type $return-A)
@@ -85,7 +85,7 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
- ;; NOMNL: (func $caller-indirect (result (ref $B))
+ ;; NOMNL: (func $caller-indirect (type $return-B) (result (ref $B))
;; NOMNL-NEXT: (return_call_indirect $t (type $return-B)
;; NOMNL-NEXT: (i32.const 0)
;; NOMNL-NEXT: )
@@ -97,7 +97,7 @@
;; CHECK: (func $callee (result (ref $B))
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
- ;; NOMNL: (func $callee (result (ref $B))
+ ;; NOMNL: (func $callee (type $return-B) (result (ref $B))
;; NOMNL-NEXT: (unreachable)
;; NOMNL-NEXT: )
(func $callee (type $return-B)