summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lit/downgrade-reftypes.wast61
1 files changed, 61 insertions, 0 deletions
diff --git a/test/lit/downgrade-reftypes.wast b/test/lit/downgrade-reftypes.wast
new file mode 100644
index 000000000..94343933f
--- /dev/null
+++ b/test/lit/downgrade-reftypes.wast
@@ -0,0 +1,61 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
+
+;; Write to a binary, lowering away refined GC types.
+;; RUN: wasm-as %s -all --disable-gc -g -o %s.wasm
+
+;; Read it back and verify that the types were lowered away.
+;; RUN: wasm-dis %s.wasm -all -o - | filecheck %s
+
+(module
+
+ ;; CHECK: (type $f (func))
+ (type $f (func))
+
+ ;; CHECK: (func $foo (type $f)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $label$1 (result funcref)
+ ;; CHECK-NEXT: (br $label$1
+ ;; CHECK-NEXT: (ref.func $foo)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $label$2 (result funcref)
+ ;; CHECK-NEXT: (br $label$2
+ ;; CHECK-NEXT: (ref.null nofunc)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $label$3 (result externref)
+ ;; CHECK-NEXT: (br $label$3
+ ;; CHECK-NEXT: (ref.null noextern)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $foo (type $f)
+ (drop
+ (block $l1 (result (ref $f))
+ (br $l1
+ (ref.func $foo)
+ )
+ )
+ )
+ (drop
+ (block $l2 (result nullfuncref)
+ ;; Branch to ensure the blocks remain in the output.
+ (br $l2
+ (ref.null nofunc)
+ )
+ )
+ )
+ (drop
+ (block $l3 (result nullexternref)
+ (br $l3
+ (ref.null noextern)
+ )
+ )
+ )
+ )
+)