diff options
author | Thomas Lively <tlively@google.com> | 2024-01-29 16:03:31 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-29 16:03:31 -0800 |
commit | c0046ad0e44d39f7ef33fa6a401a0d9d5a34a578 (patch) | |
tree | 29437ef5ff67a2a51b8a2566cad228f2e3c7ade7 /test | |
parent | 9a31d7e351910191af2c00a9834bcb2e81a28d12 (diff) | |
download | binaryen-c0046ad0e44d39f7ef33fa6a401a0d9d5a34a578.tar.gz binaryen-c0046ad0e44d39f7ef33fa6a401a0d9d5a34a578.tar.bz2 binaryen-c0046ad0e44d39f7ef33fa6a401a0d9d5a34a578.zip |
[Parser] Parse local.set and global.set of tuple values correctly (#6250)
These instructions always pop a single value, except when tuples are involved,
in which case they need special handling to know how many values to pop.
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/wat-kitchen-sink.wast | 57 |
1 files changed, 50 insertions, 7 deletions
diff --git a/test/lit/wat-kitchen-sink.wast b/test/lit/wat-kitchen-sink.wast index bbb8146db..eff635237 100644 --- a/test/lit/wat-kitchen-sink.wast +++ b/test/lit/wat-kitchen-sink.wast @@ -296,6 +296,12 @@ ;; CHECK: (global $i32 i32 (i32.const 42)) (global $i32 i32 i32.const 42) + ;; CHECK: (global $pair (mut (tuple i32 i64)) (tuple.make 2 + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i64.const 1) + ;; CHECK-NEXT: )) + (global $pair (mut (tuple i32 i64)) (tuple.make 2 (i32.const 0) (i64.const 1))) + ;; memories ;; CHECK: (memory $mem 1 1 shared) (memory $mem 1 1 shared) @@ -457,12 +463,6 @@ ;; CHECK-NEXT: ) (func $f4 (type 18) (local i32 i64) (local $l f32)) - ;; CHECK: (func $tuple-locals (type $void) - ;; CHECK-NEXT: (local $0 (tuple i32 i32)) - ;; CHECK-NEXT: (nop) - ;; CHECK-NEXT: ) - (func $tuple-locals (local (tuple i32 i32))) - ;; CHECK: (func $nop-skate (type $void) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (nop) @@ -930,6 +930,30 @@ drop ) + ;; CHECK: (func $tuple-locals (type $void) + ;; CHECK-NEXT: (local $0 (tuple i32 i64)) + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (local.tee $0 + ;; CHECK-NEXT: (local.get $0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $0 + ;; CHECK-NEXT: (tuple.make 2 + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (i64.const 2) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $tuple-locals + (local (tuple i32 i64)) + local.get 0 + local.tee 0 + local.set 0 + i32.const 1 + i64.const 2 + local.set 0 + ) + ;; CHECK: (func $block (type $void) ;; CHECK-NEXT: (nop) ;; CHECK-NEXT: (block $l @@ -3064,6 +3088,25 @@ global.set 4 ) + ;; CHECK: (func $tuple-globals (type $void) + ;; CHECK-NEXT: (global.set $pair + ;; CHECK-NEXT: (global.get $pair) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (global.set $pair + ;; CHECK-NEXT: (tuple.make 2 + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (i64.const 2) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $tuple-globals + global.get $pair + global.set $pair + i32.const 1 + i64.const 2 + global.set $pair + ) + ;; CHECK: (func $load (type $4) (param $0 i32) (param $1 i64) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (i32.load $mimport$0 offset=42 @@ -3525,7 +3568,7 @@ (func $ref-func ref.func $ref-func drop - ref.func 152 + ref.func 153 drop ) |