summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/lit/passes/roundtrip.wast66
-rw-r--r--test/passes/translate-to-fuzz_all-features_metrics_noprint.txt72
2 files changed, 103 insertions, 35 deletions
diff --git a/test/lit/passes/roundtrip.wast b/test/lit/passes/roundtrip.wast
index 59e303eaf..8fb69cb7d 100644
--- a/test/lit/passes/roundtrip.wast
+++ b/test/lit/passes/roundtrip.wast
@@ -42,4 +42,70 @@
)
)
)
+
+ ;; CHECK: (func $string_view_casts (type $2) (param $x stringview_wtf8) (param $y stringview_wtf16) (param $z stringview_iter)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (ref.as_non_null
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (ref.as_non_null
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (ref.as_non_null
+ ;; CHECK-NEXT: (local.get $z)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $x)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $y)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (local.get $z)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $string_view_casts
+ ;; ref.cast of string views is not allowed in binaries: replace with
+ ;; ref.as_non_null, or remove if it is a no-op.
+ (param $x (ref null stringview_wtf8))
+ (param $y (ref null stringview_wtf16))
+ (param $z (ref null stringview_iter))
+ ;; Here we still need a cast to non-null.
+ (drop
+ (ref.cast (ref stringview_wtf8)
+ (local.get $x)
+ )
+ )
+ (drop
+ (ref.cast (ref stringview_wtf16)
+ (local.get $y)
+ )
+ )
+ (drop
+ (ref.cast (ref stringview_iter)
+ (local.get $z)
+ )
+ )
+ ;; Here we do not need the cast.
+ (drop
+ (ref.cast (ref null stringview_wtf8)
+ (local.get $x)
+ )
+ )
+ (drop
+ (ref.cast (ref null stringview_wtf16)
+ (local.get $y)
+ )
+ )
+ (drop
+ (ref.cast (ref null stringview_iter)
+ (local.get $z)
+ )
+ )
+ )
)
diff --git a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
index 20b145a95..4ead62655 100644
--- a/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
+++ b/test/passes/translate-to-fuzz_all-features_metrics_noprint.txt
@@ -1,45 +1,47 @@
total
- [exports] : 4
- [funcs] : 6
+ [exports] : 5
+ [funcs] : 7
[globals] : 14
[imports] : 5
[memories] : 1
[memory-data] : 20
- [table-data] : 1
+ [table-data] : 2
[tables] : 1
[tags] : 1
- [total] : 533
- [vars] : 24
- ArrayNew : 11
- ArrayNewFixed : 2
- AtomicFence : 1
- Binary : 79
- Block : 57
- Break : 6
- Call : 8
- Const : 137
- Drop : 1
- GlobalGet : 28
- GlobalSet : 28
- If : 15
+ [total] : 467
+ [vars] : 40
+ ArrayGet : 1
+ ArrayLen : 1
+ ArrayNew : 6
+ ArrayNewFixed : 1
+ Binary : 67
+ Block : 44
+ Break : 5
+ Call : 21
+ Const : 106
+ Drop : 7
+ GlobalGet : 20
+ GlobalSet : 18
+ If : 14
Load : 17
- LocalGet : 40
- LocalSet : 23
- Loop : 9
- Nop : 4
+ LocalGet : 45
+ LocalSet : 28
+ Loop : 3
+ MemoryFill : 1
+ Nop : 5
RefAs : 1
- RefFunc : 2
- RefI31 : 2
- RefIsNull : 1
- RefNull : 5
- Return : 2
- SIMDExtract : 2
- Select : 1
- Store : 2
- StringConst : 4
+ RefCast : 1
+ RefEq : 1
+ RefFunc : 3
+ RefI31 : 4
+ RefNull : 3
+ Return : 3
+ Select : 2
+ Store : 1
+ StringConst : 3
+ StringEncode : 1
StringEq : 1
- StructGet : 1
- StructNew : 9
- TupleMake : 4
- Unary : 15
- Unreachable : 15
+ StructNew : 5
+ TupleMake : 5
+ Unary : 13
+ Unreachable : 10