summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lit/help/wasm-opt.test9
-rw-r--r--test/lit/passes/experimental-new_eh.wast28
2 files changed, 37 insertions, 0 deletions
diff --git a/test/lit/help/wasm-opt.test b/test/lit/help/wasm-opt.test
index 5a207a1b0..88fc2448a 100644
--- a/test/lit/help/wasm-opt.test
+++ b/test/lit/help/wasm-opt.test
@@ -79,6 +79,15 @@
;; CHECK-NEXT: --new-wat-parser Use the experimental new WAT
;; CHECK-NEXT: parser
;; CHECK-NEXT:
+;; CHECK-NEXT: --experimental-new-eh After running all requested
+;; CHECK-NEXT: transformations / optimizations,
+;; CHECK-NEXT: translate the instruction to use
+;; CHECK-NEXT: the new EH instructions at the
+;; CHECK-NEXT: end. Depending on the
+;; CHECK-NEXT: optimization level specified,
+;; CHECK-NEXT: this may do some more
+;; CHECK-NEXT: post-translation optimizations.
+;; CHECK-NEXT:
;; CHECK-NEXT:
;; CHECK-NEXT: Optimization passes:
;; CHECK-NEXT: --------------------
diff --git a/test/lit/passes/experimental-new_eh.wast b/test/lit/passes/experimental-new_eh.wast
new file mode 100644
index 000000000..ee6624676
--- /dev/null
+++ b/test/lit/passes/experimental-new_eh.wast
@@ -0,0 +1,28 @@
+;; When given alone, --experimental-new-eh just runs --translate-to-new-eh
+;; RUN: wasm-opt %s -all --translate-to-new-eh -S -o %a.wasm
+;; RUN: wasm-opt %s -all --experimental-new-eh -S -o %b.wasm
+;; RUN: diff %a.wasm %b.wasm
+
+;; When given with other flags, --experimental-new-eh runs the translator after
+;; running other passes. If --optimize-level >=3, --experimenal-new-eh also runs
+;; StackIR (+ local2stack) optimization. So running '-O --experimental-new-eh'
+;; should be the same as running all these passes separately.
+;; RUN: wasm-opt %s -all -O --translate-to-new-eh --optimize-level=3 --generate-stack-ir --optimize-stack-ir -o %a.wasm
+;; RUN: wasm-opt %s -all -O --experimental-new-eh -o %b.wasm
+;; RUN: diff %a.wasm %b.wasm
+
+(module
+ (import "env" "foo" (func $foo))
+ (start $test)
+ (func $test
+ (try $l
+ (do
+ (call $foo)
+ )
+ (catch_all
+ (call $foo)
+ (rethrow $l)
+ )
+ )
+ )
+)