diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/downgrade-reftypes.wast | 61 |
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) + ) + ) + ) + ) +) |