summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2017-09-18 16:33:06 -0700
committerGitHub <noreply@github.com>2017-09-18 16:33:06 -0700
commit0532093e5856662a11cf66cbf59feaeb3acb9c29 (patch)
treef0ec2dfa924c6a57f8d29886d89a23c5980ced45
parent8f2f6a13736336ca13d6b4bccb1af6d34f3aae48 (diff)
downloadbinaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.tar.gz
binaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.tar.bz2
binaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.zip
Expressions should not appear twice in the ast (#1191)
-rw-r--r--README.md8
-rw-r--r--src/wasm-emscripten.cpp3
-rw-r--r--src/wasm-validator.h3
-rw-r--r--src/wasm/wasm-validator.cpp18
-rw-r--r--test/example/c-api-kitchen-sink.c39
-rw-r--r--test/example/c-api-kitchen-sink.txt485
6 files changed, 307 insertions, 249 deletions
diff --git a/README.md b/README.md
index 5422ccda4..14b7ef9dd 100644
--- a/README.md
+++ b/README.md
@@ -46,12 +46,14 @@ There are a few differences between Binaryen IR and the WebAssembly language:
* Blocks without names may not be branch targets.
* Names are required to be unique. (Reading wast files with duplicate names is supported; the names are modified when the IR is constructed).
* As an optimization, a block that is the child of a loop (or if arm, or function toplevel) and which has no branches targeting it will not be emitted when generating wasm. Instead its list of operands will be directly used in the containing node. Such a block is sometimes called an "implicit block".
-
-
-
As a result, you might notice that round-trip conversions (wasm => Binaryen IR => wasm) change code a little in some corner cases.
+Notes when working with Binaryen IR:
+
+ * As mentioned above, Binaryen IR has a tree structure. As a result, each expression should have exactly one parent - you should not "reuse" a node by having it appear more than once in the tree. The motivation for this limitation is that when we optimize we modify nodes, so if they appear more than once in the tree, a change in one place can appear in another incorrectly.
+ * For similar reasons, nodes should not appear in more than one functions.
+
## Tools
This repository contains code that builds the following tools in `bin/`:
diff --git a/src/wasm-emscripten.cpp b/src/wasm-emscripten.cpp
index 7463ec594..9c617a31e 100644
--- a/src/wasm-emscripten.cpp
+++ b/src/wasm-emscripten.cpp
@@ -129,7 +129,8 @@ void generateStackAllocFunction(LinkerObject& linker) {
Block* block = builder.makeBlock();
block->list.push_back(setStackLocal);
block->list.push_back(storeStack);
- block->list.push_back(getStackLocal);
+ GetLocal* getStackLocal2 = builder.makeGetLocal(1, i32);
+ block->list.push_back(getStackLocal2);
block->type = i32;
function->body = block;
diff --git a/src/wasm-validator.h b/src/wasm-validator.h
index 0851d33e8..ceaaee890 100644
--- a/src/wasm-validator.h
+++ b/src/wasm-validator.h
@@ -39,6 +39,7 @@
#include <set>
#include <sstream>
+#include <unordered_set>
#include "wasm.h"
#include "wasm-printing.h"
@@ -83,6 +84,8 @@ struct WasmValidator : public PostWalker<WasmValidator> {
std::set<Name> labelNames; // Binaryen IR requires that label names must be unique - IR generators must ensure that
+ std::unordered_set<Expression*> seenExpressions; // expressions must not appear twice
+
void noteLabelName(Name name);
public:
diff --git a/src/wasm/wasm-validator.cpp b/src/wasm/wasm-validator.cpp
index 5534eb7b9..85e2193fa 100644
--- a/src/wasm/wasm-validator.cpp
+++ b/src/wasm/wasm-validator.cpp
@@ -559,6 +559,24 @@ void WasmValidator::visitFunction(Function *curr) {
shouldBeTrue(breakTargets.empty(), curr->body, "all named break targets must exist");
returnType = unreachable;
labelNames.clear();
+ // expressions must not be seen more than once
+ struct Walker : public PostWalker<Walker, UnifiedExpressionVisitor<Walker>> {
+ std::unordered_set<Expression*>& seen;
+ std::vector<Expression*> dupes;
+
+ Walker(std::unordered_set<Expression*>& seen) : seen(seen) {}
+
+ void visitExpression(Expression* curr) {
+ bool inserted;
+ std::tie(std::ignore, inserted) = seen.insert(curr);
+ if (!inserted) dupes.push_back(curr);
+ }
+ };
+ Walker walker(seenExpressions);
+ walker.walk(curr->body);
+ for (auto* bad : walker.dupes) {
+ fail("expression seen more than once in the tree", bad);
+ }
}
static bool checkOffset(Expression* curr, Address add, Address max) {
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 5b5b012e1..0802d96cd 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -98,6 +98,7 @@ void test_core() {
BinaryenExpressionRef callOperands2[] = { makeInt32(module, 13), makeFloat64(module, 3.7) };
BinaryenExpressionRef callOperands4[] = { makeInt32(module, 13), makeInt64(module, 37), makeFloat32(module, 1.3f), makeFloat64(module, 3.7) };
+ BinaryenExpressionRef callOperands4b[] = { makeInt32(module, 13), makeInt64(module, 37), makeFloat32(module, 1.3f), makeFloat64(module, 3.7) };
BinaryenType params[4] = { BinaryenInt32(), BinaryenInt64(), BinaryenFloat32(), BinaryenFloat64() };
BinaryenFunctionTypeRef iiIfF = BinaryenAddFunctionType(module, "iiIfF", BinaryenInt32(), params, 4);
@@ -203,7 +204,7 @@ void test_core() {
)
),
BinaryenUnary(module, BinaryenEqZInt32(), // check the output type of the call node
- BinaryenCallIndirect(module, makeInt32(module, 2449), callOperands4, 4, "iiIfF")
+ BinaryenCallIndirect(module, makeInt32(module, 2449), callOperands4b, 4, "iiIfF")
),
BinaryenDrop(module, BinaryenGetLocal(module, 0, BinaryenInt32())),
BinaryenSetLocal(module, 0, makeInt32(module, 101)),
@@ -545,18 +546,36 @@ void test_interpret() {
void test_nonvalid() {
// create a module that fails to validate
- BinaryenModuleRef module = BinaryenModuleCreate();
+ {
+ BinaryenModuleRef module = BinaryenModuleCreate();
- BinaryenFunctionTypeRef v = BinaryenAddFunctionType(module, "v", BinaryenNone(), NULL, 0);
- BinaryenType localTypes[] = { BinaryenInt32() };
- BinaryenFunctionRef func = BinaryenAddFunction(module, "func", v, localTypes, 1,
- BinaryenSetLocal(module, 0, makeInt64(module, 1234)) // wrong type!
- );
+ BinaryenFunctionTypeRef v = BinaryenAddFunctionType(module, "v", BinaryenNone(), NULL, 0);
+ BinaryenType localTypes[] = { BinaryenInt32() };
+ BinaryenFunctionRef func = BinaryenAddFunction(module, "func", v, localTypes, 1,
+ BinaryenSetLocal(module, 0, makeInt64(module, 1234)) // wrong type!
+ );
- BinaryenModulePrint(module);
- printf("validation: %d\n", BinaryenModuleValidate(module));
+ BinaryenModulePrint(module);
+ printf("validation: %d\n", BinaryenModuleValidate(module));
- BinaryenModuleDispose(module);
+ BinaryenModuleDispose(module);
+ }
+ // validation failure due to duplicate nodes
+ {
+ BinaryenModuleRef module = BinaryenModuleCreate();
+
+ BinaryenFunctionTypeRef v = BinaryenAddFunctionType(module, "i", BinaryenInt32(), NULL, 0);
+ BinaryenType localTypes[] = { };
+ BinaryenExpressionRef num = makeInt32(module, 1234);
+ BinaryenFunctionRef func = BinaryenAddFunction(module, "func", v, NULL, 0,
+ BinaryenBinary(module, BinaryenInt32(), num, num) // incorrectly use num twice
+ );
+
+ BinaryenModulePrint(module);
+ printf("validation: %d\n", BinaryenModuleValidate(module));
+
+ BinaryenModuleDispose(module);
+ }
}
void test_tracing() {
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index 16d48ea5b..8bbef7c95 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -1072,6 +1072,17 @@ module loaded from binary form:
)
)
validation: 0
+(module
+ (type $i (func (result i32)))
+ (memory $0 0)
+ (func $func (type $i) (result i32)
+ (i32.sub
+ (i32.const 1234)
+ (i32.const 1234)
+ )
+ )
+)
+validation: 0
// beginning a Binaryen API trace
#include <math.h>
#include <map>
@@ -1097,279 +1108,283 @@ int main() {
expressions[10] = BinaryenConst(the_module, BinaryenLiteralInt64(37));
expressions[11] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3));
expressions[12] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7));
+ expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(13));
+ expressions[14] = BinaryenConst(the_module, BinaryenLiteralInt64(37));
+ expressions[15] = BinaryenConst(the_module, BinaryenLiteralFloat32(1.3));
+ expressions[16] = BinaryenConst(the_module, BinaryenLiteralFloat64(3.7));
{
BinaryenType paramTypes[] = { 1, 2, 3, 4 };
functionTypes[0] = BinaryenAddFunctionType(the_module, "iiIfF", 1, paramTypes, 4);
}
- expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[14] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
- expressions[15] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
- expressions[16] = BinaryenConst(the_module, BinaryenLiteralInt32(4));
- expressions[17] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
- expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
- expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
- expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[22] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
- expressions[24] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
- expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
- expressions[26] = BinaryenConst(the_module, BinaryenLiteralInt32(11));
- expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(110));
- expressions[28] = BinaryenConst(the_module, BinaryenLiteralInt64(111));
- expressions[29] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[30] = BinaryenUnary(the_module, 0, expressions[29]);
- expressions[31] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[32] = BinaryenUnary(the_module, 3, expressions[31]);
+ expressions[17] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ expressions[19] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt32(4));
+ expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
+ expressions[22] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[24] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[26] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ expressions[28] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
+ expressions[29] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(11));
+ expressions[31] = BinaryenConst(the_module, BinaryenLiteralInt32(110));
+ expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt64(111));
expressions[33] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[34] = BinaryenUnary(the_module, 4, expressions[33]);
- expressions[35] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[36] = BinaryenUnary(the_module, 6, expressions[35]);
- expressions[37] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[38] = BinaryenUnary(the_module, 9, expressions[37]);
+ expressions[34] = BinaryenUnary(the_module, 0, expressions[33]);
+ expressions[35] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[36] = BinaryenUnary(the_module, 3, expressions[35]);
+ expressions[37] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[38] = BinaryenUnary(the_module, 4, expressions[37]);
expressions[39] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[40] = BinaryenUnary(the_module, 10, expressions[39]);
+ expressions[40] = BinaryenUnary(the_module, 6, expressions[39]);
expressions[41] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[42] = BinaryenUnary(the_module, 13, expressions[41]);
+ expressions[42] = BinaryenUnary(the_module, 9, expressions[41]);
expressions[43] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[44] = BinaryenUnary(the_module, 14, expressions[43]);
- expressions[45] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[46] = BinaryenUnary(the_module, 16, expressions[45]);
- expressions[47] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[48] = BinaryenUnary(the_module, 19, expressions[47]);
- expressions[49] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[50] = BinaryenUnary(the_module, 20, expressions[49]);
- expressions[51] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[52] = BinaryenUnary(the_module, 22, expressions[51]);
+ expressions[44] = BinaryenUnary(the_module, 10, expressions[43]);
+ expressions[45] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[46] = BinaryenUnary(the_module, 13, expressions[45]);
+ expressions[47] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[48] = BinaryenUnary(the_module, 14, expressions[47]);
+ expressions[49] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[50] = BinaryenUnary(the_module, 16, expressions[49]);
+ expressions[51] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[52] = BinaryenUnary(the_module, 19, expressions[51]);
expressions[53] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[54] = BinaryenUnary(the_module, 23, expressions[53]);
- expressions[55] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[56] = BinaryenUnary(the_module, 24, expressions[55]);
- expressions[57] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[58] = BinaryenUnary(the_module, 25, expressions[57]);
- expressions[59] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[60] = BinaryenUnary(the_module, 26, expressions[59]);
+ expressions[54] = BinaryenUnary(the_module, 20, expressions[53]);
+ expressions[55] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[56] = BinaryenUnary(the_module, 22, expressions[55]);
+ expressions[57] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[58] = BinaryenUnary(the_module, 23, expressions[57]);
+ expressions[59] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[60] = BinaryenUnary(the_module, 24, expressions[59]);
expressions[61] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[62] = BinaryenUnary(the_module, 27, expressions[61]);
+ expressions[62] = BinaryenUnary(the_module, 25, expressions[61]);
expressions[63] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[64] = BinaryenUnary(the_module, 28, expressions[63]);
- expressions[65] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[66] = BinaryenUnary(the_module, 29, expressions[65]);
- expressions[67] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[68] = BinaryenUnary(the_module, 30, expressions[67]);
+ expressions[64] = BinaryenUnary(the_module, 26, expressions[63]);
+ expressions[65] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[66] = BinaryenUnary(the_module, 27, expressions[65]);
+ expressions[67] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[68] = BinaryenUnary(the_module, 28, expressions[67]);
expressions[69] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[70] = BinaryenUnary(the_module, 31, expressions[69]);
+ expressions[70] = BinaryenUnary(the_module, 29, expressions[69]);
expressions[71] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[72] = BinaryenUnary(the_module, 32, expressions[71]);
- expressions[73] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[74] = BinaryenUnary(the_module, 33, expressions[73]);
+ expressions[72] = BinaryenUnary(the_module, 30, expressions[71]);
+ expressions[73] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[74] = BinaryenUnary(the_module, 31, expressions[73]);
expressions[75] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[76] = BinaryenUnary(the_module, 34, expressions[75]);
- expressions[77] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[78] = BinaryenUnary(the_module, 35, expressions[77]);
- expressions[79] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[80] = BinaryenUnary(the_module, 36, expressions[79]);
+ expressions[76] = BinaryenUnary(the_module, 32, expressions[75]);
+ expressions[77] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[78] = BinaryenUnary(the_module, 33, expressions[77]);
+ expressions[79] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[80] = BinaryenUnary(the_module, 34, expressions[79]);
expressions[81] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[82] = BinaryenUnary(the_module, 37, expressions[81]);
+ expressions[82] = BinaryenUnary(the_module, 35, expressions[81]);
expressions[83] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[84] = BinaryenUnary(the_module, 38, expressions[83]);
- expressions[85] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[86] = BinaryenUnary(the_module, 39, expressions[85]);
- expressions[87] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[88] = BinaryenUnary(the_module, 40, expressions[87]);
+ expressions[84] = BinaryenUnary(the_module, 36, expressions[83]);
+ expressions[85] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[86] = BinaryenUnary(the_module, 37, expressions[85]);
+ expressions[87] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[88] = BinaryenUnary(the_module, 38, expressions[87]);
expressions[89] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[90] = BinaryenUnary(the_module, 41, expressions[89]);
+ expressions[90] = BinaryenUnary(the_module, 39, expressions[89]);
expressions[91] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[92] = BinaryenUnary(the_module, 42, expressions[91]);
- expressions[93] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[94] = BinaryenUnary(the_module, 43, expressions[93]);
- expressions[95] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[96] = BinaryenUnary(the_module, 44, expressions[95]);
- expressions[97] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[98] = BinaryenUnary(the_module, 45, expressions[97]);
- expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[100] = BinaryenUnary(the_module, 46, expressions[99]);
- expressions[101] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[102] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[103] = BinaryenBinary(the_module, 0, expressions[102], expressions[101]);
- expressions[104] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
- expressions[105] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[106] = BinaryenBinary(the_module, 64, expressions[105], expressions[104]);
- expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[108] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[109] = BinaryenBinary(the_module, 3, expressions[108], expressions[107]);
- expressions[110] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[111] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[112] = BinaryenBinary(the_module, 29, expressions[111], expressions[110]);
- expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[114] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[115] = BinaryenBinary(the_module, 30, expressions[114], expressions[113]);
- expressions[116] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[118] = BinaryenBinary(the_module, 6, expressions[117], expressions[116]);
- expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[120] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[121] = BinaryenBinary(the_module, 7, expressions[120], expressions[119]);
- expressions[122] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[124] = BinaryenBinary(the_module, 33, expressions[123], expressions[122]);
- expressions[125] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[126] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[127] = BinaryenBinary(the_module, 9, expressions[126], expressions[125]);
- expressions[128] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[129] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[130] = BinaryenBinary(the_module, 35, expressions[129], expressions[128]);
- expressions[131] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[133] = BinaryenBinary(the_module, 36, expressions[132], expressions[131]);
- expressions[134] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[135] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[136] = BinaryenBinary(the_module, 12, expressions[135], expressions[134]);
- expressions[137] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[139] = BinaryenBinary(the_module, 13, expressions[138], expressions[137]);
- expressions[140] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[141] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[142] = BinaryenBinary(the_module, 39, expressions[141], expressions[140]);
- expressions[143] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
- expressions[144] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[145] = BinaryenBinary(the_module, 53, expressions[144], expressions[143]);
- expressions[146] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
- expressions[147] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[148] = BinaryenBinary(the_module, 67, expressions[147], expressions[146]);
- expressions[149] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
- expressions[150] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[151] = BinaryenBinary(the_module, 55, expressions[150], expressions[149]);
- expressions[152] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
- expressions[153] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[154] = BinaryenBinary(the_module, 69, expressions[153], expressions[152]);
- expressions[155] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[156] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[157] = BinaryenBinary(the_module, 15, expressions[156], expressions[155]);
- expressions[158] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
- expressions[159] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[160] = BinaryenBinary(the_module, 58, expressions[159], expressions[158]);
- expressions[161] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[162] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[163] = BinaryenBinary(the_module, 17, expressions[162], expressions[161]);
- expressions[164] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[165] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[166] = BinaryenBinary(the_module, 43, expressions[165], expressions[164]);
- expressions[167] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[168] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[169] = BinaryenBinary(the_module, 44, expressions[168], expressions[167]);
- expressions[170] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[171] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[172] = BinaryenBinary(the_module, 20, expressions[171], expressions[170]);
- expressions[173] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[174] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[175] = BinaryenBinary(the_module, 46, expressions[174], expressions[173]);
- expressions[176] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[177] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[178] = BinaryenBinary(the_module, 22, expressions[177], expressions[176]);
- expressions[179] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
- expressions[180] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- expressions[181] = BinaryenBinary(the_module, 23, expressions[180], expressions[179]);
- expressions[182] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
- expressions[183] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
- expressions[184] = BinaryenBinary(the_module, 49, expressions[183], expressions[182]);
- expressions[185] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
- expressions[186] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[187] = BinaryenBinary(the_module, 59, expressions[186], expressions[185]);
- expressions[188] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
- expressions[189] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[190] = BinaryenBinary(the_module, 73, expressions[189], expressions[188]);
- expressions[191] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
- expressions[192] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
- expressions[193] = BinaryenBinary(the_module, 74, expressions[192], expressions[191]);
- expressions[194] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
- expressions[195] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
- expressions[196] = BinaryenBinary(the_module, 62, expressions[195], expressions[194]);
+ expressions[92] = BinaryenUnary(the_module, 40, expressions[91]);
+ expressions[93] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[94] = BinaryenUnary(the_module, 41, expressions[93]);
+ expressions[95] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[96] = BinaryenUnary(the_module, 42, expressions[95]);
+ expressions[97] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[98] = BinaryenUnary(the_module, 43, expressions[97]);
+ expressions[99] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[100] = BinaryenUnary(the_module, 44, expressions[99]);
+ expressions[101] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[102] = BinaryenUnary(the_module, 45, expressions[101]);
+ expressions[103] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[104] = BinaryenUnary(the_module, 46, expressions[103]);
+ expressions[105] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[106] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[107] = BinaryenBinary(the_module, 0, expressions[106], expressions[105]);
+ expressions[108] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
+ expressions[109] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[110] = BinaryenBinary(the_module, 64, expressions[109], expressions[108]);
+ expressions[111] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[112] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[113] = BinaryenBinary(the_module, 3, expressions[112], expressions[111]);
+ expressions[114] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[115] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[116] = BinaryenBinary(the_module, 29, expressions[115], expressions[114]);
+ expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[118] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[119] = BinaryenBinary(the_module, 30, expressions[118], expressions[117]);
+ expressions[120] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[121] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[122] = BinaryenBinary(the_module, 6, expressions[121], expressions[120]);
+ expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[124] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[125] = BinaryenBinary(the_module, 7, expressions[124], expressions[123]);
+ expressions[126] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[127] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[128] = BinaryenBinary(the_module, 33, expressions[127], expressions[126]);
+ expressions[129] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[130] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[131] = BinaryenBinary(the_module, 9, expressions[130], expressions[129]);
+ expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[133] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[134] = BinaryenBinary(the_module, 35, expressions[133], expressions[132]);
+ expressions[135] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[136] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[137] = BinaryenBinary(the_module, 36, expressions[136], expressions[135]);
+ expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[139] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[140] = BinaryenBinary(the_module, 12, expressions[139], expressions[138]);
+ expressions[141] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[142] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[143] = BinaryenBinary(the_module, 13, expressions[142], expressions[141]);
+ expressions[144] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[145] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[146] = BinaryenBinary(the_module, 39, expressions[145], expressions[144]);
+ expressions[147] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
+ expressions[148] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[149] = BinaryenBinary(the_module, 53, expressions[148], expressions[147]);
+ expressions[150] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
+ expressions[151] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[152] = BinaryenBinary(the_module, 67, expressions[151], expressions[150]);
+ expressions[153] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
+ expressions[154] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[155] = BinaryenBinary(the_module, 55, expressions[154], expressions[153]);
+ expressions[156] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
+ expressions[157] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[158] = BinaryenBinary(the_module, 69, expressions[157], expressions[156]);
+ expressions[159] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[160] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[161] = BinaryenBinary(the_module, 15, expressions[160], expressions[159]);
+ expressions[162] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
+ expressions[163] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[164] = BinaryenBinary(the_module, 58, expressions[163], expressions[162]);
+ expressions[165] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[166] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[167] = BinaryenBinary(the_module, 17, expressions[166], expressions[165]);
+ expressions[168] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[169] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[170] = BinaryenBinary(the_module, 43, expressions[169], expressions[168]);
+ expressions[171] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[172] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[173] = BinaryenBinary(the_module, 44, expressions[172], expressions[171]);
+ expressions[174] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[175] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[176] = BinaryenBinary(the_module, 20, expressions[175], expressions[174]);
+ expressions[177] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[178] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[179] = BinaryenBinary(the_module, 46, expressions[178], expressions[177]);
+ expressions[180] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[181] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[182] = BinaryenBinary(the_module, 22, expressions[181], expressions[180]);
+ expressions[183] = BinaryenConst(the_module, BinaryenLiteralInt32(-11));
+ expressions[184] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ expressions[185] = BinaryenBinary(the_module, 23, expressions[184], expressions[183]);
+ expressions[186] = BinaryenConst(the_module, BinaryenLiteralInt64(-23));
+ expressions[187] = BinaryenConst(the_module, BinaryenLiteralInt64(-22));
+ expressions[188] = BinaryenBinary(the_module, 49, expressions[187], expressions[186]);
+ expressions[189] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
+ expressions[190] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[191] = BinaryenBinary(the_module, 59, expressions[190], expressions[189]);
+ expressions[192] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
+ expressions[193] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[194] = BinaryenBinary(the_module, 73, expressions[193], expressions[192]);
+ expressions[195] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9007.33));
+ expressions[196] = BinaryenConst(the_module, BinaryenLiteralFloat64(-9005.84));
+ expressions[197] = BinaryenBinary(the_module, 74, expressions[196], expressions[195]);
+ expressions[198] = BinaryenConst(the_module, BinaryenLiteralFloat32(-62.5));
+ expressions[199] = BinaryenConst(the_module, BinaryenLiteralFloat32(-33.612));
+ expressions[200] = BinaryenBinary(the_module, 62, expressions[199], expressions[198]);
{
BinaryenExpressionRef children[] = { 0 };
- expressions[197] = BinaryenBlock(the_module, NULL, children, 0, BinaryenUndefined());
- }
- expressions[198] = BinaryenIf(the_module, expressions[13], expressions[14], expressions[15]);
- expressions[199] = BinaryenIf(the_module, expressions[16], expressions[17], expressions[0]);
- expressions[200] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
- expressions[201] = BinaryenLoop(the_module, "in", expressions[200]);
- expressions[202] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
- expressions[203] = BinaryenLoop(the_module, NULL, expressions[202]);
- expressions[204] = BinaryenBreak(the_module, "the-value", expressions[18], expressions[19]);
- expressions[205] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
- expressions[206] = BinaryenBreak(the_module, "the-nothing", expressions[205], expressions[0]);
- expressions[207] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
- expressions[208] = BinaryenBreak(the_module, "the-value", expressions[0], expressions[207]);
- expressions[209] = BinaryenBreak(the_module, "the-nothing", expressions[0], expressions[0]);
+ expressions[201] = BinaryenBlock(the_module, NULL, children, 0, BinaryenUndefined());
+ }
+ expressions[202] = BinaryenIf(the_module, expressions[17], expressions[18], expressions[19]);
+ expressions[203] = BinaryenIf(the_module, expressions[20], expressions[21], expressions[0]);
+ expressions[204] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[205] = BinaryenLoop(the_module, "in", expressions[204]);
+ expressions[206] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[207] = BinaryenLoop(the_module, NULL, expressions[206]);
+ expressions[208] = BinaryenBreak(the_module, "the-value", expressions[22], expressions[23]);
+ expressions[209] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ expressions[210] = BinaryenBreak(the_module, "the-nothing", expressions[209], expressions[0]);
+ expressions[211] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ expressions[212] = BinaryenBreak(the_module, "the-value", expressions[0], expressions[211]);
+ expressions[213] = BinaryenBreak(the_module, "the-nothing", expressions[0], expressions[0]);
{
const char* names[] = { "the-value" };
- expressions[210] = BinaryenSwitch(the_module, names, 1, "the-value", expressions[20], expressions[21]);
+ expressions[214] = BinaryenSwitch(the_module, names, 1, "the-value", expressions[24], expressions[25]);
}
- expressions[211] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ expressions[215] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
const char* names[] = { "the-nothing" };
- expressions[212] = BinaryenSwitch(the_module, names, 1, "the-nothing", expressions[211], expressions[0]);
+ expressions[216] = BinaryenSwitch(the_module, names, 1, "the-nothing", expressions[215], expressions[0]);
}
{
BinaryenExpressionRef operands[] = { expressions[9], expressions[10], expressions[11], expressions[12] };
- expressions[213] = BinaryenCall(the_module, "kitchen()sinker", operands, 4, 1);
+ expressions[217] = BinaryenCall(the_module, "kitchen()sinker", operands, 4, 1);
}
- expressions[214] = BinaryenUnary(the_module, 20, expressions[213]);
+ expressions[218] = BinaryenUnary(the_module, 20, expressions[217]);
{
BinaryenExpressionRef operands[] = { expressions[7], expressions[8] };
- expressions[215] = BinaryenCallImport(the_module, "an-imported", operands, 2, 3);
- }
- expressions[216] = BinaryenUnary(the_module, 25, expressions[215]);
- expressions[217] = BinaryenUnary(the_module, 20, expressions[216]);
- expressions[218] = BinaryenConst(the_module, BinaryenLiteralInt32(2449));
- {
- BinaryenExpressionRef operands[] = { expressions[9], expressions[10], expressions[11], expressions[12] };
- expressions[219] = BinaryenCallIndirect(the_module, expressions[218], operands, 4, "iiIfF");
- }
- expressions[220] = BinaryenUnary(the_module, 20, expressions[219]);
- expressions[221] = BinaryenGetLocal(the_module, 0, 1);
- expressions[222] = BinaryenDrop(the_module, expressions[221]);
- expressions[223] = BinaryenConst(the_module, BinaryenLiteralInt32(101));
- expressions[224] = BinaryenSetLocal(the_module, 0, expressions[223]);
- expressions[225] = BinaryenConst(the_module, BinaryenLiteralInt32(102));
- expressions[226] = BinaryenTeeLocal(the_module, 0, expressions[225]);
- expressions[227] = BinaryenDrop(the_module, expressions[226]);
- expressions[228] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[229] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[228]);
- expressions[230] = BinaryenConst(the_module, BinaryenLiteralInt32(8));
- expressions[231] = BinaryenLoad(the_module, 2, 1, 2, 1, 2, expressions[230]);
- expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
- expressions[233] = BinaryenLoad(the_module, 4, 0, 0, 0, 3, expressions[232]);
- expressions[234] = BinaryenConst(the_module, BinaryenLiteralInt32(9));
- expressions[235] = BinaryenLoad(the_module, 8, 0, 2, 8, 4, expressions[234]);
- expressions[236] = BinaryenStore(the_module, 4, 0, 0, expressions[25], expressions[26], 1);
- expressions[237] = BinaryenStore(the_module, 8, 2, 4, expressions[27], expressions[28], 2);
- expressions[238] = BinaryenSelect(the_module, expressions[22], expressions[23], expressions[24]);
- expressions[239] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
- expressions[240] = BinaryenReturn(the_module, expressions[239]);
- expressions[241] = BinaryenNop(the_module);
- expressions[242] = BinaryenUnreachable(the_module);
- BinaryenExpressionPrint(expressions[36]);
+ expressions[219] = BinaryenCallImport(the_module, "an-imported", operands, 2, 3);
+ }
+ expressions[220] = BinaryenUnary(the_module, 25, expressions[219]);
+ expressions[221] = BinaryenUnary(the_module, 20, expressions[220]);
+ expressions[222] = BinaryenConst(the_module, BinaryenLiteralInt32(2449));
+ {
+ BinaryenExpressionRef operands[] = { expressions[13], expressions[14], expressions[15], expressions[16] };
+ expressions[223] = BinaryenCallIndirect(the_module, expressions[222], operands, 4, "iiIfF");
+ }
+ expressions[224] = BinaryenUnary(the_module, 20, expressions[223]);
+ expressions[225] = BinaryenGetLocal(the_module, 0, 1);
+ expressions[226] = BinaryenDrop(the_module, expressions[225]);
+ expressions[227] = BinaryenConst(the_module, BinaryenLiteralInt32(101));
+ expressions[228] = BinaryenSetLocal(the_module, 0, expressions[227]);
+ expressions[229] = BinaryenConst(the_module, BinaryenLiteralInt32(102));
+ expressions[230] = BinaryenTeeLocal(the_module, 0, expressions[229]);
+ expressions[231] = BinaryenDrop(the_module, expressions[230]);
+ expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[233] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[232]);
+ expressions[234] = BinaryenConst(the_module, BinaryenLiteralInt32(8));
+ expressions[235] = BinaryenLoad(the_module, 2, 1, 2, 1, 2, expressions[234]);
+ expressions[236] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ expressions[237] = BinaryenLoad(the_module, 4, 0, 0, 0, 3, expressions[236]);
+ expressions[238] = BinaryenConst(the_module, BinaryenLiteralInt32(9));
+ expressions[239] = BinaryenLoad(the_module, 8, 0, 2, 8, 4, expressions[238]);
+ expressions[240] = BinaryenStore(the_module, 4, 0, 0, expressions[29], expressions[30], 1);
+ expressions[241] = BinaryenStore(the_module, 8, 2, 4, expressions[31], expressions[32], 2);
+ expressions[242] = BinaryenSelect(the_module, expressions[26], expressions[27], expressions[28]);
+ expressions[243] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
+ expressions[244] = BinaryenReturn(the_module, expressions[243]);
+ expressions[245] = BinaryenNop(the_module);
+ expressions[246] = BinaryenUnreachable(the_module);
+ BinaryenExpressionPrint(expressions[40]);
(f32.neg
(f32.const -33.61199951171875)
)
{
- BinaryenExpressionRef children[] = { expressions[30], expressions[32], expressions[34], expressions[36], expressions[38], expressions[40], expressions[42], expressions[44], expressions[46], expressions[48], expressions[50], expressions[52], expressions[54], expressions[56], expressions[58], expressions[60], expressions[62], expressions[64], expressions[66], expressions[68], expressions[70], expressions[72], expressions[74], expressions[76], expressions[78], expressions[80], expressions[82], expressions[84], expressions[86], expressions[88], expressions[90], expressions[92], expressions[94], expressions[96], expressions[98], expressions[100], expressions[103], expressions[106], expressions[109], expressions[112], expressions[115], expressions[118], expressions[121], expressions[124], expressions[127], expressions[130], expressions[133], expressions[136], expressions[139], expressions[142], expressions[145], expressions[148], expressions[151], expressions[154], expressions[157], expressions[160], expressions[163], expressions[166], expressions[169], expressions[172], expressions[175], expressions[178], expressions[181], expressions[184], expressions[187], expressions[190], expressions[193], expressions[196], expressions[197], expressions[198], expressions[199], expressions[201], expressions[203], expressions[204], expressions[206], expressions[208], expressions[209], expressions[210], expressions[212], expressions[214], expressions[217], expressions[220], expressions[222], expressions[224], expressions[227], expressions[229], expressions[231], expressions[233], expressions[235], expressions[236], expressions[237], expressions[238], expressions[240], expressions[241], expressions[242] };
- expressions[243] = BinaryenBlock(the_module, "the-value", children, 95, BinaryenUndefined());
+ BinaryenExpressionRef children[] = { expressions[34], expressions[36], expressions[38], expressions[40], expressions[42], expressions[44], expressions[46], expressions[48], expressions[50], expressions[52], expressions[54], expressions[56], expressions[58], expressions[60], expressions[62], expressions[64], expressions[66], expressions[68], expressions[70], expressions[72], expressions[74], expressions[76], expressions[78], expressions[80], expressions[82], expressions[84], expressions[86], expressions[88], expressions[90], expressions[92], expressions[94], expressions[96], expressions[98], expressions[100], expressions[102], expressions[104], expressions[107], expressions[110], expressions[113], expressions[116], expressions[119], expressions[122], expressions[125], expressions[128], expressions[131], expressions[134], expressions[137], expressions[140], expressions[143], expressions[146], expressions[149], expressions[152], expressions[155], expressions[158], expressions[161], expressions[164], expressions[167], expressions[170], expressions[173], expressions[176], expressions[179], expressions[182], expressions[185], expressions[188], expressions[191], expressions[194], expressions[197], expressions[200], expressions[201], expressions[202], expressions[203], expressions[205], expressions[207], expressions[208], expressions[210], expressions[212], expressions[213], expressions[214], expressions[216], expressions[218], expressions[221], expressions[224], expressions[226], expressions[228], expressions[231], expressions[233], expressions[235], expressions[237], expressions[239], expressions[240], expressions[241], expressions[242], expressions[244], expressions[245], expressions[246] };
+ expressions[247] = BinaryenBlock(the_module, "the-value", children, 95, BinaryenUndefined());
}
- expressions[244] = BinaryenDrop(the_module, expressions[243]);
+ expressions[248] = BinaryenDrop(the_module, expressions[247]);
{
- BinaryenExpressionRef children[] = { expressions[244] };
- expressions[245] = BinaryenBlock(the_module, "the-nothing", children, 1, BinaryenUndefined());
+ BinaryenExpressionRef children[] = { expressions[248] };
+ expressions[249] = BinaryenBlock(the_module, "the-nothing", children, 1, BinaryenUndefined());
}
- expressions[246] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
+ expressions[250] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
{
- BinaryenExpressionRef children[] = { expressions[245], expressions[246] };
- expressions[247] = BinaryenBlock(the_module, "the-body", children, 2, BinaryenUndefined());
+ BinaryenExpressionRef children[] = { expressions[249], expressions[250] };
+ expressions[251] = BinaryenBlock(the_module, "the-body", children, 2, BinaryenUndefined());
}
{
BinaryenType varTypes[] = { 1 };
- functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[0], varTypes, 1, expressions[247]);
+ functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[0], varTypes, 1, expressions[251]);
}
{
BinaryenType paramTypes[] = { 1, 4 };
@@ -1381,11 +1396,11 @@ int main() {
BinaryenFunctionRef funcs[] = { functions[0] };
BinaryenSetFunctionTable(the_module, funcs, 1);
}
- expressions[248] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ expressions[252] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
{
const char segment0[] = { 104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100 };
const char* segments[] = { segment0 };
- BinaryenExpressionRef segmentOffsets[] = { expressions[248] };
+ BinaryenExpressionRef segmentOffsets[] = { expressions[252] };
BinaryenIndex segmentSizes[] = { 12 };
BinaryenSetMemory(the_module, 1, 256, "mem", segments, segmentOffsets, segmentSizes, 1);
}
@@ -1393,10 +1408,10 @@ int main() {
BinaryenType paramTypes[] = { 0 };
functionTypes[2] = BinaryenAddFunctionType(the_module, "v", 0, paramTypes, 0);
}
- expressions[249] = BinaryenNop(the_module);
+ expressions[253] = BinaryenNop(the_module);
{
BinaryenType varTypes[] = { 0 };
- functions[1] = BinaryenAddFunction(the_module, "starter", functionTypes[2], varTypes, 0, expressions[249]);
+ functions[1] = BinaryenAddFunction(the_module, "starter", functionTypes[2], varTypes, 0, expressions[253]);
}
BinaryenSetStart(the_module, functions[1]);
{