Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
add test
  • Loading branch information
tlively committed May 15, 2024
commit 9f046a24f86fa0c67344d4fd6a376dfecfb5eb4c
54 changes: 46 additions & 8 deletions test/lit/passes/simplify-locals-strings.wast
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
;; CHECK: (type $array16 (sub (array (mut i16))))
(type $array16 (sub (array (mut i16))))

;; CHECK: (func $no-new-past-store-gc (type $2) (param $array (ref $array)) (param $array16 (ref $array16))
;; CHECK: (func $no-new-past-store (type $2) (param $array (ref $array)) (param $array16 (ref $array16))
;; CHECK-NEXT: (local $temp stringref)
;; CHECK-NEXT: (local.set $temp
;; CHECK-NEXT: (string.new_lossy_utf8_array
Expand All @@ -29,7 +29,7 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: (local.set $temp
;; CHECK-NEXT: (string.new_wtf16_array
;; CHECK-NEXT: (local.get $array)
;; CHECK-NEXT: (local.get $array16)
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: (i32.const 2)
;; CHECK-NEXT: )
Expand All @@ -43,7 +43,7 @@
;; CHECK-NEXT: (local.get $temp)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $no-new-past-store-gc (param $array (ref $array)) (param $array16 (ref $array16))
(func $no-new-past-store (param $array (ref $array)) (param $array16 (ref $array16))
(local $temp stringref)
;; A string.new_***_array cannot be moved past a GC store.
(local.set $temp
Expand All @@ -63,7 +63,7 @@
)
(local.set $temp
(string.new_wtf16_array
(local.get $array)
(local.get $array16)
(i32.const 1)
(i32.const 2)
)
Expand All @@ -78,7 +78,45 @@
)
)

;; CHECK: (func $no-load-past-encode-gc (type $3) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
;; CHECK: (func $yes-new-past-load (type $3) (param $array16 (ref $array16))
;; CHECK-NEXT: (local $temp stringref)
;; CHECK-NEXT: (nop)
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (array.get_u $array16
;; CHECK-NEXT: (local.get $array16)
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (string.new_wtf16_array
;; CHECK-NEXT: (local.get $array16)
;; CHECK-NEXT: (i32.const 1)
;; CHECK-NEXT: (i32.const 2)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $yes-new-past-load (param $array16 (ref $array16))
(local $temp stringref)
;; A string.new can be moved past an array load.
(local.set $temp
(string.new_wtf16_array
(local.get $array16)
(i32.const 1)
(i32.const 2)
)
)
(drop
(array.get $array16
(local.get $array16)
(i32.const 0)
)
)
(drop
(local.get $temp)
)
)

;; CHECK: (func $no-load-past-encode (type $4) (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
;; CHECK-NEXT: (local $temp i32)
;; CHECK-NEXT: (local.set $temp
;; CHECK-NEXT: (array.get_u $array
Expand All @@ -105,15 +143,15 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (string.encode_wtf16_array
;; CHECK-NEXT: (local.get $ref)
;; CHECK-NEXT: (local.get $array)
;; CHECK-NEXT: (local.get $array16)
;; CHECK-NEXT: (i32.const 20)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (local.get $temp)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $no-load-past-encode-gc (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
(func $no-load-past-encode (param $ref stringref) (param $array (ref $array)) (param $array16 (ref $array16))
(local $temp i32)
;; string.encode_*_array writes to an array, so an array get can't be moved
;; past it.
Expand Down Expand Up @@ -142,7 +180,7 @@
(drop
(string.encode_wtf16_array
(local.get $ref)
(local.get $array)
(local.get $array16)
(i32.const 20)
)
)
Expand Down