summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2021-07-28 09:11:43 -0700
committerGitHub <noreply@github.com>2021-07-28 09:11:43 -0700
commitbe580c66645cdea13c8e8b3b77f12ef3a52e5f2e (patch)
tree53869afb8b2fdfd4bc0f447dd643f09bd1272c96 /test
parentb99bf3a230d9e4333cb1fdf5e4b760f549f04057 (diff)
downloadbinaryen-be580c66645cdea13c8e8b3b77f12ef3a52e5f2e.tar.gz
binaryen-be580c66645cdea13c8e8b3b77f12ef3a52e5f2e.tar.bz2
binaryen-be580c66645cdea13c8e8b3b77f12ef3a52e5f2e.zip
[Wasm GC] DeadArgumentElimination: Update tees after refining param types (#4031)
Diffstat (limited to 'test')
-rw-r--r--test/lit/passes/dae-gc.wast36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/lit/passes/dae-gc.wast b/test/lit/passes/dae-gc.wast
index 230f757fc..0ea322ce8 100644
--- a/test/lit/passes/dae-gc.wast
+++ b/test/lit/passes/dae-gc.wast
@@ -213,6 +213,42 @@
(local.set $y (ref.null ${i32_i64}))
)
+ ;; CHECK: (func $call-various-params-tee
+ ;; CHECK-NEXT: (call $various-params-tee
+ ;; CHECK-NEXT: (ref.null ${i32})
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $call-various-params-tee
+ ;; The argument gets {i32}, which allows us to refine.
+ (call $various-params-tee
+ (ref.null ${i32})
+ )
+ )
+ ;; CHECK: (func $various-params-tee (param $x (ref null ${i32}))
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (block $block (result (ref null ${i32}))
+ ;; CHECK-NEXT: (local.tee $x
+ ;; CHECK-NEXT: (ref.null ${i32_i64})
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $various-params-tee (param $x (ref null ${}))
+ ;; "Use" the locals to avoid other optimizations kicking in.
+ (drop (local.get $x))
+ ;; Write to $x in a way that allows us to make the type more specific. We
+ ;; must also update the type of the tee (if we do not, a validation error
+ ;; would occur), and that will also cause the block's type to update as well.
+ (drop
+ (block (result (ref null ${}))
+ (local.tee $x (ref.null ${i32_i64}))
+ )
+ )
+ )
+
;; CHECK: (func $call-various-params-null
;; CHECK-NEXT: (call $various-params-null
;; CHECK-NEXT: (ref.as_non_null