summaryrefslogtreecommitdiff
path: root/test/lit
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit')
-rw-r--r--test/lit/help/wasm-as.test3
-rw-r--r--test/lit/help/wasm-ctor-eval.test3
-rw-r--r--test/lit/help/wasm-dis.test3
-rw-r--r--test/lit/help/wasm-emscripten-finalize.test3
-rw-r--r--test/lit/help/wasm-merge.test3
-rw-r--r--test/lit/help/wasm-metadce.test8
-rw-r--r--test/lit/help/wasm-opt.test6
-rw-r--r--test/lit/help/wasm-reduce.test3
-rw-r--r--test/lit/help/wasm-split.test3
-rw-r--r--test/lit/help/wasm2js.test6
-rw-r--r--test/lit/passes/remove-unused-types-preserve-order.wast81
11 files changed, 118 insertions, 4 deletions
diff --git a/test/lit/help/wasm-as.test b/test/lit/help/wasm-as.test
index a2ee3d45e..5dd4b1515 100644
--- a/test/lit/help/wasm-as.test
+++ b/test/lit/help/wasm-as.test
@@ -139,6 +139,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-ctor-eval.test b/test/lit/help/wasm-ctor-eval.test
index 4ad75a8d0..abb80b12e 100644
--- a/test/lit/help/wasm-ctor-eval.test
+++ b/test/lit/help/wasm-ctor-eval.test
@@ -146,6 +146,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-dis.test b/test/lit/help/wasm-dis.test
index 96e999c2c..90bc12b99 100644
--- a/test/lit/help/wasm-dis.test
+++ b/test/lit/help/wasm-dis.test
@@ -132,6 +132,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-emscripten-finalize.test b/test/lit/help/wasm-emscripten-finalize.test
index fbf86209c..cdd378d40 100644
--- a/test/lit/help/wasm-emscripten-finalize.test
+++ b/test/lit/help/wasm-emscripten-finalize.test
@@ -174,6 +174,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-merge.test b/test/lit/help/wasm-merge.test
index 108fd3673..ee1fed13a 100644
--- a/test/lit/help/wasm-merge.test
+++ b/test/lit/help/wasm-merge.test
@@ -162,6 +162,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-metadce.test b/test/lit/help/wasm-metadce.test
index 4ddf55203..50295b1f0 100644
--- a/test/lit/help/wasm-metadce.test
+++ b/test/lit/help/wasm-metadce.test
@@ -248,9 +248,9 @@
;; CHECK-NEXT:
;; CHECK-NEXT: --merge-blocks merges blocks to their parents
;; CHECK-NEXT:
-;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
+;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
;; CHECK-NEXT: vtables to make types more
-;; CHECK-NEXT: compact
+;; CHECK-NEXT: compact
;; CHECK-NEXT:
;; CHECK-NEXT: --merge-locals merges locals when beneficial
;; CHECK-NEXT:
@@ -771,6 +771,10 @@
;; CHECK-NEXT: in, but not inspect their
;; CHECK-NEXT: contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from
+;; CHECK-NEXT: the input (useful for debugging
+;; CHECK-NEXT: and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-opt.test b/test/lit/help/wasm-opt.test
index f55798253..0691d1c18 100644
--- a/test/lit/help/wasm-opt.test
+++ b/test/lit/help/wasm-opt.test
@@ -257,7 +257,7 @@
;; CHECK-NEXT:
;; CHECK-NEXT: --merge-blocks merges blocks to their parents
;; CHECK-NEXT:
-;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
+;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
;; CHECK-NEXT: vtables to make types more
;; CHECK-NEXT: compact
;; CHECK-NEXT:
@@ -780,6 +780,10 @@
;; CHECK-NEXT: in, but not inspect their
;; CHECK-NEXT: contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from
+;; CHECK-NEXT: the input (useful for debugging
+;; CHECK-NEXT: and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-reduce.test b/test/lit/help/wasm-reduce.test
index 61e171ba9..cc75aed2b 100644
--- a/test/lit/help/wasm-reduce.test
+++ b/test/lit/help/wasm-reduce.test
@@ -168,6 +168,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm-split.test b/test/lit/help/wasm-split.test
index a6074c85d..dc521a82f 100644
--- a/test/lit/help/wasm-split.test
+++ b/test/lit/help/wasm-split.test
@@ -249,6 +249,9 @@
;; CHECK-NEXT: them and pass them back in, but not
;; CHECK-NEXT: inspect their contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from the
+;; CHECK-NEXT: input (useful for debugging and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/help/wasm2js.test b/test/lit/help/wasm2js.test
index 39c4d5f5e..89dcaa028 100644
--- a/test/lit/help/wasm2js.test
+++ b/test/lit/help/wasm2js.test
@@ -211,7 +211,7 @@
;; CHECK-NEXT:
;; CHECK-NEXT: --merge-blocks merges blocks to their parents
;; CHECK-NEXT:
-;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
+;; CHECK-NEXT: --merge-j2cl-itables Merges itable structures into
;; CHECK-NEXT: vtables to make types more
;; CHECK-NEXT: compact
;; CHECK-NEXT:
@@ -734,6 +734,10 @@
;; CHECK-NEXT: in, but not inspect their
;; CHECK-NEXT: contents or call them.
;; CHECK-NEXT:
+;; CHECK-NEXT: --preserve-type-order Preserve the order of types from
+;; CHECK-NEXT: the input (useful for debugging
+;; CHECK-NEXT: and testing)
+;; CHECK-NEXT:
;; CHECK-NEXT: --generate-stack-ir generate StackIR during writing
;; CHECK-NEXT:
;; CHECK-NEXT: --optimize-stack-ir optimize StackIR during writing
diff --git a/test/lit/passes/remove-unused-types-preserve-order.wast b/test/lit/passes/remove-unused-types-preserve-order.wast
new file mode 100644
index 000000000..12f467e58
--- /dev/null
+++ b/test/lit/passes/remove-unused-types-preserve-order.wast
@@ -0,0 +1,81 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
+
+;; RUN: wasm-opt %s -all --closed-world --preserve-type-order \
+;; RUN: --remove-unused-types -S -o - | filecheck %s
+;; RUN: wasm-opt %s -all --closed-world --preserve-type-order \
+;; RUN: --remove-unused-types --roundtrip -S -o - | filecheck %s
+
+(module
+ (rec
+ (type $unused-1 (struct))
+ ;; CHECK: (rec
+ ;; CHECK-NEXT: (type $A (struct))
+ (type $A (struct))
+ (type $unused-2 (struct))
+ )
+ ;; CHECK: (type $B (struct))
+ (type $B (struct))
+ (type $unused-3 (struct (field i32)))
+ (rec
+ ;; CHECK: (type $C (struct (field (ref null $D))))
+ (type $C (struct (field (ref null $D))))
+ (type $unused-4 (struct))
+ ;; CHECK: (type $D (struct (field (ref null $C))))
+ (type $D (struct (field (ref null $C))))
+ )
+ ;; CHECK: (type $E (struct (field (ref null $E))))
+ (type $E (struct (field (ref null $E))))
+
+ ;; Use the types in a shuffled order, using later types the most. If we
+ ;; weren't deliberately and correctly preserving type order, we would end up
+ ;; with some other order.
+
+ ;; CHECK: (global $E1 (ref null $E) (ref.null none))
+ (global $E1 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E2 (ref null $E) (ref.null none))
+ (global $E2 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E3 (ref null $E) (ref.null none))
+ (global $E3 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E4 (ref null $E) (ref.null none))
+ (global $E4 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E5 (ref null $E) (ref.null none))
+ (global $E5 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E6 (ref null $E) (ref.null none))
+ (global $E6 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E7 (ref null $E) (ref.null none))
+ (global $E7 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E8 (ref null $E) (ref.null none))
+ (global $E8 (ref null $E) (ref.null none))
+ ;; CHECK: (global $E9 (ref null $E) (ref.null none))
+ (global $E9 (ref null $E) (ref.null none))
+
+ ;; CHECK: (global $C1 (ref null $C) (ref.null none))
+ (global $C1 (ref null $C) (ref.null none))
+ ;; CHECK: (global $C2 (ref null $C) (ref.null none))
+ (global $C2 (ref null $C) (ref.null none))
+ ;; CHECK: (global $C3 (ref null $C) (ref.null none))
+ (global $C3 (ref null $C) (ref.null none))
+ ;; CHECK: (global $C4 (ref null $C) (ref.null none))
+ (global $C4 (ref null $C) (ref.null none))
+ ;; CHECK: (global $C5 (ref null $C) (ref.null none))
+ (global $C5 (ref null $C) (ref.null none))
+ ;; CHECK: (global $C6 (ref null $C) (ref.null none))
+ (global $C6 (ref null $C) (ref.null none))
+
+ ;; CHECK: (global $A1 (ref null $A) (ref.null none))
+ (global $A1 (ref null $A) (ref.null none))
+ ;; CHECK: (global $A2 (ref null $A) (ref.null none))
+ (global $A2 (ref null $A) (ref.null none))
+ ;; CHECK: (global $A3 (ref null $A) (ref.null none))
+ (global $A3 (ref null $A) (ref.null none))
+ ;; CHECK: (global $A4 (ref null $A) (ref.null none))
+ (global $A4 (ref null $A) (ref.null none))
+
+ ;; CHECK: (global $D1 (ref null $D) (ref.null none))
+ (global $D1 (ref null $D) (ref.null none))
+ ;; CHECK: (global $D2 (ref null $D) (ref.null none))
+ (global $D2 (ref null $D) (ref.null none))
+
+ ;; CHECK: (global $B1 (ref null $B) (ref.null none))
+ (global $B1 (ref null $B) (ref.null none))
+)