|
10 | 10 | ;; CHECK: (type $array16 (sub (array (mut i16)))) |
11 | 11 | (type $array16 (sub (array (mut i16)))) |
12 | 12 |
|
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)) |
14 | 14 | ;; CHECK-NEXT: (local $temp stringref) |
15 | 15 | ;; CHECK-NEXT: (local.set $temp |
16 | 16 | ;; CHECK-NEXT: (string.new_lossy_utf8_array |
|
29 | 29 | ;; CHECK-NEXT: ) |
30 | 30 | ;; CHECK-NEXT: (local.set $temp |
31 | 31 | ;; CHECK-NEXT: (string.new_wtf16_array |
32 | | - ;; CHECK-NEXT: (local.get $array) |
| 32 | + ;; CHECK-NEXT: (local.get $array16) |
33 | 33 | ;; CHECK-NEXT: (i32.const 1) |
34 | 34 | ;; CHECK-NEXT: (i32.const 2) |
35 | 35 | ;; CHECK-NEXT: ) |
|
43 | 43 | ;; CHECK-NEXT: (local.get $temp) |
44 | 44 | ;; CHECK-NEXT: ) |
45 | 45 | ;; 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)) |
47 | 47 | (local $temp stringref) |
48 | 48 | ;; A string.new_***_array cannot be moved past a GC store. |
49 | 49 | (local.set $temp |
|
63 | 63 | ) |
64 | 64 | (local.set $temp |
65 | 65 | (string.new_wtf16_array |
66 | | - (local.get $array) |
| 66 | + (local.get $array16) |
67 | 67 | (i32.const 1) |
68 | 68 | (i32.const 2) |
69 | 69 | ) |
|
78 | 78 | ) |
79 | 79 | ) |
80 | 80 |
|
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)) |
82 | 120 | ;; CHECK-NEXT: (local $temp i32) |
83 | 121 | ;; CHECK-NEXT: (local.set $temp |
84 | 122 | ;; CHECK-NEXT: (array.get_u $array |
|
105 | 143 | ;; CHECK-NEXT: (drop |
106 | 144 | ;; CHECK-NEXT: (string.encode_wtf16_array |
107 | 145 | ;; CHECK-NEXT: (local.get $ref) |
108 | | - ;; CHECK-NEXT: (local.get $array) |
| 146 | + ;; CHECK-NEXT: (local.get $array16) |
109 | 147 | ;; CHECK-NEXT: (i32.const 20) |
110 | 148 | ;; CHECK-NEXT: ) |
111 | 149 | ;; CHECK-NEXT: ) |
112 | 150 | ;; CHECK-NEXT: (drop |
113 | 151 | ;; CHECK-NEXT: (local.get $temp) |
114 | 152 | ;; CHECK-NEXT: ) |
115 | 153 | ;; 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)) |
117 | 155 | (local $temp i32) |
118 | 156 | ;; string.encode_*_array writes to an array, so an array get can't be moved |
119 | 157 | ;; past it. |
|
142 | 180 | (drop |
143 | 181 | (string.encode_wtf16_array |
144 | 182 | (local.get $ref) |
145 | | - (local.get $array) |
| 183 | + (local.get $array16) |
146 | 184 | (i32.const 20) |
147 | 185 | ) |
148 | 186 | ) |
|
0 commit comments