Skip to content

Commit df5f581

Browse files
committed
add test
1 parent 651f2d3 commit df5f581

File tree

1 file changed

+46
-8
lines changed

1 file changed

+46
-8
lines changed

test/lit/passes/simplify-locals-strings.wast

Lines changed: 46 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
;; CHECK: (type $array16 (sub (array (mut i16))))
1111
(type $array16 (sub (array (mut i16))))
1212

13-
;; CHECK: (func $no-new-past-store-gc (type $2) (param $array (ref $array)) (param $array16 (ref $array16))
13+
;; CHECK: (func $no-new-past-store (type $2) (param $array (ref $array)) (param $array16 (ref $array16))
1414
;; CHECK-NEXT: (local $temp stringref)
1515
;; CHECK-NEXT: (local.set $temp
1616
;; CHECK-NEXT: (string.new_lossy_utf8_array
@@ -29,7 +29,7 @@
2929
;; CHECK-NEXT: )
3030
;; CHECK-NEXT: (local.set $temp
3131
;; CHECK-NEXT: (string.new_wtf16_array
32-
;; CHECK-NEXT: (local.get $array)
32+
;; CHECK-NEXT: (local.get $array16)
3333
;; CHECK-NEXT: (i32.const 1)
3434
;; CHECK-NEXT: (i32.const 2)
3535
;; CHECK-NEXT: )
@@ -43,7 +43,7 @@
4343
;; CHECK-NEXT: (local.get $temp)
4444
;; CHECK-NEXT: )
4545
;; CHECK-NEXT: )
46-
(func $no-new-past-store-gc (param $array (ref $array)) (param $array16 (ref $array16))
46+
(func $no-new-past-store (param $array (ref $array)) (param $array16 (ref $array16))
4747
(local $temp stringref)
4848
;; A string.new_***_array cannot be moved past a GC store.
4949
(local.set $temp
@@ -63,7 +63,7 @@
6363
)
6464
(local.set $temp
6565
(string.new_wtf16_array
66-
(local.get $array)
66+
(local.get $array16)
6767
(i32.const 1)
6868
(i32.const 2)
6969
)
@@ -78,7 +78,45 @@
7878
)
7979
)
8080

81-
;; CHECK: (func $no-load-past-encode-gc (type $3) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
81+
;; CHECK: (func $yes-new-past-load (type $3) (param $array16 (ref $array16))
82+
;; CHECK-NEXT: (local $temp stringref)
83+
;; CHECK-NEXT: (nop)
84+
;; CHECK-NEXT: (drop
85+
;; CHECK-NEXT: (array.get_u $array16
86+
;; CHECK-NEXT: (local.get $array16)
87+
;; CHECK-NEXT: (i32.const 0)
88+
;; CHECK-NEXT: )
89+
;; CHECK-NEXT: )
90+
;; CHECK-NEXT: (drop
91+
;; CHECK-NEXT: (string.new_wtf16_array
92+
;; CHECK-NEXT: (local.get $array16)
93+
;; CHECK-NEXT: (i32.const 1)
94+
;; CHECK-NEXT: (i32.const 2)
95+
;; CHECK-NEXT: )
96+
;; CHECK-NEXT: )
97+
;; CHECK-NEXT: )
98+
(func $yes-new-past-load (param $array16 (ref $array16))
99+
(local $temp stringref)
100+
;; A string.new can be moved past an array load.
101+
(local.set $temp
102+
(string.new_wtf16_array
103+
(local.get $array16)
104+
(i32.const 1)
105+
(i32.const 2)
106+
)
107+
)
108+
(drop
109+
(array.get $array16
110+
(local.get $array16)
111+
(i32.const 0)
112+
)
113+
)
114+
(drop
115+
(local.get $temp)
116+
)
117+
)
118+
119+
;; CHECK: (func $no-load-past-encode (type $4) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
82120
;; CHECK-NEXT: (local $temp i32)
83121
;; CHECK-NEXT: (local.set $temp
84122
;; CHECK-NEXT: (array.get_u $array
@@ -105,15 +143,15 @@
105143
;; CHECK-NEXT: (drop
106144
;; CHECK-NEXT: (string.encode_wtf16_array
107145
;; CHECK-NEXT: (local.get $ref)
108-
;; CHECK-NEXT: (local.get $array)
146+
;; CHECK-NEXT: (local.get $array16)
109147
;; CHECK-NEXT: (i32.const 20)
110148
;; CHECK-NEXT: )
111149
;; CHECK-NEXT: )
112150
;; CHECK-NEXT: (drop
113151
;; CHECK-NEXT: (local.get $temp)
114152
;; CHECK-NEXT: )
115153
;; CHECK-NEXT: )
116-
(func $no-load-past-encode-gc (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
154+
(func $no-load-past-encode (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
117155
(local $temp i32)
118156
;; string.encode_*_array writes to an array, so an array get can't be moved
119157
;; past it.
@@ -142,7 +180,7 @@
142180
(drop
143181
(string.encode_wtf16_array
144182
(local.get $ref)
145-
(local.get $array)
183+
(local.get $array16)
146184
(i32.const 20)
147185
)
148186
)

0 commit comments

Comments
 (0)