| ;; RUN: wasm-split %s -all -g -S -o1 %t.1.wast -o2 %t.2.wast --split-funcs=split | |
| ;; RUN: cat %t.1.wast | filecheck %s --check-prefix PRIMARY | |
| ;; RUN: cat %t.2.wast | filecheck %s --check-prefix SECONDARY | |
| ;; Regression test for a bug when an existing table, which is to be split to the | |
| ;; secondary module, has the name '0'. The newly created dispatch table should | |
| ;; have a different name. | |
| (module | |
| (table $0 0 externref) | |
| (export "split" (func $split)) | |
| (func $split | |
| (table.set $0 | |
| (i32.const 0) | |
| (ref.null extern) | |
| ) | |
| ) | |
| ) | |
| ;; PRIMARY: (module | |
| ;; PRIMARY-NEXT: (type $0 (func)) | |
| ;; PRIMARY-NEXT: (import "placeholder.deferred" "0" (func $placeholder_0 (type $0))) | |
| ;; PRIMARY-NEXT: (table $0_0 1 funcref) | |
| ;; PRIMARY-NEXT: (elem $0 (i32.const 0) $placeholder_0) | |
| ;; PRIMARY-NEXT: (export "split" (func $trampoline_split)) | |
| ;; PRIMARY-NEXT: (export "table" (table $0_0)) | |
| ;; PRIMARY-NEXT: (func $trampoline_split (type $0) | |
| ;; PRIMARY-NEXT: (call_indirect $0_0 (type $0) | |
| ;; PRIMARY-NEXT: (i32.const 0) | |
| ;; PRIMARY-NEXT: ) | |
| ;; PRIMARY-NEXT: ) | |
| ;; PRIMARY-NEXT: ) | |
| ;; SECONDARY: (module | |
| ;; SECONDARY-NEXT: (type $0 (func)) | |
| ;; SECONDARY-NEXT: (import "primary" "table" (table $0_0 1 funcref)) | |
| ;; SECONDARY-NEXT: (table $0 0 externref) | |
| ;; SECONDARY-NEXT: (elem $0 (table $0_0) (i32.const 0) func $split) | |
| ;; SECONDARY-NEXT: (func $split (type $0) | |
| ;; SECONDARY-NEXT: (table.set $0 | |
| ;; SECONDARY-NEXT: (i32.const 0) | |
| ;; SECONDARY-NEXT: (ref.null noextern) | |
| ;; SECONDARY-NEXT: ) | |
| ;; SECONDARY-NEXT: ) | |
| ;; SECONDARY-NEXT: ) |