summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2020-09-11 13:34:01 -0700
committerGitHub <noreply@github.com>2020-09-11 13:34:01 -0700
commit8ec8a0bbfb039852b60f121fb23c439228b9fe36 (patch)
tree7987dcb2af2141dfc709cc8b761a69fd14f79798
parentdbff242b3bc1fdaec15140cc48a537d7a497fb48 (diff)
downloadbinaryen-8ec8a0bbfb039852b60f121fb23c439228b9fe36.tar.gz
binaryen-8ec8a0bbfb039852b60f121fb23c439228b9fe36.tar.bz2
binaryen-8ec8a0bbfb039852b60f121fb23c439228b9fe36.zip
Update Pop text format to handle tuples (#3116)
Previously Pops were printed as ({type}.pop), and if the popped type was a tuple, something like ((i32, i64).pop) would get printed. However, the parser didn't support pops of anything besides single basic types. This PR changes the text format to be (pop <type>*) and adds support for parsing pops of tuples of basic types. The text format change is designed to make parsing simpler. This change is necessary for writing Poppy IR tests (see #3059) that contain break or return instructions that consume multiple values, since in Poppy IR that requires tuple-typed pops.
-rwxr-xr-xscripts/gen-s-parser.py12
-rw-r--r--src/gen-s-parser.inc94
-rw-r--r--src/passes/Print.cpp7
-rw-r--r--src/wasm-s-parser.h2
-rw-r--r--src/wasm/wasm-s-parser.cpp8
-rw-r--r--test/binaryen.js/exception-handling.js.txt2
-rw-r--r--test/binaryen.js/kitchen-sink.js.txt36
-rw-r--r--test/example/c-api-kitchen-sink.c8
-rw-r--r--test/example/c-api-kitchen-sink.txt19
-rw-r--r--test/exception-handling.wast6
-rw-r--r--test/exception-handling.wast.from-wast6
-rw-r--r--test/exception-handling.wast.fromBinary8
-rw-r--r--test/exception-handling.wast.fromBinary.noDebugInfo8
-rw-r--r--test/passes/Os_print-stack-ir_all-features.txt (renamed from test/passes/Os_print-stack-ir.txt)18
-rw-r--r--test/passes/Os_print-stack-ir_all-features.wast (renamed from test/passes/Os_print-stack-ir.wast)11
-rw-r--r--test/passes/code-pushing_all-features.txt4
-rw-r--r--test/passes/code-pushing_all-features.wast4
-rw-r--r--test/passes/dce_all-features.txt2
-rw-r--r--test/passes/dce_all-features.wast2
-rw-r--r--test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt2
-rw-r--r--test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast2
-rw-r--r--test/passes/instrument-locals_all-features.txt6
-rw-r--r--test/passes/instrument-locals_all-features.wast7
-rw-r--r--test/passes/optimize-instructions_all-features.txt2
-rw-r--r--test/passes/optimize-instructions_all-features.wast2
-rw-r--r--test/passes/remove-unused-module-elements_all-features.txt2
-rw-r--r--test/passes/remove-unused-module-elements_all-features.wast2
-rw-r--r--test/passes/remove-unused-names_code-folding_all-features.txt10
-rw-r--r--test/passes/remove-unused-names_code-folding_all-features.wast12
-rw-r--r--test/passes/remove-unused-names_optimize-instructions_all-features.txt12
-rw-r--r--test/passes/remove-unused-names_optimize-instructions_all-features.wast12
-rw-r--r--test/passes/rse_all-features.txt14
-rw-r--r--test/passes/rse_all-features.wast14
-rw-r--r--test/passes/simplify-locals_all-features.txt8
-rw-r--r--test/passes/simplify-locals_all-features.wast12
-rw-r--r--test/passes/vacuum_all-features.txt2
-rw-r--r--test/passes/vacuum_all-features.wast8
-rw-r--r--test/reference-types.wast22
-rw-r--r--test/reference-types.wast.from-wast18
-rw-r--r--test/reference-types.wast.fromBinary18
-rw-r--r--test/reference-types.wast.fromBinary.noDebugInfo18
-rw-r--r--test/spec/exception-handling.wast22
-rw-r--r--test/try-body-multiple-insts.wasm.fromBinary2
-rw-r--r--test/unit/test_poppy_validation.py22
44 files changed, 236 insertions, 272 deletions
diff --git a/scripts/gen-s-parser.py b/scripts/gen-s-parser.py
index 5e49c8614..db0dbc66f 100755
--- a/scripts/gen-s-parser.py
+++ b/scripts/gen-s-parser.py
@@ -43,15 +43,6 @@ instructions = [
("data.drop", "makeDataDrop(s)"),
("memory.copy", "makeMemoryCopy(s)"),
("memory.fill", "makeMemoryFill(s)"),
- ("i32.pop", "makePop(Type::i32)"),
- ("i64.pop", "makePop(Type::i64)"),
- ("f32.pop", "makePop(Type::f32)"),
- ("f64.pop", "makePop(Type::f64)"),
- ("v128.pop", "makePop(Type::v128)"),
- ("funcref.pop", "makePop(Type::funcref)"),
- ("externref.pop", "makePop(Type::externref)"),
- ("exnref.pop", "makePop(Type::exnref)"),
- ("anyref.pop", "makePop(Type::anyref)"),
("i32.load", "makeLoad(s, Type::i32, /*isAtomic=*/false)"),
("i64.load", "makeLoad(s, Type::i64, /*isAtomic=*/false)"),
("f32.load", "makeLoad(s, Type::f32, /*isAtomic=*/false)"),
@@ -503,7 +494,8 @@ instructions = [
("br_on_exn", "makeBrOnExn(s)"),
# Multivalue pseudoinstructions
("tuple.make", "makeTupleMake(s)"),
- ("tuple.extract", "makeTupleExtract(s)")
+ ("tuple.extract", "makeTupleExtract(s)"),
+ ("pop", "makePop(s)")
]
diff --git a/src/gen-s-parser.inc b/src/gen-s-parser.inc
index 4b02b09c2..6d9160c88 100644
--- a/src/gen-s-parser.inc
+++ b/src/gen-s-parser.inc
@@ -8,21 +8,13 @@ char op[27] = {'\0'};
strncpy(op, s[0]->c_str(), 26);
switch (op[0]) {
case 'a': {
- switch (op[1]) {
+ switch (op[7]) {
+ case 'f':
+ if (strcmp(op, "atomic.fence") == 0) { return makeAtomicFence(s); }
+ goto parse_error;
case 'n':
- if (strcmp(op, "anyref.pop") == 0) { return makePop(Type::anyref); }
+ if (strcmp(op, "atomic.notify") == 0) { return makeAtomicNotify(s); }
goto parse_error;
- case 't': {
- switch (op[7]) {
- case 'f':
- if (strcmp(op, "atomic.fence") == 0) { return makeAtomicFence(s); }
- goto parse_error;
- case 'n':
- if (strcmp(op, "atomic.notify") == 0) { return makeAtomicNotify(s); }
- goto parse_error;
- default: goto parse_error;
- }
- }
default: goto parse_error;
}
}
@@ -78,25 +70,9 @@ switch (op[0]) {
default: goto parse_error;
}
}
- case 'e': {
- switch (op[1]) {
- case 'l':
- if (strcmp(op, "else") == 0) { return makeThenOrElse(s); }
- goto parse_error;
- case 'x': {
- switch (op[2]) {
- case 'n':
- if (strcmp(op, "exnref.pop") == 0) { return makePop(Type::exnref); }
- goto parse_error;
- case 't':
- if (strcmp(op, "externref.pop") == 0) { return makePop(Type::externref); }
- goto parse_error;
- default: goto parse_error;
- }
- }
- default: goto parse_error;
- }
- }
+ case 'e':
+ if (strcmp(op, "else") == 0) { return makeThenOrElse(s); }
+ goto parse_error;
case 'f': {
switch (op[1]) {
case '3': {
@@ -235,9 +211,6 @@ switch (op[0]) {
default: goto parse_error;
}
}
- case 'p':
- if (strcmp(op, "f32.pop") == 0) { return makePop(Type::f32); }
- goto parse_error;
case 'r':
if (strcmp(op, "f32.reinterpret_i32") == 0) { return makeUnary(s, UnaryOp::ReinterpretInt32); }
goto parse_error;
@@ -536,17 +509,9 @@ switch (op[0]) {
default: goto parse_error;
}
}
- case 'p': {
- switch (op[5]) {
- case 'o':
- if (strcmp(op, "f64.pop") == 0) { return makePop(Type::f64); }
- goto parse_error;
- case 'r':
- if (strcmp(op, "f64.promote_f32") == 0) { return makeUnary(s, UnaryOp::PromoteFloat32); }
- goto parse_error;
- default: goto parse_error;
- }
- }
+ case 'p':
+ if (strcmp(op, "f64.promote_f32") == 0) { return makeUnary(s, UnaryOp::PromoteFloat32); }
+ goto parse_error;
case 'r':
if (strcmp(op, "f64.reinterpret_i64") == 0) { return makeUnary(s, UnaryOp::ReinterpretInt64); }
goto parse_error;
@@ -717,9 +682,6 @@ switch (op[0]) {
default: goto parse_error;
}
}
- case 'u':
- if (strcmp(op, "funcref.pop") == 0) { return makePop(Type::funcref); }
- goto parse_error;
default: goto parse_error;
}
}
@@ -1306,17 +1268,9 @@ switch (op[0]) {
case 'o':
if (strcmp(op, "i32.or") == 0) { return makeBinary(s, BinaryOp::OrInt32); }
goto parse_error;
- case 'p': {
- switch (op[7]) {
- case '\0':
- if (strcmp(op, "i32.pop") == 0) { return makePop(Type::i32); }
- goto parse_error;
- case 'c':
- if (strcmp(op, "i32.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt32); }
- goto parse_error;
- default: goto parse_error;
- }
- }
+ case 'p':
+ if (strcmp(op, "i32.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt32); }
+ goto parse_error;
case 'r': {
switch (op[5]) {
case 'e': {
@@ -2056,17 +2010,9 @@ switch (op[0]) {
case 'o':
if (strcmp(op, "i64.or") == 0) { return makeBinary(s, BinaryOp::OrInt64); }
goto parse_error;
- case 'p': {
- switch (op[7]) {
- case '\0':
- if (strcmp(op, "i64.pop") == 0) { return makePop(Type::i64); }
- goto parse_error;
- case 'c':
- if (strcmp(op, "i64.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt64); }
- goto parse_error;
- default: goto parse_error;
- }
- }
+ case 'p':
+ if (strcmp(op, "i64.popcnt") == 0) { return makeUnary(s, UnaryOp::PopcntInt64); }
+ goto parse_error;
case 'r': {
switch (op[5]) {
case 'e': {
@@ -2571,6 +2517,9 @@ switch (op[0]) {
case 'n':
if (strcmp(op, "nop") == 0) { return makeNop(); }
goto parse_error;
+ case 'p':
+ if (strcmp(op, "pop") == 0) { return makePop(s); }
+ goto parse_error;
case 'r': {
switch (op[2]) {
case 'f': {
@@ -2696,9 +2645,6 @@ switch (op[0]) {
case 'o':
if (strcmp(op, "v128.or") == 0) { return makeBinary(s, BinaryOp::OrVec128); }
goto parse_error;
- case 'p':
- if (strcmp(op, "v128.pop") == 0) { return makePop(Type::v128); }
- goto parse_error;
case 's':
if (strcmp(op, "v128.store") == 0) { return makeStore(s, Type::v128, /*isAtomic=*/false); }
goto parse_error;
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index 04fcdc0b3..f4131db37 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -1469,8 +1469,11 @@ struct PrintExpressionContents
void visitNop(Nop* curr) { printMinor(o, "nop"); }
void visitUnreachable(Unreachable* curr) { printMinor(o, "unreachable"); }
void visitPop(Pop* curr) {
- prepareColor(o) << curr->type;
- o << ".pop";
+ prepareColor(o) << "pop";
+ for (auto type : curr->type) {
+ assert(type.isBasic() && "TODO: print and parse compound types");
+ o << " " << type;
+ }
restoreNormalColor(o);
}
void visitTupleMake(TupleMake* curr) { printMedium(o, "tuple.make"); }
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index d77062e33..a4559012d 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -217,7 +217,7 @@ private:
Expression* makeMemoryCopy(Element& s);
Expression* makeMemoryFill(Element& s);
Expression* makePush(Element& s);
- Expression* makePop(Type type);
+ Expression* makePop(Element& s);
Expression* makeIf(Element& s);
Expression* makeMaybeBlock(Element& s, size_t i, Type type);
Expression* makeLoop(Element& s);
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index e4a33c034..97bfe55f9 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -1620,9 +1620,13 @@ Expression* SExpressionWasmBuilder::makeMemoryFill(Element& s) {
return ret;
}
-Expression* SExpressionWasmBuilder::makePop(Type type) {
+Expression* SExpressionWasmBuilder::makePop(Element& s) {
auto ret = allocator.alloc<Pop>();
- ret->type = type;
+ std::vector<Type> types;
+ for (size_t i = 1; i < s.size(); ++i) {
+ types.push_back(stringToType(s[i]->str()));
+ }
+ ret->type = Type(types);
ret->finalize();
return ret;
}
diff --git a/test/binaryen.js/exception-handling.js.txt b/test/binaryen.js/exception-handling.js.txt
index d590d0b4b..21eb9a70d 100644
--- a/test/binaryen.js/exception-handling.js.txt
+++ b/test/binaryen.js/exception-handling.js.txt
@@ -12,7 +12,7 @@
)
(catch
(local.set $0
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $l (result i32)
diff --git a/test/binaryen.js/kitchen-sink.js.txt b/test/binaryen.js/kitchen-sink.js.txt
index 52b15f8ff..d31e341b2 100644
--- a/test/binaryen.js/kitchen-sink.js.txt
+++ b/test/binaryen.js/kitchen-sink.js.txt
@@ -1844,7 +1844,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
(catch
(local.set $5
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $try-block (result i32)
@@ -1896,28 +1896,28 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
- (i32.pop)
+ (pop i32)
)
(drop
- (i64.pop)
+ (pop i64)
)
(drop
- (f32.pop)
+ (pop f32)
)
(drop
- (f64.pop)
+ (pop f64)
)
(drop
- (v128.pop)
+ (pop v128)
)
(drop
- (externref.pop)
+ (pop externref)
)
(drop
- (funcref.pop)
+ (pop funcref)
)
(drop
- (exnref.pop)
+ (pop exnref)
)
(nop)
(unreachable)
@@ -3684,7 +3684,7 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
(catch
(local.set $5
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $try-block (result i32)
@@ -3736,28 +3736,28 @@ getExpressionInfo(tuple[3])={"id":14,"type":5,"value":3.7}
)
)
(drop
- (i32.pop)
+ (pop i32)
)
(drop
- (i64.pop)
+ (pop i64)
)
(drop
- (f32.pop)
+ (pop f32)
)
(drop
- (f64.pop)
+ (pop f64)
)
(drop
- (v128.pop)
+ (pop v128)
)
(drop
- (externref.pop)
+ (pop externref)
)
(drop
- (funcref.pop)
+ (pop funcref)
)
(drop
- (exnref.pop)
+ (pop exnref)
)
(nop)
(unreachable)
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index e242cfc8e..e6450db6c 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -723,8 +723,11 @@ void test_core() {
BinaryenRefIsNull(module, externrefExpr),
BinaryenRefIsNull(module, funcrefExpr),
BinaryenRefIsNull(module, exnrefExpr),
- BinaryenSelect(
- module, temp10, BinaryenRefNull(module, BinaryenTypeFuncref()), BinaryenRefFunc(module, "kitchen()sinker"), BinaryenTypeFuncref()),
+ BinaryenSelect(module,
+ temp10,
+ BinaryenRefNull(module, BinaryenTypeFuncref()),
+ BinaryenRefFunc(module, "kitchen()sinker"),
+ BinaryenTypeFuncref()),
// Exception handling
BinaryenTry(module, tryBody, catchBody),
// Atomics
@@ -752,6 +755,7 @@ void test_core() {
BinaryenPop(module, BinaryenTypeFuncref()),
BinaryenPop(module, BinaryenTypeExternref()),
BinaryenPop(module, BinaryenTypeExnref()),
+ BinaryenPop(module, iIfF),
// TODO: Host
BinaryenNop(module),
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index c5958ff1d..d4ff78dd2 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -1782,7 +1782,7 @@ BinaryenFeatureAll: 2047
)
(catch
(local.set $5
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $try-block (result i32)
@@ -1834,25 +1834,28 @@ BinaryenFeatureAll: 2047
)
)
(drop
- (i32.pop)
+ (pop i32)
)
(drop
- (i64.pop)
+ (pop i64)
)
(drop
- (f32.pop)
+ (pop f32)
)
(drop
- (f64.pop)
+ (pop f64)
)
(drop
- (funcref.pop)
+ (pop funcref)
)
(drop
- (externref.pop)
+ (pop externref)
)
(drop
- (exnref.pop)
+ (pop exnref)
+ )
+ (drop
+ (pop i32 i64 f32 f64)
)
(nop)
(unreachable)
diff --git a/test/exception-handling.wast b/test/exception-handling.wast
index 3dcff41e4..862b82d88 100644
--- a/test/exception-handling.wast
+++ b/test/exception-handling.wast
@@ -17,7 +17,7 @@
(catch
;; Multi-value is not available yet, so block can't take a value from
;; stack. So this uses locals for now.
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(drop
(block $l0 (result i32)
(rethrow
@@ -42,7 +42,7 @@
(try
(do)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
@@ -53,7 +53,7 @@
(call $bar)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(call $foo)
(call $bar)
)
diff --git a/test/exception-handling.wast.from-wast b/test/exception-handling.wast.from-wast
index a5fb02d56..9fd06c0b1 100644
--- a/test/exception-handling.wast.from-wast
+++ b/test/exception-handling.wast.from-wast
@@ -24,7 +24,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $l0 (result i32)
@@ -53,7 +53,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -64,7 +64,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(call $foo)
(call $bar)
diff --git a/test/exception-handling.wast.fromBinary b/test/exception-handling.wast.fromBinary
index 24af9294e..7add5b33e 100644
--- a/test/exception-handling.wast.fromBinary
+++ b/test/exception-handling.wast.fromBinary
@@ -24,7 +24,7 @@
)
(catch
(local.set $0
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $label$3 (result i32)
@@ -44,7 +44,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(br $label$4)
)
@@ -56,7 +56,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -67,7 +67,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(call $foo)
(call $bar)
diff --git a/test/exception-handling.wast.fromBinary.noDebugInfo b/test/exception-handling.wast.fromBinary.noDebugInfo
index 69abafdbf..0b5a7d896 100644
--- a/test/exception-handling.wast.fromBinary.noDebugInfo
+++ b/test/exception-handling.wast.fromBinary.noDebugInfo
@@ -24,7 +24,7 @@
)
(catch
(local.set $0
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $label$3 (result i32)
@@ -44,7 +44,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(br $label$4)
)
@@ -56,7 +56,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -67,7 +67,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(call $1)
(call $2)
diff --git a/test/passes/Os_print-stack-ir.txt b/test/passes/Os_print-stack-ir_all-features.txt
index 9fbde2f4a..7e880985e 100644
--- a/test/passes/Os_print-stack-ir.txt
+++ b/test/passes/Os_print-stack-ir_all-features.txt
@@ -41,6 +41,7 @@
)
(module
(type $none_=>_i32 (func (result i32)))
+ (type $none_=>_i32_f64 (func (result i32 f64)))
(type $none_=>_i64 (func (result i64)))
(type $none_=>_f32 (func (result f32)))
(type $none_=>_f64 (func (result f64)))
@@ -48,6 +49,7 @@
(export "ppi64" (func $1))
(export "ppf32" (func $2))
(export "ppf64" (func $3))
+ (export "pair" (func $4))
(func $0 (result i32)
)
@@ -60,9 +62,13 @@
(func $3 (result f64)
)
+ (func $4 (result i32 f64)
+
+ )
)
(module
(type $none_=>_i32 (func (result i32)))
+ (type $none_=>_i32_f64 (func (result i32 f64)))
(type $none_=>_i64 (func (result i64)))
(type $none_=>_f32 (func (result f32)))
(type $none_=>_f64 (func (result f64)))
@@ -70,16 +76,20 @@
(export "ppi64" (func $1))
(export "ppf32" (func $2))
(export "ppf64" (func $3))
+ (export "pair" (func $4))
(func $0 (; has Stack IR ;) (result i32)
- (i32.pop)
+ (pop i32)
)
(func $1 (; has Stack IR ;) (result i64)
- (i64.pop)
+ (pop i64)
)
(func $2 (; has Stack IR ;) (result f32)
- (f32.pop)
+ (pop f32)
)
(func $3 (; has Stack IR ;) (result f64)
- (f64.pop)
+ (pop f64)
+ )
+ (func $4 (; has Stack IR ;) (result i32 f64)
+ (pop i32 f64)
)
)
diff --git a/test/passes/Os_print-stack-ir.wast b/test/passes/Os_print-stack-ir_all-features.wast
index 6944a3207..8521c4047 100644
--- a/test/passes/Os_print-stack-ir.wast
+++ b/test/passes/Os_print-stack-ir_all-features.wast
@@ -19,15 +19,18 @@
;; used alone. This just tests we can emit them/handle them in the
;; optimizer.
(func "ppi32" (result i32)
- (i32.pop)
+ (pop i32)
)
(func "ppi64" (result i64)
- (i64.pop)
+ (pop i64)
)
(func "ppf32" (result f32)
- (f32.pop)
+ (pop f32)
)
(func "ppf64" (result f64)
- (f64.pop)
+ (pop f64)
+ )
+ (func "pair" (result i32 f64)
+ (pop i32 f64)
)
)
diff --git a/test/passes/code-pushing_all-features.txt b/test/passes/code-pushing_all-features.txt
index 90215ff2f..30eb7e458 100644
--- a/test/passes/code-pushing_all-features.txt
+++ b/test/passes/code-pushing_all-features.txt
@@ -51,7 +51,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -83,7 +83,7 @@
)
(catch
(rethrow
- (exnref.pop)
+ (pop exnref)
)
)
)
diff --git a/test/passes/code-pushing_all-features.wast b/test/passes/code-pushing_all-features.wast
index 725ddf010..b67b98d7e 100644
--- a/test/passes/code-pushing_all-features.wast
+++ b/test/passes/code-pushing_all-features.wast
@@ -36,7 +36,7 @@
(throw $e (i32.const 0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
(drop (i32.const 1))
@@ -56,7 +56,7 @@
(throw $e (i32.const 0))
)
(catch
- (rethrow (exnref.pop))
+ (rethrow (pop exnref))
)
)
(drop (i32.const 1))
diff --git a/test/passes/dce_all-features.txt b/test/passes/dce_all-features.txt
index c5094b301..4b76b2f12 100644
--- a/test/passes/dce_all-features.txt
+++ b/test/passes/dce_all-features.txt
@@ -514,7 +514,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
diff --git a/test/passes/dce_all-features.wast b/test/passes/dce_all-features.wast
index 78324b941..bf0c188d0 100644
--- a/test/passes/dce_all-features.wast
+++ b/test/passes/dce_all-features.wast
@@ -748,7 +748,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
diff --git a/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt b/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt
index ada155fd6..28348883a 100644
--- a/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt
+++ b/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.txt
@@ -33,7 +33,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $l0 (result i32)
diff --git a/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast b/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast
index 6a53b2283..e2bbfff2d 100644
--- a/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast
+++ b/test/passes/generate-stack-ir_optimize-stack-ir_print-stack-ir_all-features.wast
@@ -7,7 +7,7 @@
(throw $e0 (i32.const 0))
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(drop
(block $l0 (result i32)
(rethrow
diff --git a/test/passes/instrument-locals_all-features.txt b/test/passes/instrument-locals_all-features.txt
index cb46cb3ef..8943c2d56 100644
--- a/test/passes/instrument-locals_all-features.txt
+++ b/test/passes/instrument-locals_all-features.txt
@@ -237,13 +237,13 @@
)
)
(local.set $F
- (funcref.pop)
+ (pop funcref)
)
(local.set $X
- (externref.pop)
+ (pop externref)
)
(local.set $E
- (exnref.pop)
+ (pop exnref)
)
(drop
(call $get_v128
diff --git a/test/passes/instrument-locals_all-features.wast b/test/passes/instrument-locals_all-features.wast
index 2110ce7db..4b396a79b 100644
--- a/test/passes/instrument-locals_all-features.wast
+++ b/test/passes/instrument-locals_all-features.wast
@@ -42,9 +42,9 @@
(local.set $E (local.get $E))
;; Pop instructions should not be instrumented
- (local.set $F (funcref.pop))
- (local.set $X (externref.pop))
- (local.set $E (exnref.pop))
+ (local.set $F (pop funcref))
+ (local.set $X (pop externref))
+ (local.set $E (pop exnref))
;; Add new instructions here so expected output doesn't change too much, it
;; depends on order of instructions in this file.
@@ -52,4 +52,3 @@
(local.set $S (v128.const i32x4 0x00000000 0x00000001 0x00000002 0x00000003))
)
)
-
diff --git a/test/passes/optimize-instructions_all-features.txt b/test/passes/optimize-instructions_all-features.txt
index 6ff608ab7..f223cb838 100644
--- a/test/passes/optimize-instructions_all-features.txt
+++ b/test/passes/optimize-instructions_all-features.txt
@@ -225,7 +225,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.const 456)
)
diff --git a/test/passes/optimize-instructions_all-features.wast b/test/passes/optimize-instructions_all-features.wast
index aafb6c9d8..6e106ad1b 100644
--- a/test/passes/optimize-instructions_all-features.wast
+++ b/test/passes/optimize-instructions_all-features.wast
@@ -249,7 +249,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.eqz
(i32.eqz
diff --git a/test/passes/remove-unused-module-elements_all-features.txt b/test/passes/remove-unused-module-elements_all-features.txt
index b04e00a5e..47f02aeb5 100644
--- a/test/passes/remove-unused-module-elements_all-features.txt
+++ b/test/passes/remove-unused-module-elements_all-features.txt
@@ -297,7 +297,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(drop
(block $l0 (result i32)
diff --git a/test/passes/remove-unused-module-elements_all-features.wast b/test/passes/remove-unused-module-elements_all-features.wast
index edbb5aab2..265ef0e5f 100644
--- a/test/passes/remove-unused-module-elements_all-features.wast
+++ b/test/passes/remove-unused-module-elements_all-features.wast
@@ -276,7 +276,7 @@
(throw $e-throw (i32.const 0))
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(drop
(block $l0 (result i32)
(rethrow
diff --git a/test/passes/remove-unused-names_code-folding_all-features.txt b/test/passes/remove-unused-names_code-folding_all-features.txt
index 946545144..c9e9b90e7 100644
--- a/test/passes/remove-unused-names_code-folding_all-features.txt
+++ b/test/passes/remove-unused-names_code-folding_all-features.txt
@@ -1721,7 +1721,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(br $folding-inner0)
)
@@ -1729,7 +1729,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(br $folding-inner0)
)
@@ -1804,7 +1804,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(call $foo)
(call $foo)
@@ -1823,7 +1823,7 @@
(try
(do
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(call $foo)
(call $foo)
@@ -1832,7 +1832,7 @@
)
(catch
(local.set $exn
- (exnref.pop)
+ (pop exnref)
)
(call $foo)
(call $foo)
diff --git a/test/passes/remove-unused-names_code-folding_all-features.wast b/test/passes/remove-unused-names_code-folding_all-features.wast
index b982a10fb..a35fe6cda 100644
--- a/test/passes/remove-unused-names_code-folding_all-features.wast
+++ b/test/passes/remove-unused-names_code-folding_all-features.wast
@@ -1198,9 +1198,9 @@
(try
(do)
(catch
- ;; Expressions containing exnref.pop should NOT be taken out and
+ ;; Expressions containing (pop exnref) should NOT be taken out and
;; folded.
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(drop (i32.const 111))
(drop (i32.const 222))
(drop (i32.const 333))
@@ -1209,7 +1209,7 @@
)
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(drop (i32.const 111))
(drop (i32.const 222))
(drop (i32.const 333))
@@ -1257,7 +1257,7 @@
(return (ref.null exn))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(call $foo)
(call $foo)
(call $foo)
@@ -1273,14 +1273,14 @@
(try
(do
;; Expressions that can throw should NOT be taken out of 'try' scope.
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(call $foo)
(call $foo)
(call $foo)
(br $x)
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(call $foo)
(call $foo)
(call $foo)
diff --git a/test/passes/remove-unused-names_optimize-instructions_all-features.txt b/test/passes/remove-unused-names_optimize-instructions_all-features.txt
index 182916755..8b7fc343b 100644
--- a/test/passes/remove-unused-names_optimize-instructions_all-features.txt
+++ b/test/passes/remove-unused-names_optimize-instructions_all-features.txt
@@ -17,7 +17,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.const 3)
)
@@ -34,7 +34,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.const 3)
)
@@ -57,7 +57,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -65,7 +65,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.const 3)
)
@@ -83,7 +83,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(throw $e
(i32.const 0)
@@ -94,7 +94,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(i32.const 3)
)
diff --git a/test/passes/remove-unused-names_optimize-instructions_all-features.wast b/test/passes/remove-unused-names_optimize-instructions_all-features.wast
index 119667f42..7c75c2bcf 100644
--- a/test/passes/remove-unused-names_optimize-instructions_all-features.wast
+++ b/test/passes/remove-unused-names_optimize-instructions_all-features.wast
@@ -15,7 +15,7 @@
(i32.const 1)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
@@ -30,7 +30,7 @@
(i32.const 1)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
@@ -46,13 +46,13 @@
(throw $e (i32.const 0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
(i32.const 1)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
@@ -66,14 +66,14 @@
(try
(do)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(throw $e (i32.const 0))
)
)
(i32.const 1)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
diff --git a/test/passes/rse_all-features.txt b/test/passes/rse_all-features.txt
index b66cad735..95773bb23 100644
--- a/test/passes/rse_all-features.txt
+++ b/test/passes/rse_all-features.txt
@@ -483,7 +483,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.set $x
(i32.const 1)
@@ -507,7 +507,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -525,7 +525,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.set $x
(i32.const 1)
@@ -550,7 +550,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -569,7 +569,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -589,14 +589,14 @@
)
(catch
(rethrow
- (exnref.pop)
+ (pop exnref)
)
)
)
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.set $x
(i32.const 1)
diff --git a/test/passes/rse_all-features.wast b/test/passes/rse_all-features.wast
index 0f5f72c17..d77dae379 100644
--- a/test/passes/rse_all-features.wast
+++ b/test/passes/rse_all-features.wast
@@ -293,7 +293,7 @@
(try
(do)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.set $x (i32.const 1))
)
)
@@ -307,7 +307,7 @@
(local.set $x (i32.const 1))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
(local.set $x (i32.const 1)) ;; should NOT be dropped
@@ -319,7 +319,7 @@
(throw $e (i32.const 0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.set $x (i32.const 1))
)
)
@@ -334,7 +334,7 @@
(local.set $x (i32.const 1))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
(local.set $x (i32.const 1)) ;; should NOT be dropped
@@ -347,7 +347,7 @@
(call $foo)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
(local.set $x (i32.const 1)) ;; should be dropped
@@ -361,12 +361,12 @@
(throw $e (i32.const 0))
)
(catch
- (rethrow (exnref.pop))
+ (rethrow (pop exnref))
)
)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.set $x (i32.const 1))
)
)
diff --git a/test/passes/simplify-locals_all-features.txt b/test/passes/simplify-locals_all-features.txt
index e04b8fb7a..81fca48ef 100644
--- a/test/passes/simplify-locals_all-features.txt
+++ b/test/passes/simplify-locals_all-features.txt
@@ -1952,7 +1952,7 @@
)
(catch
(local.set $0
- (exnref.pop)
+ (pop exnref)
)
(call $foo
(i32.const 3)
@@ -1976,7 +1976,7 @@
(ref.null exn)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -1999,7 +1999,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -2015,7 +2015,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
)
)
diff --git a/test/passes/simplify-locals_all-features.wast b/test/passes/simplify-locals_all-features.wast
index 0a51e5371..177b09688 100644
--- a/test/passes/simplify-locals_all-features.wast
+++ b/test/passes/simplify-locals_all-features.wast
@@ -1717,10 +1717,10 @@
(try
(do)
(catch
- ;; This (local.set $0) of (exnref.pop) cannot be sinked to
- ;; (local.get $0) below, because exnref.pop should follow right after
+ ;; This (local.set $0) of (pop exnref) cannot be sinked to
+ ;; (local.get $0) below, because pop exnref should follow right after
;; 'catch'.
- (local.set $0 (exnref.pop))
+ (local.set $0 (pop exnref))
(call $foo
(i32.const 3)
(local.get $0)
@@ -1739,7 +1739,7 @@
(local.set $0
(try (result exnref)
(do (ref.null exn))
- (catch (exnref.pop))
+ (catch (pop exnref))
)
)
(call $foo
@@ -1762,7 +1762,7 @@
(drop (local.get $0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
)
@@ -1777,7 +1777,7 @@
(drop (local.get $0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
)
diff --git a/test/passes/vacuum_all-features.txt b/test/passes/vacuum_all-features.txt
index 351a84a9a..2581f7654 100644
--- a/test/passes/vacuum_all-features.txt
+++ b/test/passes/vacuum_all-features.txt
@@ -457,7 +457,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.set $0
(i32.const 1)
diff --git a/test/passes/vacuum_all-features.wast b/test/passes/vacuum_all-features.wast
index 593fed098..9eb13b55f 100644
--- a/test/passes/vacuum_all-features.wast
+++ b/test/passes/vacuum_all-features.wast
@@ -805,7 +805,7 @@
(drop (i32.const 0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
)
@@ -820,13 +820,13 @@
(throw $e (i32.const 0))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.set $0 (i32.const 1))
)
)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
)
)
)
@@ -841,7 +841,7 @@
(unreachable)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(br $label$1)
)
)
diff --git a/test/reference-types.wast b/test/reference-types.wast
index ad0f908ce..ddc3550c5 100644
--- a/test/reference-types.wast
+++ b/test/reference-types.wast
@@ -463,7 +463,7 @@
(local.get $local_externref)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(ref.null extern)
)
)
@@ -474,7 +474,7 @@
(ref.func $foo)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(ref.null func)
)
)
@@ -485,7 +485,7 @@
(ref.null exn)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -497,7 +497,7 @@
(local.get $local_externref)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(ref.func $foo)
)
)
@@ -508,7 +508,7 @@
(local.get $local_externref)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -518,7 +518,7 @@
(ref.func $foo)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.get $local_externref)
)
)
@@ -529,7 +529,7 @@
(ref.func $foo)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -539,18 +539,18 @@
(ref.null exn)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(local.get $local_externref)
)
)
)
(drop
- (try (result anyref)
+ (try (result anyref)
(do
(ref.null exn)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(ref.func $foo)
)
)
@@ -588,7 +588,7 @@
;; Test subtype relationship for typed select
(drop
- (select (result anyref)
+ (select (result anyref)
(local.get $local_externref)
(local.get $local_funcref)
(i32.const 1)
diff --git a/test/reference-types.wast.from-wast b/test/reference-types.wast.from-wast
index 4e82da60d..6a4bfede6 100644
--- a/test/reference-types.wast.from-wast
+++ b/test/reference-types.wast.from-wast
@@ -702,7 +702,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null extern)
)
@@ -715,7 +715,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null func)
)
@@ -727,7 +727,7 @@
(ref.null exn)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -738,7 +738,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $foo)
)
@@ -750,7 +750,7 @@
(local.get $local_externref)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -761,7 +761,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $local_externref)
)
@@ -773,7 +773,7 @@
(ref.func $foo)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -784,7 +784,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $local_externref)
)
@@ -797,7 +797,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $foo)
)
diff --git a/test/reference-types.wast.fromBinary b/test/reference-types.wast.fromBinary
index c266e725a..00e651305 100644
--- a/test/reference-types.wast.fromBinary
+++ b/test/reference-types.wast.fromBinary
@@ -702,7 +702,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null extern)
)
@@ -715,7 +715,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null func)
)
@@ -727,7 +727,7 @@
(ref.null exn)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -738,7 +738,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $foo)
)
@@ -750,7 +750,7 @@
(local.get $1)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -761,7 +761,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $1)
)
@@ -773,7 +773,7 @@
(ref.func $foo)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -784,7 +784,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $1)
)
@@ -797,7 +797,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $foo)
)
diff --git a/test/reference-types.wast.fromBinary.noDebugInfo b/test/reference-types.wast.fromBinary.noDebugInfo
index e1d18827e..f3bddff54 100644
--- a/test/reference-types.wast.fromBinary.noDebugInfo
+++ b/test/reference-types.wast.fromBinary.noDebugInfo
@@ -702,7 +702,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null extern)
)
@@ -715,7 +715,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.null func)
)
@@ -727,7 +727,7 @@
(ref.null exn)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -738,7 +738,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $4)
)
@@ -750,7 +750,7 @@
(local.get $1)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -761,7 +761,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $1)
)
@@ -773,7 +773,7 @@
(ref.func $4)
)
(catch
- (exnref.pop)
+ (pop exnref)
)
)
)
@@ -784,7 +784,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(local.get $1)
)
@@ -797,7 +797,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(ref.func $4)
)
diff --git a/test/spec/exception-handling.wast b/test/spec/exception-handling.wast
index 0188865ac..05ecb97a9 100644
--- a/test/spec/exception-handling.wast
+++ b/test/spec/exception-handling.wast
@@ -21,7 +21,7 @@
(i32.const 3)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 0)
)
)
@@ -33,7 +33,7 @@
(throw $e-i32 (i32.const 5))
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
@@ -46,7 +46,7 @@
(unreachable)
)
(catch
- (drop (exnref.pop))
+ (drop (pop exnref))
(i32.const 3)
)
)
@@ -58,7 +58,7 @@
(throw $e-i32 (i32.const 5))
)
(catch
- (rethrow (exnref.pop))
+ (rethrow (pop exnref))
)
)
)
@@ -69,7 +69,7 @@
(call $throw_single_value)
)
(catch
- (rethrow (exnref.pop))
+ (rethrow (pop exnref))
)
)
)
@@ -89,7 +89,7 @@
(throw $e-v)
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0
(rethrow
(br_on_exn $l0 $e-v (local.get $exn))
@@ -105,7 +105,7 @@
(throw $e-i32 (i32.const 5))
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0 (result i32)
(rethrow
(br_on_exn $l0 $e-i32 (local.get $exn))
@@ -122,7 +122,7 @@
(throw $e-i32-f32 (i32.const 3) (f32.const 3.5))
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0 (result i32 f32)
(rethrow
(br_on_exn $l0 $e-i32-f32 (local.get $exn))
@@ -138,7 +138,7 @@
(throw $e-i32 (i32.const 5))
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0
(rethrow
(br_on_exn $l0 $e-v (local.get $exn))
@@ -155,7 +155,7 @@
(unreachable)
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0 (result i32)
(rethrow
(br_on_exn $l0 $e-i32 (local.get $exn))
@@ -172,7 +172,7 @@
(unreachable)
)
(catch
- (local.set $exn (exnref.pop))
+ (local.set $exn (pop exnref))
(block $l0 (result i32)
(rethrow
(br_on_exn $l0 $e-i32 (local.get $exn))
diff --git a/test/try-body-multiple-insts.wasm.fromBinary b/test/try-body-multiple-insts.wasm.fromBinary
index 1ecbdbbc6..179bb42ab 100644
--- a/test/try-body-multiple-insts.wasm.fromBinary
+++ b/test/try-body-multiple-insts.wasm.fromBinary
@@ -15,7 +15,7 @@
)
(catch
(drop
- (exnref.pop)
+ (pop exnref)
)
(call $0)
(call $1)
diff --git a/test/unit/test_poppy_validation.py b/test/unit/test_poppy_validation.py
index 3dc2907d8..6f868da2a 100644
--- a/test/unit/test_poppy_validation.py
+++ b/test/unit/test_poppy_validation.py
@@ -26,7 +26,7 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(func $foo (result i32)
(block (result i32)
(i32.const 0)
- (i32.pop)
+ (pop i32)
)
)
)
@@ -52,8 +52,8 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(f32.const 42)
(i32.const 42)
(i32.add
- (i32.pop)
- (i32.pop)
+ (pop i32)
+ (pop i32)
)
)
)
@@ -68,8 +68,8 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(i32.const 42)
(i32.const 42)
(i32.add
- (i32.pop)
- (f32.pop)
+ (pop i32)
+ (pop f32)
)
)
)
@@ -83,8 +83,8 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(i32.const 42)
(i32.const 42)
(i32.add
- (i32.pop)
- (i32.pop)
+ (pop i32)
+ (pop i32)
)
)
)
@@ -134,7 +134,7 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(nop)
(i32.const 1)
(if
- (i32.pop)
+ (pop i32)
(nop)
)
)
@@ -149,7 +149,7 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(nop)
(i32.const 1)
(if
- (i32.pop)
+ (pop i32)
(block)
(nop)
)
@@ -165,7 +165,7 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(nop)
(i32.const 1)
(if
- (i32.pop)
+ (pop i32)
(block)
(block)
)
@@ -194,7 +194,7 @@ class PoppyValidationTest(utils.BinaryenTestCase):
(i32.const 42)
(i32.const 5)
(i32.add
- (i32.pop)
+ (pop i32)
(i32.const -1)
)
)