diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/passes/simplify-locals-gc-nn.wast | 69 |
1 files changed, 68 insertions, 1 deletions
diff --git a/test/lit/passes/simplify-locals-gc-nn.wast b/test/lit/passes/simplify-locals-gc-nn.wast index eec97a4d4..9d75b3d80 100644 --- a/test/lit/passes/simplify-locals-gc-nn.wast +++ b/test/lit/passes/simplify-locals-gc-nn.wast @@ -87,4 +87,71 @@ ) ) ) - )) + ) + + ;; CHECK: (func $test-nested-nn + ;; CHECK-NEXT: (local $nullable anyref) + ;; CHECK-NEXT: (local $nn (ref any)) + ;; CHECK-NEXT: (local.set $nullable + ;; CHECK-NEXT: (block $block (result (ref any)) + ;; CHECK-NEXT: (local.set $nn + ;; CHECK-NEXT: (ref.as_non_null + ;; CHECK-NEXT: (ref.null any) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (ref.as_non_null + ;; CHECK-NEXT: (ref.null any) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (try $try + ;; CHECK-NEXT: (do + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (local.get $nullable) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (catch_all + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (local.get $nullable) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (local.get $nn) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $test-nested-nn + ;; As above, the set we want to move is nullable, but now it has a nested + ;; value that is a non-nullable set. That should also prevent us from + ;; moving it. + (local $nullable (ref null any)) + (local $nn (ref any)) + (local.set $nullable + (block (result (ref any)) + (local.set $nn + (ref.as_non_null + (ref.null any) + ) + ) + (ref.as_non_null + (ref.null any) + ) + ) + ) + (try + (do + (drop + (local.get $nullable) + ) + ) + (catch_all + (drop + (local.get $nullable) + ) + (drop + (local.get $nn) + ) + ) + ) + ) +) |