| ;; 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) | |
| ) | |
| ) | |
| ) | |
| ) | |