summaryrefslogtreecommitdiff
path: root/test/exception-handling.wast.fromBinary.noDebugInfo
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2021-11-08 22:44:29 -0800
committerGitHub <noreply@github.com>2021-11-08 22:44:29 -0800
commit1ad4e23342ef83b9210ce81bbf119047e08b6f3b (patch)
tree652dd07126bb7251cb7d3811fefb968ae684f173 /test/exception-handling.wast.fromBinary.noDebugInfo
parent31a5bf7ad7dbe30ec47766271ba13276117f98a0 (diff)
downloadbinaryen-1ad4e23342ef83b9210ce81bbf119047e08b6f3b.tar.gz
binaryen-1ad4e23342ef83b9210ce81bbf119047e08b6f3b.tar.bz2
binaryen-1ad4e23342ef83b9210ce81bbf119047e08b6f3b.zip
[EH] Improve catch validation (#4315)
This improves validation of `catch` bodies mostly by checking the validity of `pop`s. For every `catch` body: - Checks if its tag exists - If the tag's type is none: - Ensures there shouldn't be any `pop`s - If the tag's type is not none: - Checks if there's a single `pop` within the catch body - Checks if the tag type matches the `pop`'s type - Checks if the `pop`'s location is valid For every `catch_all` body: - Ensures there shuldn't be any `pop`s This uncovers several bugs related to `pop`s in existing tests, which this PR also fixes.
Diffstat (limited to 'test/exception-handling.wast.fromBinary.noDebugInfo')
-rw-r--r--test/exception-handling.wast.fromBinary.noDebugInfo32
1 files changed, 30 insertions, 2 deletions
diff --git a/test/exception-handling.wast.fromBinary.noDebugInfo b/test/exception-handling.wast.fromBinary.noDebugInfo
index 1a36aaa66..eb6b98bd8 100644
--- a/test/exception-handling.wast.fromBinary.noDebugInfo
+++ b/test/exception-handling.wast.fromBinary.noDebugInfo
@@ -3,10 +3,12 @@
(type $i32_=>_none (func (param i32)))
(type $i64_=>_none (func (param i64)))
(type $i32_i64_=>_none (func (param i32 i64)))
+ (type $anyref_=>_none (func (param anyref)))
(tag $tag$0 (param i32))
(tag $tag$1 (param i64))
(tag $tag$2 (param i32 i64))
- (tag $tag$3 (param))
+ (tag $tag$3 (param anyref))
+ (tag $tag$4 (param))
(func $0
(nop)
)
@@ -269,7 +271,7 @@
(do
(nop)
)
- (catch $tag$3
+ (catch $tag$4
(nop)
)
)
@@ -380,5 +382,31 @@
)
)
)
+ (func $5
+ (try $label$5
+ (do
+ (nop)
+ )
+ (catch $tag$0
+ (throw $tag$0
+ (if (result i32)
+ (pop i32)
+ (i32.const 0)
+ (i32.const 3)
+ )
+ )
+ )
+ )
+ (try $label$8
+ (do
+ (nop)
+ )
+ (catch $tag$3
+ (drop
+ (pop anyref)
+ )
+ )
+ )
+ )
)