diff options
-rwxr-xr-x | scripts/fuzz_opt.py | 2 | ||||
-rw-r--r-- | test/lit/passes/optimize-instructions-gc-extern.wast | 59 | ||||
-rw-r--r-- | test/lit/passes/optimize-instructions-gc-heap.wast | 54 |
3 files changed, 61 insertions, 54 deletions
diff --git a/scripts/fuzz_opt.py b/scripts/fuzz_opt.py index e7c9edf9c..078c0824c 100755 --- a/scripts/fuzz_opt.py +++ b/scripts/fuzz_opt.py @@ -294,6 +294,8 @@ INITIAL_CONTENTS_IGNORE = [ 'multi-memories-basics.wasm', 'multi-memories-simd.wasm', 'multi-memories_size.wast', + # TODO: fuzzer support for internalize/externalize + 'optimize-instructions-gc-extern.wast', ] diff --git a/test/lit/passes/optimize-instructions-gc-extern.wast b/test/lit/passes/optimize-instructions-gc-extern.wast new file mode 100644 index 000000000..18c91f1bb --- /dev/null +++ b/test/lit/passes/optimize-instructions-gc-extern.wast @@ -0,0 +1,59 @@ +;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. +;; RUN: wasm-opt %s --optimize-instructions -all -S -o - \ +;; RUN: | filecheck %s + +(module + ;; CHECK: (func $extern.externalize (param $x anyref) (param $y externref) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (extern.externalize + ;; CHECK-NEXT: (local.get $x) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (extern.externalize + ;; CHECK-NEXT: (ref.as_non_null + ;; CHECK-NEXT: (local.get $x) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (extern.internalize + ;; CHECK-NEXT: (local.get $y) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (extern.internalize + ;; CHECK-NEXT: (ref.as_non_null + ;; CHECK-NEXT: (local.get $y) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $extern.externalize (export "ext") (param $x (ref null any)) (param $y (ref null extern)) + ;; We should not change anything here, and also not hit an internal error. + (drop + (extern.externalize + (local.get $x) + ) + ) + (drop + (extern.externalize + (ref.as_non_null + (local.get $x) + ) + ) + ) + (drop + (extern.internalize + (local.get $y) + ) + ) + (drop + (extern.internalize + (ref.as_non_null + (local.get $y) + ) + ) + ) + ) +) diff --git a/test/lit/passes/optimize-instructions-gc-heap.wast b/test/lit/passes/optimize-instructions-gc-heap.wast index b77678760..e448e57fd 100644 --- a/test/lit/passes/optimize-instructions-gc-heap.wast +++ b/test/lit/passes/optimize-instructions-gc-heap.wast @@ -766,58 +766,4 @@ (func $helper-i32 (param $x i32) (result i32) (i32.const 42) ) - - ;; CHECK: (func $extern.externalize (param $x anyref) (param $y externref) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (extern.externalize - ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (extern.externalize - ;; CHECK-NEXT: (ref.as_non_null - ;; CHECK-NEXT: (local.get $x) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (extern.internalize - ;; CHECK-NEXT: (local.get $y) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (drop - ;; CHECK-NEXT: (extern.internalize - ;; CHECK-NEXT: (ref.as_non_null - ;; CHECK-NEXT: (local.get $y) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - (func $extern.externalize (export "ext") (param $x (ref null any)) (param $y (ref null extern)) - ;; We should not change anything here, and also not hit an internal error. - (drop - (extern.externalize - (local.get $x) - ) - ) - (drop - (extern.externalize - (ref.as_non_null - (local.get $x) - ) - ) - ) - (drop - (extern.internalize - (local.get $y) - ) - ) - (drop - (extern.internalize - (ref.as_non_null - (local.get $y) - ) - ) - ) - ) ) |