summaryrefslogtreecommitdiff
path: root/test/lit
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit')
-rw-r--r--test/lit/binary/legacy-static-casts.test41
-rw-r--r--test/lit/binary/legacy-static-casts.test.wasmbin0 -> 66 bytes
-rw-r--r--test/lit/cast-to-basic.wast12
-rw-r--r--test/lit/legacy-static-casts.wast32
-rw-r--r--test/lit/passes/abstract-type-refining.wast12
-rw-r--r--test/lit/passes/dce_all-features.wast2
-rw-r--r--test/lit/passes/gufa-refs.wast12
-rw-r--r--test/lit/passes/precompute-gc.wast4
-rw-r--r--test/lit/passes/remove-unused-brs-gc.wast34
-rw-r--r--test/lit/passes/type-merging-tnh.wast4
-rw-r--r--test/lit/passes/type-merging.wast4
11 files changed, 113 insertions, 44 deletions
diff --git a/test/lit/binary/legacy-static-casts.test b/test/lit/binary/legacy-static-casts.test
new file mode 100644
index 000000000..49ed204a7
--- /dev/null
+++ b/test/lit/binary/legacy-static-casts.test
@@ -0,0 +1,41 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+
+;; Test that the opcodes for the deprecated *_static cast instructions still parse.
+
+;; RUN: wasm-opt %s.wasm -all -S -o - | filecheck %s
+
+;; CHECK: (type ${} (struct ))
+
+;; CHECK: (type $none_=>_none (func))
+
+;; CHECK: (func $0 (type $none_=>_none)
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (ref.test ${}
+;; CHECK-NEXT: (ref.null none)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (ref.cast null none
+;; CHECK-NEXT: (ref.null none)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (ref.cast_nop none
+;; CHECK-NEXT: (ref.null none)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (block $label$1 (result (ref null ${}))
+;; CHECK-NEXT: (br_on_cast $label$1 ${}
+;; CHECK-NEXT: (ref.null none)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: (drop
+;; CHECK-NEXT: (block $label$2 (result (ref null ${}))
+;; CHECK-NEXT: (br_on_cast_fail $label$2 ${}
+;; CHECK-NEXT: (ref.null none)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
diff --git a/test/lit/binary/legacy-static-casts.test.wasm b/test/lit/binary/legacy-static-casts.test.wasm
new file mode 100644
index 000000000..aef179b2a
--- /dev/null
+++ b/test/lit/binary/legacy-static-casts.test.wasm
Binary files differ
diff --git a/test/lit/cast-to-basic.wast b/test/lit/cast-to-basic.wast
index e66e3cd38..aa58e1f8e 100644
--- a/test/lit/cast-to-basic.wast
+++ b/test/lit/cast-to-basic.wast
@@ -35,7 +35,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $label$1 (result structref)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $label$1 nullref (ref struct)
+ ;; CHECK-NEXT: (br_on_cast $label$1 struct
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -47,7 +47,7 @@
(drop
(block $l (result structref)
(drop
- (br_on_cast $l nullref (ref struct)
+ (br_on_cast $l struct
(ref.null none)
)
)
@@ -60,7 +60,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $label$1 (result structref)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $label$1 nullref structref
+ ;; CHECK-NEXT: (br_on_cast $label$1 null struct
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -72,7 +72,7 @@
(drop
(block $l (result structref)
(drop
- (br_on_cast $l nullref structref
+ (br_on_cast $l null struct
(ref.null none)
)
)
@@ -85,7 +85,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $label$1 (result structref)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast_fail $label$1 nullref structref
+ ;; CHECK-NEXT: (br_on_cast_fail $label$1 null struct
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -97,7 +97,7 @@
(drop
(block $l (result structref)
(drop
- (br_on_cast_fail $l nullref structref
+ (br_on_cast_fail $l null struct
(ref.null none)
)
)
diff --git a/test/lit/legacy-static-casts.wast b/test/lit/legacy-static-casts.wast
index 893fb0a33..dfef240d3 100644
--- a/test/lit/legacy-static-casts.wast
+++ b/test/lit/legacy-static-casts.wast
@@ -5,11 +5,11 @@
;; RUN: wasm-opt %s -all -S -o - | filecheck %s
(module
- ;; CHECK: (type $none_=>_none (func))
-
;; CHECK: (type $struct (struct ))
(type $struct (struct))
+ ;; CHECK: (type $none_=>_none (func))
+
;; CHECK: (func $test (type $none_=>_none)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (ref.test $struct
@@ -26,6 +26,20 @@
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $l1 (result (ref null $struct))
+ ;; CHECK-NEXT: (br_on_cast $l1 $struct
+ ;; CHECK-NEXT: (ref.null none)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $l2 (result (ref null $struct))
+ ;; CHECK-NEXT: (br_on_cast_fail $l2 $struct
+ ;; CHECK-NEXT: (ref.null none)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $test
(drop
@@ -43,5 +57,19 @@
(ref.null none)
)
)
+ (drop
+ (block $l1 (result (ref null $struct))
+ (br_on_cast_static $l1 $struct
+ (ref.null none)
+ )
+ )
+ )
+ (drop
+ (block $l2 (result (ref null $struct))
+ (br_on_cast_static_fail $l2 $struct
+ (ref.null none)
+ )
+ )
+ )
)
)
diff --git a/test/lit/passes/abstract-type-refining.wast b/test/lit/passes/abstract-type-refining.wast
index 8310d28d1..5fffa7972 100644
--- a/test/lit/passes/abstract-type-refining.wast
+++ b/test/lit/passes/abstract-type-refining.wast
@@ -178,7 +178,7 @@
;; YESTNH-NEXT: (drop
;; YESTNH-NEXT: (block $block (result (ref $B))
;; YESTNH-NEXT: (drop
- ;; YESTNH-NEXT: (br_on_cast $block anyref (ref $B)
+ ;; YESTNH-NEXT: (br_on_cast $block $B
;; YESTNH-NEXT: (local.get $x)
;; YESTNH-NEXT: )
;; YESTNH-NEXT: )
@@ -190,7 +190,7 @@
;; NO_TNH-NEXT: (drop
;; NO_TNH-NEXT: (block $block (result anyref)
;; NO_TNH-NEXT: (drop
- ;; NO_TNH-NEXT: (br_on_cast $block anyref (ref $A)
+ ;; NO_TNH-NEXT: (br_on_cast $block $A
;; NO_TNH-NEXT: (local.get $x)
;; NO_TNH-NEXT: )
;; NO_TNH-NEXT: )
@@ -202,7 +202,7 @@
(drop
(block $block (result anyref)
(drop
- (br_on_cast $block anyref (ref $A)
+ (br_on_cast $block $A
(local.get $x)
)
)
@@ -750,7 +750,7 @@
;; YESTNH-NEXT: (drop
;; YESTNH-NEXT: (block $block (result (ref none))
;; YESTNH-NEXT: (drop
- ;; YESTNH-NEXT: (br_on_cast $block anyref (ref none)
+ ;; YESTNH-NEXT: (br_on_cast $block none
;; YESTNH-NEXT: (local.get $x)
;; YESTNH-NEXT: )
;; YESTNH-NEXT: )
@@ -770,7 +770,7 @@
;; NO_TNH-NEXT: (drop
;; NO_TNH-NEXT: (block $block (result (ref none))
;; NO_TNH-NEXT: (drop
- ;; NO_TNH-NEXT: (br_on_cast $block anyref (ref none)
+ ;; NO_TNH-NEXT: (br_on_cast $block none
;; NO_TNH-NEXT: (local.get $x)
;; NO_TNH-NEXT: )
;; NO_TNH-NEXT: )
@@ -791,7 +791,7 @@
(drop
(block $block (result anyref)
(drop
- (br_on_cast $block anyref (ref $B)
+ (br_on_cast $block $B
(local.get $x)
)
)
diff --git a/test/lit/passes/dce_all-features.wast b/test/lit/passes/dce_all-features.wast
index 47838dbd6..adddfd3cc 100644
--- a/test/lit/passes/dce_all-features.wast
+++ b/test/lit/passes/dce_all-features.wast
@@ -1421,7 +1421,7 @@
(func $br_on_cast_fail (result (ref any))
(block $label$1 (result (ref none))
;; Similar to the above, but using br_on_cast_fail.
- (br_on_cast_fail $label$1 anyref structref
+ (br_on_cast_fail $label$1 null struct
(unreachable)
)
(unreachable)
diff --git a/test/lit/passes/gufa-refs.wast b/test/lit/passes/gufa-refs.wast
index 6fb372d72..06998072b 100644
--- a/test/lit/passes/gufa-refs.wast
+++ b/test/lit/passes/gufa-refs.wast
@@ -988,7 +988,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $parent (result (ref $parent))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $parent (ref $unrelated) (ref $parent)
+ ;; CHECK-NEXT: (br_on_cast $parent $parent
;; CHECK-NEXT: (struct.new_default $unrelated)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1051,7 +1051,7 @@
(struct.get $parent 0
(block $parent (result (ref $parent))
(drop
- (br_on_cast $parent anyref (ref $parent)
+ (br_on_cast $parent $parent
(struct.new $unrelated)
)
)
@@ -5344,7 +5344,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $B (result (ref $B))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $B (ref $A) (ref $B)
+ ;; CHECK-NEXT: (br_on_cast $B $B
;; CHECK-NEXT: (struct.new $A
;; CHECK-NEXT: (i32.const 100)
;; CHECK-NEXT: )
@@ -5361,7 +5361,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block $A (result (ref $A))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $A (ref $A) (ref $A)
+ ;; CHECK-NEXT: (br_on_cast $A $A
;; CHECK-NEXT: (struct.new $A
;; CHECK-NEXT: (i32.const 200)
;; CHECK-NEXT: )
@@ -5387,7 +5387,7 @@
(drop
(block $B (result (ref $B))
(drop
- (br_on_cast $B anyref (ref $B)
+ (br_on_cast $B $B
(struct.new $A
(i32.const 100)
)
@@ -5402,7 +5402,7 @@
(ref.test $A
(block $A (result (ref $A))
(drop
- (br_on_cast $A anyref (ref $A)
+ (br_on_cast $A $A
(struct.new $A
(i32.const 200)
)
diff --git a/test/lit/passes/precompute-gc.wast b/test/lit/passes/precompute-gc.wast
index 369bd685c..20d6230be 100644
--- a/test/lit/passes/precompute-gc.wast
+++ b/test/lit/passes/precompute-gc.wast
@@ -860,7 +860,7 @@
;; CHECK: (func $br_on_cast-on-creation (type $none_=>_ref|$empty|) (result (ref $empty))
;; CHECK-NEXT: (block $label (result (ref $empty))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $label (ref $empty) (ref $empty)
+ ;; CHECK-NEXT: (br_on_cast $label $empty
;; CHECK-NEXT: (struct.new_default $empty)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -870,7 +870,7 @@
(func $br_on_cast-on-creation (result (ref $empty))
(block $label (result (ref $empty))
(drop
- (br_on_cast $label anyref (ref $empty)
+ (br_on_cast $label $empty
(struct.new_default $empty)
)
)
diff --git a/test/lit/passes/remove-unused-brs-gc.wast b/test/lit/passes/remove-unused-brs-gc.wast
index e063fa482..4fe7bd938 100644
--- a/test/lit/passes/remove-unused-brs-gc.wast
+++ b/test/lit/passes/remove-unused-brs-gc.wast
@@ -136,7 +136,7 @@
(drop
;; This static cast can be computed at compile time: it will definitely be
;; taken, so we can turn it into a normal br.
- (br_on_cast $block anyref (ref $struct)
+ (br_on_cast $block $struct
(struct.new $struct)
)
)
@@ -157,7 +157,7 @@
;; CHECK-NEXT: (local.get $nullable-struct2)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $block (ref null $struct2) (ref null $struct)
+ ;; CHECK-NEXT: (br_on_cast $block null $struct
;; CHECK-NEXT: (local.get $nullable-struct2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -170,26 +170,26 @@
(drop
;; This cast can be computed at compile time: it will definitely fail, so we
;; can remove it.
- (br_on_cast $block anyref (ref $struct)
+ (br_on_cast $block $struct
(struct.new $struct2)
)
)
(drop
;; We can still remove it even if the cast allows nulls.
- (br_on_cast $block anyref (ref null $struct)
+ (br_on_cast $block null $struct
(struct.new $struct2)
)
)
(drop
;; Or if the cast does not allow nulls and the value is nullable.
- (br_on_cast $block anyref (ref $struct)
+ (br_on_cast $block $struct
(local.get $nullable-struct2)
)
)
(drop
;; But if both are nullable, then we can't optimize because the cast would
;; succeed if the value is a null.
- (br_on_cast $block anyref (ref null $struct)
+ (br_on_cast $block null $struct
(local.get $nullable-struct2)
)
)
@@ -216,7 +216,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast_fail $block (ref null $struct2) (ref null $struct)
+ ;; CHECK-NEXT: (br_on_cast_fail $block null $struct
;; CHECK-NEXT: (local.get $nullable-struct2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -229,26 +229,26 @@
(drop
;; This cast can be computed at compile time: it will definitely fail, so we
;; can replace it with an unconditional br.
- (br_on_cast_fail $block anyref (ref $struct)
+ (br_on_cast_fail $block $struct
(struct.new $struct2)
)
)
(drop
;; We can still replace it even if the cast allows nulls.
- (br_on_cast_fail $block anyref (ref null $struct)
+ (br_on_cast_fail $block null $struct
(struct.new $struct2)
)
)
(drop
;; Or if the cast does not allow nulls and the value is nullable.
- (br_on_cast_fail $block anyref (ref $struct)
+ (br_on_cast_fail $block $struct
(local.get $nullable-struct2)
)
)
(drop
;; But if both are nullable, then we can't optimize because the cast would
;; succeed if the value is a null.
- (br_on_cast_fail $block anyref (ref null $struct)
+ (br_on_cast_fail $block null $struct
(local.get $nullable-struct2)
)
)
@@ -260,7 +260,7 @@
;; CHECK-NEXT: (local $struct (ref null $struct))
;; CHECK-NEXT: (block $block (result (ref $struct))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $block (ref null $struct) (ref $struct)
+ ;; CHECK-NEXT: (br_on_cast $block $struct
;; CHECK-NEXT: (local.get $struct)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -271,7 +271,7 @@
(local $struct (ref null $struct))
(block $block (result (ref $struct))
(drop
- (br_on_cast $block anyref (ref $struct)
+ (br_on_cast $block $struct
;; As above, but now the type is nullable, so we cannot infer anything.
(local.get $struct)
)
@@ -293,7 +293,7 @@
(func $br_on_cast_nullable (result (ref null $struct))
(block $block (result (ref null $struct))
(drop
- (br_on_cast $block anyref (ref null $struct)
+ (br_on_cast $block null $struct
;; As above, but now the cast allows nulls, so we can optimize.
(ref.null $struct)
)
@@ -315,7 +315,7 @@
(drop
;; As $br_on_cast, but this checks for a failing cast, so we know it will
;; *not* be taken.
- (br_on_cast_fail $block anyref (ref $struct)
+ (br_on_cast_fail $block $struct
(struct.new $struct)
)
)
@@ -348,7 +348,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: (block $something (result anyref)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $something (ref null $struct) (ref $struct)
+ ;; CHECK-NEXT: (br_on_cast $something $struct
;; CHECK-NEXT: (local.get $struct)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -403,7 +403,7 @@
(block (result anyref)
(block $something (result anyref)
(drop
- (br_on_cast $something anyref (ref $struct)
+ (br_on_cast $something $struct
(local.get $struct)
)
)
diff --git a/test/lit/passes/type-merging-tnh.wast b/test/lit/passes/type-merging-tnh.wast
index 0ec9ac38e..c84e31815 100644
--- a/test/lit/passes/type-merging-tnh.wast
+++ b/test/lit/passes/type-merging-tnh.wast
@@ -57,7 +57,7 @@
;; CHECK: (func $test (type $ref|$A|_=>_ref|$B|) (param $a (ref $A)) (result (ref $B))
;; CHECK-NEXT: (block $__binaryen_fake_return (result (ref $B))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $__binaryen_fake_return (ref $A) (ref $B)
+ ;; CHECK-NEXT: (br_on_cast $__binaryen_fake_return $B
;; CHECK-NEXT: (local.get $a)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -74,7 +74,7 @@
;; CHECK-NEXT: )
(func $test (param $a (ref $A)) (result (ref $B))
(drop
- (br_on_cast 0 anyref (ref $B)
+ (br_on_cast 0 $B
(local.get $a)
)
)
diff --git a/test/lit/passes/type-merging.wast b/test/lit/passes/type-merging.wast
index 55ec42bd0..98ae92055 100644
--- a/test/lit/passes/type-merging.wast
+++ b/test/lit/passes/type-merging.wast
@@ -947,7 +947,7 @@
;; CHECK: (func $test (type $ref|$A|_=>_ref|$B|) (param $a (ref $A)) (result (ref $B))
;; CHECK-NEXT: (block $__binaryen_fake_return (result (ref $B))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (br_on_cast $__binaryen_fake_return (ref $A) (ref $B)
+ ;; CHECK-NEXT: (br_on_cast $__binaryen_fake_return $B
;; CHECK-NEXT: (local.get $a)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -964,7 +964,7 @@
;; CHECK-NEXT: )
(func $test (param $a (ref $A)) (result (ref $B))
(drop
- (br_on_cast 0 anyref (ref $B)
+ (br_on_cast 0 $B
(local.get $a)
)
)