diff options
author | Alon Zakai <alonzakai@gmail.com> | 2017-09-18 16:33:06 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-18 16:33:06 -0700 |
commit | 0532093e5856662a11cf66cbf59feaeb3acb9c29 (patch) | |
tree | f0ec2dfa924c6a57f8d29886d89a23c5980ced45 | |
parent | 8f2f6a13736336ca13d6b4bccb1af6d34f3aae48 (diff) | |
download | binaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.tar.gz binaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.tar.bz2 binaryen-0532093e5856662a11cf66cbf59feaeb3acb9c29.zip |
Expressions should not appear twice in the ast (#1191)
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | src/wasm-emscripten.cpp | 3 | ||||
-rw-r--r-- | src/wasm-validator.h | 3 | ||||
-rw-r--r-- | src/wasm/wasm-validator.cpp | 18 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.c | 39 | ||||
-rw-r--r-- | test/example/c-api-kitchen-sink.txt | 485 |
6 files changed, 307 insertions, 249 deletions
@@ -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]); { |