blob: 1f45d5f4cc68f1444adc7c4364d1e9f6374ae128 [file] [log] [blame] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s
(module
;; CHECK: (type $functype (func))
(type $functype (func))
;; CHECK: (table $table 48 funcref)
(table $table 48 funcref)
;; CHECK: (table $table64 i64 96 funcref)
(table $table64 i64 96 funcref)
;; a type that appears in the table and nowhere else. this test checks that
;; we do not crash during the roundtrip on seeing an unexpected type that
;; collectHeapTypes() did not scan.
(elem (table $table) (i32.const 0) funcref (ref.null $functype))
;; CHECK: (elem $0 (table $table) (i32.const 0) funcref (item (ref.null nofunc)))
;; CHECK: (func $set (type $functype)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i64.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: (table.set $table64
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $set
(table.set $table64
(i64.const 0)
(block (result funcref)
;; This unreachable code must not confuse the parser. Specifically the
;; index should not be replaced with the i32, which would not validate.
(i32.lt_u
(i32.const 0)
(unreachable)
)
(ref.null nofunc)
)
)
)
)