summaryrefslogtreecommitdiff
path: root/test/lit/passes/optimize-casts.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit/passes/optimize-casts.wast')
-rw-r--r--test/lit/passes/optimize-casts.wast182
1 files changed, 91 insertions, 91 deletions
diff --git a/test/lit/passes/optimize-casts.wast b/test/lit/passes/optimize-casts.wast
index 097f03c62..422734eb4 100644
--- a/test/lit/passes/optimize-casts.wast
+++ b/test/lit/passes/optimize-casts.wast
@@ -112,7 +112,7 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -128,7 +128,7 @@
;; As $ref.as but with ref.casts: we should use the cast value after it has
;; been computed, in both gets.
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -144,7 +144,7 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -161,7 +161,7 @@
;; CHECK-NEXT: )
(func $not-past-set (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -181,7 +181,7 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -195,7 +195,7 @@
;; CHECK-NEXT: )
(func $yes-past-call (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -213,7 +213,7 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -227,7 +227,7 @@
;; CHECK-NEXT: )
(func $not-past-call_ref (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -246,7 +246,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (call $void)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -259,7 +259,7 @@
)
(call $void)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -273,7 +273,7 @@
;; CHECK-NEXT: (ref.func $void)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -287,7 +287,7 @@
(ref.func $void)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -298,7 +298,7 @@
;; CHECK-NEXT: (local $2 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -314,7 +314,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $2
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -328,7 +328,7 @@
;; CHECK-NEXT: )
(func $best (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -345,7 +345,7 @@
(i32.const 20)
)
(drop
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -362,7 +362,7 @@
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -371,7 +371,7 @@
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -383,7 +383,7 @@
;; As above, but with the casts reversed. Now we should use $B in both
;; gets.
(drop
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -391,7 +391,7 @@
(local.get $x)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -404,7 +404,7 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (block (result (ref struct))
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
@@ -417,7 +417,7 @@
;; CHECK-NEXT: )
(func $fallthrough (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
;; We look through the block, and optimize.
(block (result (ref struct))
(local.get $x)
@@ -431,7 +431,7 @@
;; CHECK: (func $past-basic-block (type $ref|struct|_=>_none) (param $x (ref struct))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -445,7 +445,7 @@
;; CHECK-NEXT: )
(func $past-basic-block (param $x (ref struct))
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -473,14 +473,14 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $4
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $a)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $5
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $b)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -512,12 +512,12 @@
(local.get $y)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $a)
)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $b)
)
)
@@ -543,9 +543,9 @@
;; CHECK: (func $move-cast-1 (type $ref|struct|_=>_none) (param $x (ref struct))
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -555,7 +555,7 @@
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -565,7 +565,7 @@
;; The later cast to $B will be moved between ref.cast $A
;; and local.get $x. This will cause this ref.cast $A to be
;; converted to a second ref.cast $B due to ReFinalize().
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -575,7 +575,7 @@
(drop
;; The most refined cast of $x is to $B, which we can move up to
;; the top and reuse from there.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -584,16 +584,16 @@
;; CHECK: (func $move-cast-2 (type $ref|struct|_=>_none) (param $x (ref struct))
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -606,13 +606,13 @@
;; As in $move-cast-1, the later cast to $B will be moved
;; between ref.cast $A and local.get $x, causing ref.cast $A
;; to be converted into a second ref.cast $B by ReFinalize();
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
(drop
;; This will be moved up to the first local.get $x.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -625,18 +625,18 @@
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -647,13 +647,13 @@
)
(drop
;; Converted to $B by ReFinalize().
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
(drop
;; This will be moved up to the first local.get $x.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -663,18 +663,18 @@
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -685,13 +685,13 @@
)
(drop
;; This will be moved up to the first local.get $x.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
(drop
;; Converted to $B by ReFinalize().
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -701,13 +701,13 @@
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -719,13 +719,13 @@
(drop
;; The first location is already the most refined cast, so nothing will be moved up.
;; (But we will save the cast to a local and re-use it below.)
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
(drop
;; Converted to $B by ReFinalize().
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -738,7 +738,7 @@
;; CHECK-NEXT: (local $1 (ref $B))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -747,7 +747,7 @@
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -755,7 +755,7 @@
(func $move-cast-6 (param $x (ref struct))
(drop
;; This is already the most refined cast, so nothing will be moved.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -764,7 +764,7 @@
)
(drop
;; Converted to $B by ReFinalize().
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -775,7 +775,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -787,7 +787,7 @@
(drop
;; Since we know $x is of type $B, this cast to a less refined type $A
;; will not be moved higher.
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -823,7 +823,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $D
+ ;; CHECK-NEXT: (ref.cast (ref $D)
;; CHECK-NEXT: (block (result anyref)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
@@ -842,7 +842,7 @@
(local.get $x)
)
(drop
- (ref.cast $D
+ (ref.cast (ref $D)
(block (result anyref)
(local.get $x)
)
@@ -915,20 +915,20 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $2
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $3
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $y)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -936,12 +936,12 @@
;; CHECK-NEXT: (local.get $3)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $3)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -965,7 +965,7 @@
(local.get $y)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -975,13 +975,13 @@
)
(drop
;; This can be moved past local.set $x.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $y)
)
)
(drop
;; This cannot be moved past local.set $x.
- (ref.cast $B
+ (ref.cast (ref $B)
(local.get $x)
)
)
@@ -1044,7 +1044,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
;; CHECK-NEXT: (ref.as_non_null
- ;; CHECK-NEXT: (ref.cast null $A
+ ;; CHECK-NEXT: (ref.cast (ref null $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1052,7 +1052,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (ref.as_non_null
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1069,7 +1069,7 @@
(ref.as_non_null
;; This will be converted to a non-nullable cast because the local we
;; save to in the optimization ($1) is now non-nullable.
- (ref.cast null $A
+ (ref.cast (ref null $A)
(local.get $x)
)
)
@@ -1081,14 +1081,14 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
;; CHECK-NEXT: (ref.as_non_null
- ;; CHECK-NEXT: (ref.cast null $A
+ ;; CHECK-NEXT: (ref.cast (ref null $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1108,7 +1108,7 @@
(drop
;; This is converted to ref.cast $A, because we will save $x to
;; a non-nullable $A local as part of the optimization.
- (ref.cast null $A
+ (ref.cast (ref null $A)
(local.get $x)
)
)
@@ -1124,7 +1124,7 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
;; CHECK-NEXT: (ref.as_non_null
- ;; CHECK-NEXT: (ref.cast null $A
+ ;; CHECK-NEXT: (ref.cast (ref null $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1136,7 +1136,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1157,7 +1157,7 @@
(drop
;; This is converted to ref.cast $A, because we will save $x to
;; a non-nullable $A local as part of the optimization.
- (ref.cast null $A
+ (ref.cast (ref null $A)
(local.get $x)
)
)
@@ -1165,7 +1165,7 @@
;; CHECK: (func $unoptimizable-nested-casts (type $structref_=>_none) (param $x structref)
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $B
+ ;; CHECK-NEXT: (ref.cast (ref $B)
;; CHECK-NEXT: (ref.as_non_null
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
@@ -1176,7 +1176,7 @@
;; No optimizations should be made here for this nested cast.
;; This test is here to ensure this.
(drop
- (ref.cast $B
+ (ref.cast (ref $B)
(ref.as_non_null
(local.get $x)
)
@@ -1189,7 +1189,7 @@
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.tee $x
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
@@ -1204,7 +1204,7 @@
;; We do not move this ref.cast of $x because $x is set by the local.tee,
;; and we do not move casts past a set of a local index. This is treated
;; like a local.set and we do not have a special case for this.
- (ref.cast $A
+ (ref.cast (ref $A)
(local.tee $x
(local.get $x)
)
@@ -1217,13 +1217,13 @@
;; CHECK-NEXT: (local $3 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $3
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.tee $a
;; CHECK-NEXT: (local.get $3)
;; CHECK-NEXT: )
@@ -1237,7 +1237,7 @@
)
(drop
;; We can move this ref.cast because the local.tee sets another local index.
- (ref.cast $A
+ (ref.cast (ref $A)
(local.tee $a
(local.get $x)
)
@@ -1249,18 +1249,18 @@
;; CHECK-NEXT: (local $1 (ref $A))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.tee $1
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $1)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1273,12 +1273,12 @@
(local.get $x)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
(drop
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)
@@ -1307,7 +1307,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
- ;; CHECK-NEXT: (ref.cast $A
+ ;; CHECK-NEXT: (ref.cast (ref $A)
;; CHECK-NEXT: (local.get $x)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
@@ -1340,7 +1340,7 @@
;; This cannot be moved earlier because it is blocked by
;; the if statement. All state information is cleared when
;; entering and leaving the if statement.
- (ref.cast $A
+ (ref.cast (ref $A)
(local.get $x)
)
)