summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xauto_update_tests.py3
-rwxr-xr-xcheck.py3
-rw-r--r--scripts/fuzz_relooper.py6
-rw-r--r--src/asm2wasm.h28
-rw-r--r--src/ast_utils.h50
-rw-r--r--src/binaryen-c.cpp43
-rw-r--r--src/binaryen-c.h9
-rw-r--r--src/passes/CoalesceLocals.cpp12
-rw-r--r--src/passes/DeadCodeElimination.cpp21
-rw-r--r--src/passes/MergeBlocks.cpp19
-rw-r--r--src/passes/Print.cpp16
-rw-r--r--src/passes/SimplifyLocals.cpp42
-rw-r--r--src/passes/Vacuum.cpp8
-rw-r--r--src/s2wasm.h5
-rw-r--r--src/shell-interface.h2
-rw-r--r--src/wasm-binary.h45
-rw-r--r--src/wasm-builder.h24
-rw-r--r--src/wasm-interpreter.h12
-rw-r--r--src/wasm-js.cpp4
-rw-r--r--src/wasm-s-parser.h27
-rw-r--r--src/wasm-traversal.h13
-rw-r--r--src/wasm-validator.h124
-rw-r--r--src/wasm.h28
-rw-r--r--test/emcc_O2_hello_world.fromasm1050
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise1050
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise.no-opts246
-rw-r--r--test/emcc_O2_hello_world.fromasm.no-opts246
-rw-r--r--test/emcc_hello_world.fromasm2526
-rw-r--r--test/emcc_hello_world.fromasm.imprecise2526
-rw-r--r--test/emcc_hello_world.fromasm.imprecise.no-opts426
-rw-r--r--test/emcc_hello_world.fromasm.no-opts426
-rw-r--r--test/example/c-api-kitchen-sink.c43
-rw-r--r--test/example/c-api-kitchen-sink.txt2259
-rw-r--r--test/example/c-api-kitchen-sink.txt.txt879
-rw-r--r--test/example/relooper-fuzz.c6
-rw-r--r--test/example/relooper-fuzz.txt10
-rw-r--r--test/example/relooper-fuzz1.c6
-rw-r--r--test/example/relooper-fuzz1.txt10
-rw-r--r--test/kitchen_sink.wast1078
-rw-r--r--test/kitchen_sink.wast.fromBinary1078
-rw-r--r--test/llvm_autogenerated/byval.wast98
-rw-r--r--test/llvm_autogenerated/cfg-stackify.wast248
-rw-r--r--test/llvm_autogenerated/dead-vreg.wast22
-rw-r--r--test/llvm_autogenerated/i128.wast401
-rw-r--r--test/llvm_autogenerated/i64-load-store-alignment.wast8
-rw-r--r--test/llvm_autogenerated/legalize.wast95
-rw-r--r--test/llvm_autogenerated/mem-intrinsics.wast95
-rw-r--r--test/llvm_autogenerated/offset.wast119
-rw-r--r--test/llvm_autogenerated/phi.wast2
-rw-r--r--test/llvm_autogenerated/reg-stackify.wast151
-rw-r--r--test/llvm_autogenerated/store-results.wast50
-rw-r--r--test/llvm_autogenerated/store-trunc.wast2
-rw-r--r--test/llvm_autogenerated/userstack.wast177
-rw-r--r--test/llvm_autogenerated/varargs.wast78
-rw-r--r--test/memorygrowth.fromasm1050
-rw-r--r--test/memorygrowth.fromasm.imprecise1050
-rw-r--r--test/memorygrowth.fromasm.imprecise.no-opts248
-rw-r--r--test/memorygrowth.fromasm.no-opts248
-rw-r--r--test/min.fromasm.imprecise.no-opts26
-rw-r--r--test/min.fromasm.no-opts26
-rw-r--r--test/min.wast2
-rw-r--r--test/min.wast.fromBinary2
-rw-r--r--test/passes/coalesce-locals-learning.txt352
-rw-r--r--test/passes/coalesce-locals-learning.wast718
-rw-r--r--test/passes/coalesce-locals.txt372
-rw-r--r--test/passes/coalesce-locals.wast768
-rw-r--r--test/passes/dce.txt94
-rw-r--r--test/passes/dce.wast376
-rw-r--r--test/passes/drop-return-values.txt32
-rw-r--r--test/passes/drop-return-values.wast9
-rw-r--r--test/passes/duplicate-function-elimination.txt382
-rw-r--r--test/passes/duplicate-function-elimination.wast1101
-rw-r--r--test/passes/metrics.txt35
-rw-r--r--test/passes/metrics.wast41
-rw-r--r--test/passes/nm.txt32
-rw-r--r--test/passes/nm.wast37
-rw-r--r--test/passes/optimize-instructions.txt196
-rw-r--r--test/passes/optimize-instructions.wast208
-rw-r--r--test/passes/post-emscripten.txt44
-rw-r--r--test/passes/post-emscripten.wast64
-rw-r--r--test/passes/precompute.txt24
-rw-r--r--test/passes/precompute.wast48
-rw-r--r--test/passes/remove-imports.txt8
-rw-r--r--test/passes/remove-imports.wast13
-rw-r--r--test/passes/remove-unused-brs.txt188
-rw-r--r--test/passes/remove-unused-brs.wast319
-rw-r--r--test/passes/remove-unused-functions.wast29
-rw-r--r--test/passes/remove-unused-names.wast21
-rw-r--r--test/passes/remove-unused-names_merge-blocks.txt718
-rw-r--r--test/passes/remove-unused-names_merge-blocks.wast970
-rw-r--r--test/passes/reorder-functions.wast16
-rw-r--r--test/passes/reorder-locals.txt4
-rw-r--r--test/passes/reorder-locals.wast60
-rw-r--r--test/passes/simplify-locals.txt448
-rw-r--r--test/passes/simplify-locals.wast546
-rw-r--r--test/passes/vacuum.txt60
-rw-r--r--test/passes/vacuum.wast277
-rw-r--r--test/two_sides.fromasm4
-rw-r--r--test/two_sides.fromasm.imprecise4
-rw-r--r--test/unit.asm.js10
-rw-r--r--test/unit.fromasm94
-rw-r--r--test/unit.fromasm.imprecise86
-rw-r--r--test/unit.fromasm.imprecise.no-opts226
-rw-r--r--test/unit.fromasm.no-opts226
-rw-r--r--test/unit.wast64
-rw-r--r--test/unit.wast.fromBinary64
106 files changed, 16826 insertions, 11169 deletions
diff --git a/auto_update_tests.py b/auto_update_tests.py
index 1ecbb7a40..56c0d831d 100755
--- a/auto_update_tests.py
+++ b/auto_update_tests.py
@@ -23,9 +23,11 @@ for asm in sorted(os.listdir('test')):
actual, err = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
with open(os.path.join('test', wasm), 'w') as o: o.write(actual)
+'''
for dot_s_dir in ['dot_s', 'llvm_autogenerated']:
for s in sorted(os.listdir(os.path.join('test', dot_s_dir))):
if not s.endswith('.s'): continue
+ if s in ['indirect-import.s', 'memops.s', 'byval.s', 'cfg-stackify.s', 'dead-vreg.s', 'i128.s', 'legalize.s', 'mem-intrinsics.s', 'offset.s', 'reg-stackify.s', 'store-results.s', 'userstack.s', 'varargs.s']: continue # tests with invalid drop() code (use return of store)
print '..', s
wasm = s.replace('.s', '.wast')
full = os.path.join('test', dot_s_dir, s)
@@ -38,6 +40,7 @@ for dot_s_dir in ['dot_s', 'llvm_autogenerated']:
expected_file = os.path.join('test', dot_s_dir, wasm)
with open(expected_file, 'w') as o: o.write(actual)
+'''
'''
for wasm in ['address.wast']:#os.listdir(os.path.join('test', 'spec')):
diff --git a/check.py b/check.py
index 852cbf6ad..f7bc0a00e 100755
--- a/check.py
+++ b/check.py
@@ -424,7 +424,6 @@ for t in spec_tests:
# compare all the outputs to the expected output
check_expected(actual, os.path.join('test', 'spec', 'expected-output', os.path.basename(wast) + '.log'))
-
if has_node:
print '\n[ checking binaryen.js testcases... ]\n'
@@ -636,7 +635,7 @@ for t in sorted(os.listdir(os.path.join('test', 'example'))):
if has_emcc:
- if has_mozjs:
+ if has_mozjs and 0:
print '\n[ checking native wasm support ]\n'
diff --git a/scripts/fuzz_relooper.py b/scripts/fuzz_relooper.py
index 53a16c8bd..52c296e58 100644
--- a/scripts/fuzz_relooper.py
+++ b/scripts/fuzz_relooper.py
@@ -114,7 +114,8 @@ int main() {
BinaryenLoad(module, 4, 0, 0, 0, BinaryenInt32(),
BinaryenConst(module, BinaryenLiteralInt32(4))),
BinaryenConst(module, BinaryenLiteralInt32(4))
- )
+ ),
+ BinaryenInt32()
);
// optionally, print the return value
@@ -252,7 +253,8 @@ int main() {
full[i] = BinaryenStore(module,
4, 0, 0,
BinaryenConst(module, BinaryenLiteralInt32(8 + 4 * i)),
- BinaryenConst(module, BinaryenLiteralInt32(decisions[i]))
+ BinaryenConst(module, BinaryenLiteralInt32(decisions[i])),
+ BinaryenInt32()
);
}
}
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index ce3c0749d..857145937 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -793,6 +793,7 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
};
PassRunner passRunner(&wasm);
passRunner.add<FinalizeCalls>(this);
+ passRunner.add<AutoDrop>();
passRunner.run();
// apply memory growth, if relevant
@@ -802,7 +803,7 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
wasm.addFunction(builder.makeFunction(
GROW_WASM_MEMORY,
{ { NEW_SIZE, i32 } },
- none,
+ i32,
{},
builder.makeHost(
GrowMemory,
@@ -1009,7 +1010,8 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
auto ret = allocator.alloc<SetLocal>();
ret->index = function->getLocalIndex(ast[2][1]->getIString());
ret->value = process(ast[3]);
- ret->type = ret->value->type;
+ ret->setTee(false);
+ ret->finalize();
return ret;
}
// global var, do a store to memory
@@ -1021,7 +1023,8 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
ret->align = ret->bytes;
ret->ptr = builder.makeConst(Literal(int32_t(global.address)));
ret->value = process(ast[3]);
- ret->type = global.type;
+ ret->valueType = global.type;
+ ret->finalize();
return ret;
} else if (ast[2][0] == SUB) {
Ref target = ast[2];
@@ -1035,10 +1038,11 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
ret->align = view.bytes;
ret->ptr = processUnshifted(target[2], view.bytes);
ret->value = process(ast[3]);
- ret->type = asmToWasmType(view.type);
- if (ret->type != ret->value->type) {
+ ret->valueType = asmToWasmType(view.type);
+ ret->finalize();
+ if (ret->valueType != ret->value->type) {
// in asm.js we have some implicit coercions that we must do explicitly here
- if (ret->type == f32 && ret->value->type == f64) {
+ if (ret->valueType == f32 && ret->value->type == f64) {
auto conv = allocator.alloc<Unary>();
conv->op = DemoteFloat64;
conv->value = ret->value;
@@ -1273,11 +1277,7 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
}
abort_on("bad unary", ast);
} else if (what == IF) {
- auto ret = allocator.alloc<If>();
- ret->condition = process(ast[1]);
- ret->ifTrue = process(ast[2]);
- ret->ifFalse = !!ast[3] ? process(ast[3]) : nullptr;
- return ret;
+ return builder.makeIf(process(ast[1]), process(ast[2]), !!ast[3] ? process(ast[3]) : nullptr);
} else if (what == CALL) {
if (ast[1][0] == NAME) {
IString name = ast[1][1]->getIString();
@@ -1330,9 +1330,10 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
// No wasm support, so use a temp local
ensureI32Temp();
auto set = allocator.alloc<SetLocal>();
+ set->setTee(false);
set->index = function->getLocalIndex(I32_TEMP);
set->value = value;
- set->type = i32;
+ set->finalize();
auto get = [&]() {
auto ret = allocator.alloc<GetLocal>();
ret->index = function->getLocalIndex(I32_TEMP);
@@ -1526,6 +1527,9 @@ Function* Asm2WasmBuilder::processFunction(Ref ast) {
if (breakSeeker.found == 0) {
auto block = allocator.alloc<Block>();
block->list.push_back(child);
+ if (isConcreteWasmType(child->type)) {
+ block->list.push_back(builder.makeNop()); // ensure a nop at the end, so the block has guaranteed none type and no values fall through
+ }
block->name = stop;
block->finalize();
return block;
diff --git a/src/ast_utils.h b/src/ast_utils.h
index 3e45d0e33..17f5490a9 100644
--- a/src/ast_utils.h
+++ b/src/ast_utils.h
@@ -21,6 +21,7 @@
#include "wasm.h"
#include "wasm-traversal.h"
#include "wasm-builder.h"
+#include "pass.h"
namespace wasm {
@@ -277,7 +278,11 @@ struct ExpressionManipulator {
return builder.makeGetLocal(curr->index, curr->type);
}
Expression* visitSetLocal(SetLocal *curr) {
- return builder.makeSetLocal(curr->index, copy(curr->value));
+ if (curr->isTee()) {
+ return builder.makeTeeLocal(curr->index, copy(curr->value));
+ } else {
+ return builder.makeSetLocal(curr->index, copy(curr->value));
+ }
}
Expression* visitGetGlobal(GetGlobal *curr) {
return builder.makeGetGlobal(curr->index, curr->type);
@@ -289,7 +294,7 @@ struct ExpressionManipulator {
return builder.makeLoad(curr->bytes, curr->signed_, curr->offset, curr->align, copy(curr->ptr), curr->type);
}
Expression* visitStore(Store *curr) {
- return builder.makeStore(curr->bytes, curr->offset, curr->align, copy(curr->ptr), copy(curr->value));
+ return builder.makeStore(curr->bytes, curr->offset, curr->align, copy(curr->ptr), copy(curr->value), curr->valueType);
}
Expression* visitConst(Const *curr) {
return builder.makeConst(curr->value);
@@ -303,6 +308,9 @@ struct ExpressionManipulator {
Expression* visitSelect(Select *curr) {
return builder.makeSelect(copy(curr->condition), copy(curr->ifTrue), copy(curr->ifFalse));
}
+ Expression* visitDrop(Drop *curr) {
+ return builder.makeDrop(copy(curr->value));
+ }
Expression* visitReturn(Return *curr) {
return builder.makeReturn(copy(curr->value));
}
@@ -340,7 +348,7 @@ struct ExpressionAnalyzer {
for (int i = int(stack.size()) - 2; i >= 0; i--) {
auto* curr = stack[i];
auto* above = stack[i + 1];
- // only if and block can drop values
+ // only if and block can drop values (pre-drop expression was added) FIXME
if (curr->is<Block>()) {
auto* block = curr->cast<Block>();
for (size_t j = 0; j < block->list.size() - 1; j++) {
@@ -355,6 +363,7 @@ struct ExpressionAnalyzer {
assert(above == iff->ifTrue || above == iff->ifFalse);
// continue down
} else {
+ if (curr->is<Drop>()) return false;
return true; // all other node types use the result
}
}
@@ -481,6 +490,7 @@ struct ExpressionAnalyzer {
}
case Expression::Id::SetLocalId: {
CHECK(SetLocal, index);
+ CHECK(SetLocal, type); // for tee/set
PUSH(SetLocal, value);
break;
}
@@ -505,6 +515,7 @@ struct ExpressionAnalyzer {
CHECK(Store, bytes);
CHECK(Store, offset);
CHECK(Store, align);
+ CHECK(Store, valueType);
PUSH(Store, ptr);
PUSH(Store, value);
break;
@@ -530,6 +541,10 @@ struct ExpressionAnalyzer {
PUSH(Select, condition);
break;
}
+ case Expression::Id::DropId: {
+ PUSH(Drop, value);
+ break;
+ }
case Expression::Id::ReturnId: {
PUSH(Return, value);
break;
@@ -716,6 +731,7 @@ struct ExpressionAnalyzer {
HASH(Store, bytes);
HASH(Store, offset);
HASH(Store, align);
+ HASH(Store, valueType);
PUSH(Store, ptr);
PUSH(Store, value);
break;
@@ -742,6 +758,10 @@ struct ExpressionAnalyzer {
PUSH(Select, condition);
break;
}
+ case Expression::Id::DropId: {
+ PUSH(Drop, value);
+ break;
+ }
case Expression::Id::ReturnId: {
PUSH(Return, value);
break;
@@ -770,6 +790,30 @@ struct ExpressionAnalyzer {
}
};
+// Adds drop() operations where necessary. This lets you not worry about adding drop when
+// generating code.
+struct AutoDrop : public WalkerPass<PostWalker<AutoDrop, Visitor<AutoDrop>>> {
+ bool isFunctionParallel() override { return true; }
+
+ Pass* create() override { return new AutoDrop; }
+
+ void visitBlock(Block* curr) {
+ if (curr->list.size() <= 1) return;
+ for (Index i = 0; i < curr->list.size() - 1; i++) {
+ auto* child = curr->list[i];
+ if (isConcreteWasmType(child->type)) {
+ curr->list[i] = Builder(*getModule()).makeDrop(child);
+ }
+ }
+ }
+
+ void visitFunction(Function* curr) {
+ if (curr->result == none && isConcreteWasmType(curr->body->type)) {
+ curr->body = Builder(*getModule()).makeDrop(curr->body);
+ }
+ }
+};
+
} // namespace wasm
#endif // wasm_ast_utils_h
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 83c626eb1..71c6cad80 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -488,6 +488,21 @@ BinaryenExpressionRef BinaryenSetLocal(BinaryenModuleRef module, BinaryenIndex i
ret->index = index;
ret->value = (Expression*)value;
+ ret->setTee(false);
+ ret->finalize();
+ return static_cast<Expression*>(ret);
+}
+BinaryenExpressionRef BinaryenTeeLocal(BinaryenModuleRef module, BinaryenIndex index, BinaryenExpressionRef value) {
+ auto* ret = ((Module*)module)->allocator.alloc<SetLocal>();
+
+ if (tracing) {
+ auto id = noteExpression(ret);
+ std::cout << " expressions[" << id << "] = BinaryenTeeLocal(the_module, " << index << ", expressions[" << expressions[value] << "]);\n";
+ }
+
+ ret->index = index;
+ ret->value = (Expression*)value;
+ ret->setTee(true);
ret->finalize();
return static_cast<Expression*>(ret);
}
@@ -508,12 +523,12 @@ BinaryenExpressionRef BinaryenLoad(BinaryenModuleRef module, uint32_t bytes, int
ret->finalize();
return static_cast<Expression*>(ret);
}
-BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module, uint32_t bytes, uint32_t offset, uint32_t align, BinaryenExpressionRef ptr, BinaryenExpressionRef value) {
+BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module, uint32_t bytes, uint32_t offset, uint32_t align, BinaryenExpressionRef ptr, BinaryenExpressionRef value, BinaryenType type) {
auto* ret = ((Module*)module)->allocator.alloc<Store>();
if (tracing) {
auto id = noteExpression(ret);
- std::cout << " expressions[" << id << "] = BinaryenStore(the_module, " << bytes << ", " << offset << ", " << align << ", expressions[" << expressions[ptr] << "], expressions[" << expressions[value] << "]);\n";
+ std::cout << " expressions[" << id << "] = BinaryenStore(the_module, " << bytes << ", " << offset << ", " << align << ", expressions[" << expressions[ptr] << "], expressions[" << expressions[value] << "], " << type << ");\n";
}
ret->bytes = bytes;
@@ -521,6 +536,7 @@ BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module, uint32_t bytes, ui
ret->align = align ? align : bytes;
ret->ptr = (Expression*)ptr;
ret->value = (Expression*)value;
+ ret->valueType = WasmType(type);
ret->finalize();
return static_cast<Expression*>(ret);
}
@@ -584,6 +600,18 @@ BinaryenExpressionRef BinaryenSelect(BinaryenModuleRef module, BinaryenExpressio
ret->finalize();
return static_cast<Expression*>(ret);
}
+BinaryenExpressionRef BinaryenDrop(BinaryenModuleRef module, BinaryenExpressionRef value) {
+ auto* ret = ((Module*)module)->allocator.alloc<Drop>();
+
+ if (tracing) {
+ auto id = noteExpression(ret);
+ std::cout << " expressions[" << id << "] = BinaryenDrop(the_module, expressions[" << expressions[value] << "]);\n";
+ }
+
+ ret->value = (Expression*)value;
+ ret->finalize();
+ return static_cast<Expression*>(ret);
+}
BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module, BinaryenExpressionRef value) {
auto* ret = Builder(*((Module*)module)).makeReturn((Expression*)value);
@@ -829,6 +857,17 @@ void BinaryenModuleOptimize(BinaryenModuleRef module) {
passRunner.run();
}
+void BinaryenModuleAutoDrop(BinaryenModuleRef module) {
+ if (tracing) {
+ std::cout << " BinaryenModuleAutoDrop(the_module);\n";
+ }
+
+ Module* wasm = (Module*)module;
+ PassRunner passRunner(wasm);
+ passRunner.add<AutoDrop>();
+ passRunner.run();
+}
+
size_t BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize) {
if (tracing) {
std::cout << " // BinaryenModuleWrite\n";
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index e2086072b..7ca5cd6c7 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -294,14 +294,16 @@ BinaryenExpressionRef BinaryenCallIndirect(BinaryenModuleRef module, BinaryenExp
// for more details.
BinaryenExpressionRef BinaryenGetLocal(BinaryenModuleRef module, BinaryenIndex index, BinaryenType type);
BinaryenExpressionRef BinaryenSetLocal(BinaryenModuleRef module, BinaryenIndex index, BinaryenExpressionRef value);
+BinaryenExpressionRef BinaryenTeeLocal(BinaryenModuleRef module, BinaryenIndex index, BinaryenExpressionRef value);
// Load: align can be 0, in which case it will be the natural alignment (equal to bytes)
BinaryenExpressionRef BinaryenLoad(BinaryenModuleRef module, uint32_t bytes, int8_t signed_, uint32_t offset, uint32_t align, BinaryenType type, BinaryenExpressionRef ptr);
// Store: align can be 0, in which case it will be the natural alignment (equal to bytes)
-BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module, uint32_t bytes, uint32_t offset, uint32_t align, BinaryenExpressionRef ptr, BinaryenExpressionRef value);
+BinaryenExpressionRef BinaryenStore(BinaryenModuleRef module, uint32_t bytes, uint32_t offset, uint32_t align, BinaryenExpressionRef ptr, BinaryenExpressionRef value, BinaryenType type);
BinaryenExpressionRef BinaryenConst(BinaryenModuleRef module, struct BinaryenLiteral value);
BinaryenExpressionRef BinaryenUnary(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef value);
BinaryenExpressionRef BinaryenBinary(BinaryenModuleRef module, BinaryenOp op, BinaryenExpressionRef left, BinaryenExpressionRef right);
BinaryenExpressionRef BinaryenSelect(BinaryenModuleRef module, BinaryenExpressionRef condition, BinaryenExpressionRef ifTrue, BinaryenExpressionRef ifFalse);
+BinaryenExpressionRef BinaryenDrop(BinaryenModuleRef module, BinaryenExpressionRef value);
// Return: value can be NULL
BinaryenExpressionRef BinaryenReturn(BinaryenModuleRef module, BinaryenExpressionRef value);
// Host: name may be NULL
@@ -366,6 +368,11 @@ int BinaryenModuleValidate(BinaryenModuleRef module);
// Run the standard optimization passes on the module.
void BinaryenModuleOptimize(BinaryenModuleRef module);
+// Auto-generate drop() operations where needed. This lets you generate code without
+// worrying about where they are needed. (It is more efficient to do it yourself,
+// but simpler to use autodrop).
+void BinaryenModuleAutoDrop(BinaryenModuleRef module);
+
// Serialize a module into binary form.
// @return how many bytes were written. This will be less than or equal to bufferSize
size_t BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize);
diff --git a/src/passes/CoalesceLocals.cpp b/src/passes/CoalesceLocals.cpp
index 2c707b614..2063a20db 100644
--- a/src/passes/CoalesceLocals.cpp
+++ b/src/passes/CoalesceLocals.cpp
@@ -485,9 +485,19 @@ void CoalesceLocals::applyIndices(std::vector<Index>& indices, Expression* root)
// in addition, we can optimize out redundant copies and ineffective sets
GetLocal* get;
if ((get = set->value->dynCast<GetLocal>()) && get->index == set->index) {
- *action.origin = get; // further optimizations may get rid of the get, if this is in a place where the output does not matter
+ if (set->isTee()) {
+ *action.origin = get;
+ } else {
+ ExpressionManipulator::nop(set);
+ }
} else if (!action.effective) {
*action.origin = set->value; // value may have no side effects, further optimizations can eliminate it
+ if (!set->isTee()) {
+ // we need to drop it
+ Drop* drop = ExpressionManipulator::convert<SetLocal, Drop>(set);
+ drop->value = *action.origin;
+ *action.origin = drop;
+ }
}
}
}
diff --git a/src/passes/DeadCodeElimination.cpp b/src/passes/DeadCodeElimination.cpp
index de1191131..aba442e71 100644
--- a/src/passes/DeadCodeElimination.cpp
+++ b/src/passes/DeadCodeElimination.cpp
@@ -31,6 +31,7 @@
#include <wasm.h>
#include <pass.h>
#include <ast_utils.h>
+#include <wasm-builder.h>
namespace wasm {
@@ -191,6 +192,7 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
case Expression::Id::UnaryId: DELEGATE(Unary);
case Expression::Id::BinaryId: DELEGATE(Binary);
case Expression::Id::SelectId: DELEGATE(Select);
+ case Expression::Id::DropId: DELEGATE(Drop);
case Expression::Id::ReturnId: DELEGATE(Return);
case Expression::Id::HostId: DELEGATE(Host);
case Expression::Id::NopId: DELEGATE(Nop);
@@ -226,6 +228,11 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
// other things
+ Expression* drop(Expression* toDrop) {
+ if (toDrop->is<Unreachable>()) return toDrop;
+ return Builder(*getModule()).makeDrop(toDrop);
+ }
+
template<typename T>
void handleCall(T* curr, Expression* initial) {
for (Index i = 0; i < curr->operands.size(); i++) {
@@ -236,11 +243,11 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
block->list.resize(newSize);
Index j = 0;
if (initial) {
- block->list[j] = initial;
+ block->list[j] = drop(initial);
j++;
}
for (; j < newSize; j++) {
- block->list[j] = curr->operands[j - (initial ? 1 : 0)];
+ block->list[j] = drop(curr->operands[j - (initial ? 1 : 0)]);
}
block->finalize();
replaceCurrent(block);
@@ -288,7 +295,7 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
if (isDead(curr->value)) {
auto* block = getModule()->allocator.alloc<Block>();
block->list.resize(2);
- block->list[0] = curr->ptr;
+ block->list[0] = drop(curr->ptr);
block->list[1] = curr->value;
block->finalize();
replaceCurrent(block);
@@ -309,7 +316,7 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
if (isDead(curr->right)) {
auto* block = getModule()->allocator.alloc<Block>();
block->list.resize(2);
- block->list[0] = curr->left;
+ block->list[0] = drop(curr->left);
block->list[1] = curr->right;
block->finalize();
replaceCurrent(block);
@@ -324,7 +331,7 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
if (isDead(curr->ifFalse)) {
auto* block = getModule()->allocator.alloc<Block>();
block->list.resize(2);
- block->list[0] = curr->ifTrue;
+ block->list[0] = drop(curr->ifTrue);
block->list[1] = curr->ifFalse;
block->finalize();
replaceCurrent(block);
@@ -333,8 +340,8 @@ struct DeadCodeElimination : public WalkerPass<PostWalker<DeadCodeElimination, V
if (isDead(curr->condition)) {
auto* block = getModule()->allocator.alloc<Block>();
block->list.resize(3);
- block->list[0] = curr->ifTrue;
- block->list[1] = curr->ifFalse;
+ block->list[0] = drop(curr->ifTrue);
+ block->list[1] = drop(curr->ifFalse);
block->list[2] = curr->condition;
block->finalize();
replaceCurrent(block);
diff --git a/src/passes/MergeBlocks.cpp b/src/passes/MergeBlocks.cpp
index 686bb5d75..4798ad28d 100644
--- a/src/passes/MergeBlocks.cpp
+++ b/src/passes/MergeBlocks.cpp
@@ -74,10 +74,27 @@ struct MergeBlocks : public WalkerPass<PostWalker<MergeBlocks, Visitor<MergeBloc
void visitBlock(Block *curr) {
bool more = true;
+ bool changed = false;
while (more) {
more = false;
for (size_t i = 0; i < curr->list.size(); i++) {
Block* child = curr->list[i]->dynCast<Block>();
+ if (!child) {
+ // TODO: if we have a child that is (drop (block ..)) then we can move the drop into the block, allowing more merging,
+ // but we must also drop values from brs
+ /*
+ auto* drop = curr->list[i]->dynCast<Drop>();
+ if (drop) {
+ child = drop->value->dynCast<Block>();
+ if (child) {
+ // reuse the drop
+ drop->value = child->list.back();
+ child->list.back() = drop;
+ curr->list[i] = child;
+ }
+ }
+ */
+ }
if (!child) continue;
if (child->name.is()) continue; // named blocks can have breaks to them (and certainly do, if we ran RemoveUnusedNames and RemoveUnusedBrs)
ExpressionList merged(getModule()->allocator);
@@ -92,9 +109,11 @@ struct MergeBlocks : public WalkerPass<PostWalker<MergeBlocks, Visitor<MergeBloc
}
curr->list = merged;
more = true;
+ changed = true;
break;
}
}
+ if (changed) curr->finalize();
}
Block* optimize(Expression* curr, Expression*& child, Block* outer = nullptr, Expression** dependency1 = nullptr, Expression** dependency2 = nullptr) {
diff --git a/src/passes/Print.cpp b/src/passes/Print.cpp
index 7486e07f1..ac349abc7 100644
--- a/src/passes/Print.cpp
+++ b/src/passes/Print.cpp
@@ -240,7 +240,12 @@ struct PrintSExpression : public Visitor<PrintSExpression> {
printOpening(o, "get_local ") << printableLocal(curr->index) << ')';
}
void visitSetLocal(SetLocal *curr) {
- printOpening(o, "set_local ") << printableLocal(curr->index);
+ if (curr->isTee()) {
+ printOpening(o, "tee_local ");
+ } else {
+ printOpening(o, "set_local ");
+ }
+ o << printableLocal(curr->index);
incIndent();
printFullLine(curr->value);
decIndent();
@@ -282,7 +287,7 @@ struct PrintSExpression : public Visitor<PrintSExpression> {
}
void visitStore(Store *curr) {
o << '(';
- prepareColor(o) << printWasmType(curr->type) << ".store";
+ prepareColor(o) << printWasmType(curr->valueType) << ".store";
if (curr->bytes < 4 || (curr->type == i64 && curr->bytes < 8)) {
if (curr->bytes == 1) {
o << '8';
@@ -467,6 +472,13 @@ struct PrintSExpression : public Visitor<PrintSExpression> {
printFullLine(curr->condition);
decIndent();
}
+ void visitDrop(Drop *curr) {
+ o << '(';
+ prepareColor(o) << "drop";
+ incIndent();
+ printFullLine(curr->value);
+ decIndent();
+ }
void visitReturn(Return *curr) {
printOpening(o, "return");
if (!curr->value || curr->value->is<Nop>()) {
diff --git a/src/passes/SimplifyLocals.cpp b/src/passes/SimplifyLocals.cpp
index d9786e62c..5315edac4 100644
--- a/src/passes/SimplifyLocals.cpp
+++ b/src/passes/SimplifyLocals.cpp
@@ -55,7 +55,13 @@ struct SetLocalRemover : public PostWalker<SetLocalRemover, Visitor<SetLocalRemo
void visitSetLocal(SetLocal *curr) {
if ((*numGetLocals)[curr->index] == 0) {
- replaceCurrent(curr->value);
+ auto* value = curr->value;
+ if (curr->isTee()) {
+ replaceCurrent(value);
+ } else {
+ Drop* drop = ExpressionManipulator::convert<SetLocal, Drop>(curr);
+ drop->value = value;
+ }
}
}
};
@@ -180,7 +186,10 @@ struct SimplifyLocals : public WalkerPass<LinearExecutionWalker<SimplifyLocals,
auto found = sinkables.find(curr->index);
if (found != sinkables.end()) {
// sink it, and nop the origin
- replaceCurrent(*found->second.item);
+ auto* set = (*found->second.item)->cast<SetLocal>();
+ replaceCurrent(set);
+ assert(!set->isTee());
+ set->setTee(true);
// reuse the getlocal that is dying
*found->second.item = curr;
ExpressionManipulator::nop(curr);
@@ -189,6 +198,16 @@ struct SimplifyLocals : public WalkerPass<LinearExecutionWalker<SimplifyLocals,
}
}
+ void visitDrop(Drop* curr) {
+ // collapse drop-tee into set, which can occur if a get was sunk into a tee
+ auto* set = curr->value->dynCast<SetLocal>();
+ if (set) {
+ assert(set->isTee());
+ set->setTee(false);
+ replaceCurrent(set);
+ }
+ }
+
void checkInvalidations(EffectAnalyzer& effects) {
// TODO: this is O(bad)
std::vector<Index> invalidated;
@@ -225,7 +244,11 @@ struct SimplifyLocals : public WalkerPass<LinearExecutionWalker<SimplifyLocals,
// store is dead, leave just the value
auto found = self->sinkables.find(set->index);
if (found != self->sinkables.end()) {
- *found->second.item = (*found->second.item)->cast<SetLocal>()->value;
+ auto* previous = (*found->second.item)->cast<SetLocal>();
+ assert(!previous->isTee());
+ auto* previousValue = previous->value;
+ Drop* drop = ExpressionManipulator::convert<SetLocal, Drop>(previous);
+ drop->value = previousValue;
self->sinkables.erase(found);
self->anotherCycle = true;
}
@@ -236,15 +259,10 @@ struct SimplifyLocals : public WalkerPass<LinearExecutionWalker<SimplifyLocals,
self->checkInvalidations(effects);
}
- if (set) {
- // we may be a replacement for the current node, update the stack
- self->expressionStack.pop_back();
- self->expressionStack.push_back(set);
- if (!ExpressionAnalyzer::isResultUsed(self->expressionStack, self->getFunction())) {
- Index index = set->index;
- assert(self->sinkables.count(index) == 0);
- self->sinkables.emplace(std::make_pair(index, SinkableInfo(currp)));
- }
+ if (set && !set->isTee()) {
+ Index index = set->index;
+ assert(self->sinkables.count(index) == 0);
+ self->sinkables.emplace(std::make_pair(index, SinkableInfo(currp)));
}
self->expressionStack.pop_back();
diff --git a/src/passes/Vacuum.cpp b/src/passes/Vacuum.cpp
index 0195427d7..1b0887181 100644
--- a/src/passes/Vacuum.cpp
+++ b/src/passes/Vacuum.cpp
@@ -41,6 +41,7 @@ struct Vacuum : public WalkerPass<PostWalker<Vacuum, Visitor<Vacuum>>> {
case Expression::Id::BlockId: return curr; // not always needed, but handled in visitBlock()
case Expression::Id::IfId: return curr; // not always needed, but handled in visitIf()
case Expression::Id::LoopId: return curr; // not always needed, but handled in visitLoop()
+ case Expression::Id::DropId: return curr; // not always needed, but handled in visitDrop()
case Expression::Id::BreakId:
case Expression::Id::SwitchId:
@@ -198,6 +199,13 @@ struct Vacuum : public WalkerPass<PostWalker<Vacuum, Visitor<Vacuum>>> {
if (curr->body->is<Nop>()) ExpressionManipulator::nop(curr);
}
+ void visitDrop(Drop* curr) {
+ // if the drop input has no side effects, it can be wiped out
+ if (!EffectAnalyzer(curr->value).hasSideEffects()) {
+ ExpressionManipulator::nop(curr);
+ }
+ }
+
static void visitPre(Vacuum* self, Expression** currp) {
self->expressionStack.push_back(*currp);
}
diff --git a/src/s2wasm.h b/src/s2wasm.h
index a23cbb549..5226ceda3 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -753,6 +753,7 @@ class S2WasmBuilder {
set->index = func->getLocalIndex(assign);
set->value = curr;
set->type = curr->type;
+ set->setTee(false);
addToBlock(set);
}
};
@@ -834,7 +835,7 @@ class S2WasmBuilder {
auto makeStore = [&](WasmType type) {
skipComma();
auto curr = allocator->alloc<Store>();
- curr->type = type;
+ curr->valueType = type;
int32_t bytes = getInt() / CHAR_BIT;
curr->bytes = bytes > 0 ? bytes : getWasmTypeSize(type);
Name assign = getAssign();
@@ -849,6 +850,7 @@ class S2WasmBuilder {
curr->align = 1U << getInt(attributes[0] + 8);
}
curr->value = inputs[1];
+ curr->finalize();
setOutput(curr, assign);
};
auto makeSelect = [&](WasmType type) {
@@ -1146,6 +1148,7 @@ class S2WasmBuilder {
Name assign = getAssign();
skipComma();
auto curr = allocator->alloc<SetLocal>();
+ curr->setTee(true);
curr->index = func->getLocalIndex(getAssign());
skipComma();
curr->value = getInput();
diff --git a/src/shell-interface.h b/src/shell-interface.h
index f332307ad..2b0c491b9 100644
--- a/src/shell-interface.h
+++ b/src/shell-interface.h
@@ -167,7 +167,7 @@ struct ShellExternalInterface : ModuleInstance::ExternalInterface {
}
void store(Store* store, Address addr, Literal value) override {
- switch (store->type) {
+ switch (store->valueType) {
case i32: {
switch (store->bytes) {
case 1: memory.set<int8_t>(addr, value.geti32()); break;
diff --git a/src/wasm-binary.h b/src/wasm-binary.h
index 04bebddc5..791a0459b 100644
--- a/src/wasm-binary.h
+++ b/src/wasm-binary.h
@@ -412,6 +412,7 @@ enum ASTNodes {
CallFunction = 0x16,
CallIndirect = 0x17,
CallImport = 0x18,
+ TeeLocal = 0x19,
GetGlobal = 0x1a,
SetGlobal = 0x1b,
@@ -426,6 +427,7 @@ enum ASTNodes {
TableSwitch = 0x08,
Return = 0x09,
Unreachable = 0x0a,
+ Drop = 0x0b,
End = 0x0f
};
@@ -939,9 +941,9 @@ public:
o << int8_t(BinaryConsts::GetLocal) << U32LEB(mappedLocals[curr->index]);
}
void visitSetLocal(SetLocal *curr) {
- if (debug) std::cerr << "zz node: SetLocal" << std::endl;
+ if (debug) std::cerr << "zz node: Set|TeeLocal" << std::endl;
recurse(curr->value);
- o << int8_t(BinaryConsts::SetLocal) << U32LEB(mappedLocals[curr->index]);
+ o << int8_t(curr->isTee() ? BinaryConsts::TeeLocal : BinaryConsts::SetLocal) << U32LEB(mappedLocals[curr->index]);
}
void visitGetGlobal(GetGlobal *curr) {
if (debug) std::cerr << "zz node: GetGlobal " << (o.size() + 1) << std::endl;
@@ -991,7 +993,7 @@ public:
if (debug) std::cerr << "zz node: Store" << std::endl;
recurse(curr->ptr);
recurse(curr->value);
- switch (curr->type) {
+ switch (curr->valueType) {
case i32: {
switch (curr->bytes) {
case 1: o << int8_t(BinaryConsts::I32StoreMem8); break;
@@ -1219,6 +1221,11 @@ public:
if (debug) std::cerr << "zz node: Unreachable" << std::endl;
o << int8_t(BinaryConsts::Unreachable);
}
+ void visitDrop(Drop *curr) {
+ if (debug) std::cerr << "zz node: Drop" << std::endl;
+ recurse(curr->value);
+ o << int8_t(BinaryConsts::Drop);
+ }
};
class WasmBinaryBuilder {
@@ -1728,13 +1735,15 @@ public:
case BinaryConsts::CallImport: visitCallImport((curr = allocator.alloc<CallImport>())->cast<CallImport>()); break;
case BinaryConsts::CallIndirect: visitCallIndirect((curr = allocator.alloc<CallIndirect>())->cast<CallIndirect>()); break;
case BinaryConsts::GetLocal: visitGetLocal((curr = allocator.alloc<GetLocal>())->cast<GetLocal>()); break;
- case BinaryConsts::SetLocal: visitSetLocal((curr = allocator.alloc<SetLocal>())->cast<SetLocal>()); break;
+ case BinaryConsts::TeeLocal:
+ case BinaryConsts::SetLocal: visitSetLocal((curr = allocator.alloc<SetLocal>())->cast<SetLocal>(), code); break;
case BinaryConsts::GetGlobal: visitGetGlobal((curr = allocator.alloc<GetGlobal>())->cast<GetGlobal>()); break;
case BinaryConsts::SetGlobal: visitSetGlobal((curr = allocator.alloc<SetGlobal>())->cast<SetGlobal>()); break;
case BinaryConsts::Select: visitSelect((curr = allocator.alloc<Select>())->cast<Select>()); break;
case BinaryConsts::Return: visitReturn((curr = allocator.alloc<Return>())->cast<Return>()); break;
case BinaryConsts::Nop: visitNop((curr = allocator.alloc<Nop>())->cast<Nop>()); break;
case BinaryConsts::Unreachable: visitUnreachable((curr = allocator.alloc<Unreachable>())->cast<Unreachable>()); break;
+ case BinaryConsts::Drop: visitDrop((curr = allocator.alloc<Drop>())->cast<Drop>()); break;
case BinaryConsts::End:
case BinaryConsts::Else: curr = nullptr; break;
default: {
@@ -1922,12 +1931,13 @@ public:
assert(curr->index < currFunction->getNumLocals());
curr->type = currFunction->getLocalType(curr->index);
}
- void visitSetLocal(SetLocal *curr) {
- if (debug) std::cerr << "zz node: SetLocal" << std::endl;
+ void visitSetLocal(SetLocal *curr, uint8_t code) {
+ if (debug) std::cerr << "zz node: Set|TeeLocal" << std::endl;
curr->index = getU32LEB();
assert(curr->index < currFunction->getNumLocals());
curr->value = popExpression();
curr->type = curr->value->type;
+ curr->setTee(code == BinaryConsts::TeeLocal);
}
void visitGetGlobal(GetGlobal *curr) {
if (debug) std::cerr << "zz node: GetGlobal " << pos << std::endl;
@@ -1976,21 +1986,22 @@ public:
bool maybeVisitStore(Expression*& out, uint8_t code) {
Store* curr;
switch (code) {
- case BinaryConsts::I32StoreMem8: curr = allocator.alloc<Store>(); curr->bytes = 1; curr->type = i32; break;
- case BinaryConsts::I32StoreMem16: curr = allocator.alloc<Store>(); curr->bytes = 2; curr->type = i32; break;
- case BinaryConsts::I32StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->type = i32; break;
- case BinaryConsts::I64StoreMem8: curr = allocator.alloc<Store>(); curr->bytes = 1; curr->type = i64; break;
- case BinaryConsts::I64StoreMem16: curr = allocator.alloc<Store>(); curr->bytes = 2; curr->type = i64; break;
- case BinaryConsts::I64StoreMem32: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->type = i64; break;
- case BinaryConsts::I64StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 8; curr->type = i64; break;
- case BinaryConsts::F32StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->type = f32; break;
- case BinaryConsts::F64StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 8; curr->type = f64; break;
+ case BinaryConsts::I32StoreMem8: curr = allocator.alloc<Store>(); curr->bytes = 1; curr->valueType = i32; break;
+ case BinaryConsts::I32StoreMem16: curr = allocator.alloc<Store>(); curr->bytes = 2; curr->valueType = i32; break;
+ case BinaryConsts::I32StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->valueType = i32; break;
+ case BinaryConsts::I64StoreMem8: curr = allocator.alloc<Store>(); curr->bytes = 1; curr->valueType = i64; break;
+ case BinaryConsts::I64StoreMem16: curr = allocator.alloc<Store>(); curr->bytes = 2; curr->valueType = i64; break;
+ case BinaryConsts::I64StoreMem32: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->valueType = i64; break;
+ case BinaryConsts::I64StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 8; curr->valueType = i64; break;
+ case BinaryConsts::F32StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 4; curr->valueType = f32; break;
+ case BinaryConsts::F64StoreMem: curr = allocator.alloc<Store>(); curr->bytes = 8; curr->valueType = f64; break;
default: return false;
}
if (debug) std::cerr << "zz node: Store" << std::endl;
readMemoryAccess(curr->align, curr->bytes, curr->offset);
curr->value = popExpression();
curr->ptr = popExpression();
+ curr->finalize();
out = curr;
return true;
}
@@ -2175,6 +2186,10 @@ public:
void visitUnreachable(Unreachable *curr) {
if (debug) std::cerr << "zz node: Unreachable" << std::endl;
}
+ void visitDrop(Drop *curr) {
+ if (debug) std::cerr << "zz node: Drop" << std::endl;
+ curr->value = popExpression();
+ }
};
} // namespace wasm
diff --git a/src/wasm-builder.h b/src/wasm-builder.h
index 22e1f9a00..3cba351a2 100644
--- a/src/wasm-builder.h
+++ b/src/wasm-builder.h
@@ -142,6 +142,13 @@ public:
auto* ret = allocator.alloc<SetLocal>();
ret->index = index;
ret->value = value;
+ ret->type = none;
+ return ret;
+ }
+ SetLocal* makeTeeLocal(Index index, Expression* value) {
+ auto* ret = allocator.alloc<SetLocal>();
+ ret->index = index;
+ ret->value = value;
ret->type = value->type;
return ret;
}
@@ -164,10 +171,11 @@ public:
ret->type = type;
return ret;
}
- Store* makeStore(unsigned bytes, uint32_t offset, unsigned align, Expression *ptr, Expression *value) {
+ Store* makeStore(unsigned bytes, uint32_t offset, unsigned align, Expression *ptr, Expression *value, WasmType type) {
auto* ret = allocator.alloc<Store>();
- ret->bytes = bytes; ret->offset = offset; ret->align = align; ret->ptr = ptr; ret->value = value;
- ret->type = value->type;
+ ret->bytes = bytes; ret->offset = offset; ret->align = align; ret->ptr = ptr; ret->value = value; ret->valueType = type;
+ ret->finalize();
+ assert(isConcreteWasmType(ret->value->type) ? ret->value->type == type : true);
return ret;
}
Const* makeConst(Literal value) {
@@ -205,12 +213,22 @@ public:
ret->op = op;
ret->nameOperand = nameOperand;
ret->operands.set(operands);
+ ret->finalize();
return ret;
}
Unreachable* makeUnreachable() {
return allocator.alloc<Unreachable>();
}
+ // Additional helpers
+
+ Drop* makeDrop(Expression *value) {
+ auto* ret = allocator.alloc<Drop>();
+ ret->value = value;
+ ret->finalize();
+ return ret;
+ }
+
// Additional utility functions for building on top of nodes
static Index addParam(Function* func, Name name, WasmType type) {
diff --git a/src/wasm-interpreter.h b/src/wasm-interpreter.h
index 28a3e8e6d..9d1b5e522 100644
--- a/src/wasm-interpreter.h
+++ b/src/wasm-interpreter.h
@@ -435,6 +435,12 @@ public:
NOTE_EVAL1(condition.value);
return condition.value.geti32() ? ifTrue : ifFalse; // ;-)
}
+ Flow visitDrop(Drop *curr) {
+ NOTE_ENTER("Drop");
+ Flow value = visit(curr->value);
+ if (value.breaking()) return value;
+ return Flow();
+ }
Flow visitReturn(Return *curr) {
NOTE_ENTER("Return");
Flow flow;
@@ -693,9 +699,9 @@ public:
if (flow.breaking()) return flow;
NOTE_EVAL1(index);
NOTE_EVAL1(flow.value);
- assert(flow.value.type == curr->type);
+ assert(curr->isTee() ? flow.value.type == curr->type : true);
scope.locals[index] = flow.value;
- return flow;
+ return curr->isTee() ? flow : Flow();
}
Flow visitGetGlobal(GetGlobal *curr) {
@@ -730,7 +736,7 @@ public:
Flow value = visit(curr->value);
if (value.breaking()) return value;
instance.externalInterface->store(curr, instance.getFinalAddress(curr, ptr.value), value.value);
- return value;
+ return Flow();
}
Flow visitHost(Host *curr) {
diff --git a/src/wasm-js.cpp b/src/wasm-js.cpp
index 83956e47e..66dcb4864 100644
--- a/src/wasm-js.cpp
+++ b/src/wasm-js.cpp
@@ -411,11 +411,11 @@ extern "C" void EMSCRIPTEN_KEEPALIVE instantiate() {
Module["info"].parent["HEAPU8"][addr + i] = HEAPU8[i];
}
HEAP32[0] = save0; HEAP32[1] = save1;
- }, (uint32_t)addr, store_->bytes, isWasmTypeFloat(store_->type), isWasmTypeFloat(store_->type) ? value.getFloat() : (double)value.getInteger());
+ }, (uint32_t)addr, store_->bytes, isWasmTypeFloat(store_->valueType), isWasmTypeFloat(store_->valueType) ? value.getFloat() : (double)value.getInteger());
return;
}
// nicely aligned
- if (!isWasmTypeFloat(store_->type)) {
+ if (!isWasmTypeFloat(store_->valueType)) {
if (store_->bytes == 1) {
EM_ASM_INT({ Module['info'].parent['HEAP8'][$0] = $1 }, addr, value.geti32());
} else if (store_->bytes == 2) {
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 746d96cf2..685f26d82 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -568,7 +568,6 @@ private:
if (str[1] == '6' && str[2] == '4' && (prefix || str[3] == 0)) return f64;
}
if (allowError) return none;
- throw ParseException("unknown type");
abort();
}
@@ -621,7 +620,7 @@ public:
if (op[3] == '_') return makeBinary(s, op[4] == 'u' ? BINARY_INT(DivU) : BINARY_INT(DivS), type);
if (op[3] == 0) return makeBinary(s, BINARY_FLOAT(Div), type);
}
- if (op[1] == 'e') return makeUnary(s, UnaryOp::DemoteFloat64, type);
+ if (op[1] == 'e') return makeUnary(s, UnaryOp::DemoteFloat64, type);
abort_on(op);
}
case 'e': {
@@ -739,6 +738,10 @@ public:
} else if (str[1] == 'u') return makeHost(s, HostOp::CurrentMemory);
abort_on(str);
}
+ case 'd': {
+ if (str[1] == 'r') return makeDrop(s);
+ abort_on(str);
+ }
case 'e': {
if (str[1] == 'l') return makeThenOrElse(s);
abort_on(str);
@@ -785,6 +788,7 @@ public:
}
case 't': {
if (str[1] == 'h') return makeThenOrElse(s);
+ if (str[1] == 'e' && str[2] == 'e') return makeTeeLocal(s);
abort_on(str);
}
case 'u': {
@@ -878,6 +882,13 @@ private:
return ret;
}
+ Expression* makeDrop(Element& s) {
+ auto ret = allocator.alloc<Drop>();
+ ret->value = parseExpression(s[1]);
+ ret->finalize();
+ return ret;
+ }
+
Expression* makeHost(Element& s, HostOp op) {
auto ret = allocator.alloc<Host>();
ret->op = op;
@@ -910,11 +921,18 @@ private:
return ret;
}
+ Expression* makeTeeLocal(Element& s) {
+ auto ret = allocator.alloc<SetLocal>();
+ ret->index = getLocalIndex(*s[1]);
+ ret->value = parseExpression(s[2]);
+ ret->setTee(true);
+ return ret;
+ }
Expression* makeSetLocal(Element& s) {
auto ret = allocator.alloc<SetLocal>();
ret->index = getLocalIndex(*s[1]);
ret->value = parseExpression(s[2]);
- ret->type = currFunction->getLocalType(ret->index);
+ ret->setTee(false);
return ret;
}
@@ -1061,7 +1079,7 @@ private:
Expression* makeStore(Element& s, WasmType type) {
const char *extra = strchr(s[0]->c_str(), '.') + 6; // after "type.store"
auto ret = allocator.alloc<Store>();
- ret->type = type;
+ ret->valueType = type;
ret->bytes = getWasmTypeSize(type);
if (extra[0] == '8') {
ret->bytes = 1;
@@ -1092,6 +1110,7 @@ private:
}
ret->ptr = parseExpression(s[i]);
ret->value = parseExpression(s[i+1]);
+ ret->finalize();
return ret;
}
diff --git a/src/wasm-traversal.h b/src/wasm-traversal.h
index b50ca0fb2..d6484abdb 100644
--- a/src/wasm-traversal.h
+++ b/src/wasm-traversal.h
@@ -53,6 +53,7 @@ struct Visitor {
ReturnType visitUnary(Unary *curr) {}
ReturnType visitBinary(Binary *curr) {}
ReturnType visitSelect(Select *curr) {}
+ ReturnType visitDrop(Drop *curr) {}
ReturnType visitReturn(Return *curr) {}
ReturnType visitHost(Host *curr) {}
ReturnType visitNop(Nop *curr) {}
@@ -93,6 +94,7 @@ struct Visitor {
case Expression::Id::UnaryId: DELEGATE(Unary);
case Expression::Id::BinaryId: DELEGATE(Binary);
case Expression::Id::SelectId: DELEGATE(Select);
+ case Expression::Id::DropId: DELEGATE(Drop);
case Expression::Id::ReturnId: DELEGATE(Return);
case Expression::Id::HostId: DELEGATE(Host);
case Expression::Id::NopId: DELEGATE(Nop);
@@ -132,6 +134,7 @@ struct UnifiedExpressionVisitor : public Visitor<SubType> {
ReturnType visitUnary(Unary *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitBinary(Binary *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitSelect(Select *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
+ ReturnType visitDrop(Drop *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitReturn(Return *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitHost(Host *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
ReturnType visitNop(Nop *curr) { return static_cast<SubType*>(this)->visitExpression(curr); }
@@ -264,14 +267,15 @@ struct Walker : public VisitorType {
static void doVisitCallIndirect(SubType* self, Expression** currp) { self->visitCallIndirect((*currp)->cast<CallIndirect>()); }
static void doVisitGetLocal(SubType* self, Expression** currp) { self->visitGetLocal((*currp)->cast<GetLocal>()); }
static void doVisitSetLocal(SubType* self, Expression** currp) { self->visitSetLocal((*currp)->cast<SetLocal>()); }
- static void doVisitGetGlobal(SubType* self, Expression** currp) { self->visitGetGlobal((*currp)->cast<GetGlobal>()); }
- static void doVisitSetGlobal(SubType* self, Expression** currp) { self->visitSetGlobal((*currp)->cast<SetGlobal>()); }
+ static void doVisitGetGlobal(SubType* self, Expression** currp) { self->visitGetGlobal((*currp)->cast<GetGlobal>()); }
+ static void doVisitSetGlobal(SubType* self, Expression** currp) { self->visitSetGlobal((*currp)->cast<SetGlobal>()); }
static void doVisitLoad(SubType* self, Expression** currp) { self->visitLoad((*currp)->cast<Load>()); }
static void doVisitStore(SubType* self, Expression** currp) { self->visitStore((*currp)->cast<Store>()); }
static void doVisitConst(SubType* self, Expression** currp) { self->visitConst((*currp)->cast<Const>()); }
static void doVisitUnary(SubType* self, Expression** currp) { self->visitUnary((*currp)->cast<Unary>()); }
static void doVisitBinary(SubType* self, Expression** currp) { self->visitBinary((*currp)->cast<Binary>()); }
static void doVisitSelect(SubType* self, Expression** currp) { self->visitSelect((*currp)->cast<Select>()); }
+ static void doVisitDrop(SubType* self, Expression** currp) { self->visitDrop((*currp)->cast<Drop>()); }
static void doVisitReturn(SubType* self, Expression** currp) { self->visitReturn((*currp)->cast<Return>()); }
static void doVisitHost(SubType* self, Expression** currp) { self->visitHost((*currp)->cast<Host>()); }
static void doVisitNop(SubType* self, Expression** currp) { self->visitNop((*currp)->cast<Nop>()); }
@@ -411,6 +415,11 @@ struct PostWalker : public Walker<SubType, VisitorType> {
self->pushTask(SubType::scan, &curr->cast<Select>()->ifTrue);
break;
}
+ case Expression::Id::DropId: {
+ self->pushTask(SubType::doVisitDrop, currp);
+ self->pushTask(SubType::scan, &curr->cast<Drop>()->value);
+ break;
+ }
case Expression::Id::ReturnId: {
self->pushTask(SubType::doVisitReturn, currp);
self->maybePushTask(SubType::scan, &curr->cast<Return>()->value);
diff --git a/src/wasm-validator.h b/src/wasm-validator.h
index 3d9a0e1c3..b4818e253 100644
--- a/src/wasm-validator.h
+++ b/src/wasm-validator.h
@@ -30,7 +30,16 @@ struct WasmValidator : public PostWalker<WasmValidator, Visitor<WasmValidator>>
bool valid = true;
bool validateWebConstraints = false;
- std::map<Name, WasmType> breakTypes; // breaks to a label must all have the same type, and the right type
+ struct BreakInfo {
+ WasmType type;
+ Index arity;
+ BreakInfo() {}
+ BreakInfo(WasmType type, Index arity) : type(type), arity(arity) {}
+ };
+
+ std::map<Name, std::vector<Expression*>> breakTargets; // more than one block/loop may use a label name, so stack them
+ std::map<Expression*, BreakInfo> breakInfos;
+
WasmType returnType = unreachable; // type used in returns
public:
@@ -42,55 +51,107 @@ public:
// visitors
+ static void visitPreBlock(WasmValidator* self, Expression** currp) {
+ auto* curr = (*currp)->cast<Block>();
+ if (curr->name.is()) self->breakTargets[curr->name].push_back(curr);
+ }
+
void visitBlock(Block *curr) {
// if we are break'ed to, then the value must be right for us
if (curr->name.is()) {
- // none or unreachable means a poison value that we should ignore - if consumed, it will error
- if (breakTypes.count(curr->name) > 0 && isConcreteWasmType(breakTypes[curr->name]) && isConcreteWasmType(curr->type)) {
- shouldBeEqual(curr->type, breakTypes[curr->name], curr, "block+breaks must have right type if breaks return a value");
+ if (breakInfos.count(curr) > 0) {
+ auto& info = breakInfos[curr];
+ // none or unreachable means a poison value that we should ignore - if consumed, it will error
+ if (isConcreteWasmType(info.type) && isConcreteWasmType(curr->type)) {
+ shouldBeEqual(curr->type, info.type, curr, "block+breaks must have right type if breaks return a value");
+ }
+ shouldBeTrue(info.arity != Index(-1), curr, "break arities must match");
+ if (curr->list.size() > 0) {
+ auto last = curr->list.back()->type;
+ if (isConcreteWasmType(last) && info.type != unreachable) {
+ shouldBeEqual(last, info.type, curr, "block+breaks must have right type if block ends with a reachable value");
+ }
+ if (last == none) {
+ shouldBeTrue(info.arity == Index(0), curr, "if block ends with a none, breaks cannot send a value of any type");
+ }
+ }
+ }
+ breakTargets[curr->name].pop_back();
+ }
+ if (curr->list.size() > 1) {
+ for (Index i = 0; i < curr->list.size() - 1; i++) {
+ if (!shouldBeTrue(!isConcreteWasmType(curr->list[i]->type), curr, "non-final block elements returning a value must be drop()ed (binaryen's autodrop option might help you)")) {
+ std::cerr << "(on index " << i << ":\n" << curr->list[i] << "\n), type: " << curr->list[i]->type << "\n";
+ }
}
- breakTypes.erase(curr->name);
}
}
- void visitIf(If *curr) {
- shouldBeTrue(curr->condition->type == unreachable || curr->condition->type == i32 || curr->condition->type == i64, curr, "if condition must be valid");
+
+ static void visitPreLoop(WasmValidator* self, Expression** currp) {
+ auto* curr = (*currp)->cast<Loop>();
+ if (curr->in.is()) self->breakTargets[curr->in].push_back(curr);
+ if (curr->out.is()) self->breakTargets[curr->out].push_back(curr);
}
+
void visitLoop(Loop *curr) {
if (curr->in.is()) {
- breakTypes.erase(curr->in);
+ breakTargets[curr->in].pop_back();
}
if (curr->out.is()) {
- breakTypes.erase(curr->out);
+ breakTargets[curr->out].pop_back();
}
}
- void noteBreak(Name name, Expression* value) {
+
+ void visitIf(If *curr) {
+ shouldBeTrue(curr->condition->type == unreachable || curr->condition->type == i32 || curr->condition->type == i64, curr, "if condition must be valid");
+ }
+
+ // override scan to add a pre and a post check task to all nodes
+ static void scan(WasmValidator* self, Expression** currp) {
+ PostWalker<WasmValidator, Visitor<WasmValidator>>::scan(self, currp);
+
+ auto* curr = *currp;
+ if (curr->is<Block>()) self->pushTask(visitPreBlock, currp);
+ if (curr->is<Loop>()) self->pushTask(visitPreLoop, currp);
+ }
+
+ void noteBreak(Name name, Expression* value, Expression* curr) {
WasmType valueType = none;
+ Index arity = 0;
if (value) {
valueType = value->type;
+ shouldBeUnequal(valueType, none, curr, "breaks must have a valid value");
+ arity = 1;
}
- if (breakTypes.count(name) == 0) {
- breakTypes[name] = valueType;
+ if (!shouldBeTrue(breakTargets[name].size() > 0, curr, "all break targets must be valid")) return;
+ auto* target = breakTargets[name].back();
+ if (breakInfos.count(target) == 0) {
+ breakInfos[target] = BreakInfo(valueType, arity);
} else {
- if (breakTypes[name] == unreachable) {
- breakTypes[name] = valueType;
+ auto& info = breakInfos[target];
+ if (info.type == unreachable) {
+ info.type = valueType;
} else if (valueType != unreachable) {
- if (valueType != breakTypes[name]) {
- breakTypes[name] = none; // a poison value that must not be consumed
+ if (valueType != info.type) {
+ info.type = none; // a poison value that must not be consumed
}
}
+ if (arity != info.arity) {
+ info.arity = Index(-1); // a poison value
+ }
}
}
void visitBreak(Break *curr) {
- noteBreak(curr->name, curr->value);
+ noteBreak(curr->name, curr->value, curr);
if (curr->condition) {
shouldBeTrue(curr->condition->type == unreachable || curr->condition->type == i32, curr, "break condition must be i32");
}
}
void visitSwitch(Switch *curr) {
for (auto& target : curr->targets) {
- noteBreak(target, curr->value);
+ noteBreak(target, curr->value, curr);
}
- noteBreak(curr->default_, curr->value);
+ noteBreak(curr->default_, curr->value, curr);
shouldBeTrue(curr->condition->type == unreachable || curr->condition->type == i32, curr, "br_table condition must be i32");
}
void visitCall(Call *curr) {
@@ -128,7 +189,9 @@ public:
void visitSetLocal(SetLocal *curr) {
shouldBeTrue(curr->index < getFunction()->getNumLocals(), curr, "set_local index must be small enough");
if (curr->value->type != unreachable) {
- shouldBeEqualOrFirstIsUnreachable(curr->value->type, curr->type, curr, "set_local type must be correct");
+ if (curr->type != none) { // tee is ok anyhow
+ shouldBeEqualOrFirstIsUnreachable(curr->value->type, curr->type, curr, "set_local type must be correct");
+ }
shouldBeEqual(getFunction()->getLocalType(curr->index), curr->value->type, curr, "set_local type must match function");
}
}
@@ -139,7 +202,8 @@ public:
void visitStore(Store *curr) {
validateAlignment(curr->align);
shouldBeEqualOrFirstIsUnreachable(curr->ptr->type, i32, curr, "store pointer type must be i32");
- shouldBeEqualOrFirstIsUnreachable(curr->value->type, curr->type, curr, "store value type must match");
+ shouldBeUnequal(curr->value->type, none, curr, "store value type must not be none");
+ // TODO: enable a check that replaces this, for type being none shouldBeEqualOrFirstIsUnreachable(curr->value->type, curr->type, curr, "store value type must match");
}
void visitBinary(Binary *curr) {
if (curr->left->type != unreachable && curr->right->type != unreachable) {
@@ -268,13 +332,11 @@ public:
void visitFunction(Function *curr) {
// if function has no result, it is ignored
// if body is unreachable, it might be e.g. a return
- if (curr->result != none) {
- if (curr->body->type != unreachable) {
- shouldBeEqual(curr->result, curr->body->type, curr->body, "function body type must match, if function returns");
- }
- if (returnType != unreachable) {
- shouldBeEqual(curr->result, returnType, curr->body, "function result must match, if function returns");
- }
+ if (curr->body->type != unreachable) {
+ shouldBeEqual(curr->result, curr->body->type, curr->body, "function body type must match, if function returns");
+ }
+ if (returnType != unreachable) {
+ shouldBeEqual(curr->result, returnType, curr->body, "function result must match, if function returns");
}
returnType = unreachable;
}
@@ -311,12 +373,6 @@ public:
void doWalkFunction(Function* func) {
PostWalker<WasmValidator, Visitor<WasmValidator>>::doWalkFunction(func);
- if (!shouldBeTrue(breakTypes.size() == 0, "break targets", "all break targets must be valid")) {
- for (auto& target : breakTypes) {
- std::cerr << " - " << target.first << '\n';
- }
- breakTypes.clear();
- }
}
private:
diff --git a/src/wasm.h b/src/wasm.h
index 68558033d..ee3e12910 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -802,7 +802,7 @@ enum UnaryOp {
ConvertSInt32ToFloat32, ConvertSInt32ToFloat64, ConvertUInt32ToFloat32, ConvertUInt32ToFloat64, ConvertSInt64ToFloat32, ConvertSInt64ToFloat64, ConvertUInt64ToFloat32, ConvertUInt64ToFloat64, // int to float
PromoteFloat32, // f32 to f64
DemoteFloat64, // f64 to f32
- ReinterpretInt32, ReinterpretInt64 // reinterpret bits to float
+ ReinterpretInt32, ReinterpretInt64, // reinterpret bits to float
};
enum BinaryOp {
@@ -877,6 +877,7 @@ public:
UnaryId,
BinaryId,
SelectId,
+ DropId,
ReturnId,
HostId,
NopId,
@@ -929,6 +930,7 @@ inline const char *getExpressionName(Expression *curr) {
case Expression::Id::UnaryId: return "unary";
case Expression::Id::BinaryId: return "binary";
case Expression::Id::SelectId: return "select";
+ case Expression::Id::DropId: return "drop";
case Expression::Id::ReturnId: return "return";
case Expression::Id::HostId: return "host";
case Expression::Id::NopId: return "nop";
@@ -1108,8 +1110,13 @@ public:
Index index;
Expression *value;
- void finalize() {
- type = value->type;
+ bool isTee() {
+ return type != none;
+ }
+
+ void setTee(bool is) {
+ if (is) type = value->type;
+ else type = none;
}
};
@@ -1150,16 +1157,17 @@ public:
class Store : public SpecificExpression<Expression::StoreId> {
public:
- Store() {}
- Store(MixedArena& allocator) {}
+ Store() : valueType(none) {}
+ Store(MixedArena& allocator) : Store() {}
uint8_t bytes;
Address offset;
Address align;
Expression *ptr, *value;
+ WasmType valueType; // the store never returns a value
void finalize() {
- type = value->type;
+ assert(valueType != none); // must be set
}
};
@@ -1312,6 +1320,14 @@ public:
}
};
+class Drop : public SpecificExpression<Expression::DropId> {
+public:
+ Drop() {}
+ Drop(MixedArena& allocator) {}
+
+ Expression *value;
+};
+
class Return : public SpecificExpression<Expression::ReturnId> {
public:
Return() : value(nullptr) {
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index 49d63fa8c..04e0d76c6 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -107,16 +107,16 @@
(block
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 176)
)
)
- (set_local $5
+ (tee_local $5
(i32.shr_u
- (set_local $0
+ (tee_local $0
(select
(i32.const 16)
(i32.and
@@ -142,18 +142,18 @@
(block
(set_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.xor
(i32.and
@@ -199,7 +199,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 12)
@@ -238,7 +238,7 @@
(i32.store offset=4
(get_local $5)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
(i32.const 3)
@@ -248,7 +248,7 @@
)
)
(i32.store
- (set_local $4
+ (tee_local $4
(i32.add
(i32.add
(get_local $5)
@@ -272,7 +272,7 @@
(if
(i32.gt_u
(get_local $0)
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 184)
)
@@ -285,17 +285,17 @@
(set_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.add
(i32.and
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shl
(get_local $2)
(get_local $5)
)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 2)
(get_local $5)
@@ -323,27 +323,27 @@
)
(set_local $1
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $18
+ (tee_local $18
(i32.add
- (set_local $10
+ (tee_local $10
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $9
+ (tee_local $9
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -356,10 +356,10 @@
)
(get_local $1)
)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.shr_u
(get_local $9)
(get_local $2)
@@ -371,10 +371,10 @@
)
)
)
- (set_local $16
+ (tee_local $16
(i32.and
(i32.shr_u
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $16)
(get_local $9)
@@ -386,10 +386,10 @@
)
)
)
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
- (set_local $18
+ (tee_local $18
(i32.shr_u
(get_local $10)
(get_local $16)
@@ -441,7 +441,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 12)
@@ -495,14 +495,14 @@
)
)
(i32.store offset=4
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $16)
(get_local $0)
)
)
(i32.or
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.shl
(get_local $19)
@@ -534,7 +534,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $18
+ (tee_local $18
(i32.shr_u
(get_local $8)
(i32.const 3)
@@ -548,12 +548,12 @@
)
(if
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $18)
@@ -562,9 +562,9 @@
)
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $18
+ (tee_local $18
(i32.add
(get_local $10)
(i32.const 8)
@@ -637,7 +637,7 @@
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 180)
)
@@ -646,7 +646,7 @@
(set_local $7
(i32.and
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.add
(i32.and
(get_local $7)
@@ -667,7 +667,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $8
+ (tee_local $8
(i32.load offset=480
(i32.shl
(i32.add
@@ -675,10 +675,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $4
+ (tee_local $4
(i32.and
(i32.shr_u
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $4)
(get_local $7)
@@ -691,10 +691,10 @@
)
(get_local $7)
)
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $10)
(get_local $4)
@@ -706,10 +706,10 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $10)
@@ -721,10 +721,10 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -757,9 +757,9 @@
(set_local $1
(get_local $8)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=16
(get_local $5)
)
@@ -768,7 +768,7 @@
(get_local $8)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=20
(get_local $5)
)
@@ -783,13 +783,13 @@
(set_local $4
(get_local $1)
)
- (br $while-out$6)
+ (br $while-out$23)
)
)
)
(set_local $10
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.sub
(i32.and
(i32.load offset=4
@@ -820,12 +820,12 @@
(get_local $10)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $4)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -836,7 +836,7 @@
(if
(i32.ge_u
(get_local $4)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(get_local $0)
@@ -850,10 +850,10 @@
(get_local $4)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $9
+ (tee_local $9
(i32.load offset=12
(get_local $4)
)
@@ -862,9 +862,9 @@
)
(block
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $4)
(i32.const 20)
@@ -882,9 +882,9 @@
)
(if
(i32.eqz
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $4)
(i32.const 16)
@@ -897,15 +897,15 @@
(set_local $18
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $8)
(i32.const 20)
@@ -920,13 +920,13 @@
(set_local $10
(get_local $16)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $8)
(i32.const 16)
@@ -942,9 +942,9 @@
(get_local $16)
)
)
- (br $while-out$10)
+ (br $while-out$27)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -966,7 +966,7 @@
(block
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.load offset=8
(get_local $4)
)
@@ -978,7 +978,7 @@
(if
(i32.ne
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $16)
(i32.const 12)
@@ -992,7 +992,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $9)
(i32.const 8)
@@ -1019,7 +1019,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $2)
(block
@@ -1027,11 +1027,11 @@
(i32.eq
(get_local $4)
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 480)
(i32.shl
- (set_local $9
+ (tee_local $9
(i32.load offset=28
(get_local $4)
)
@@ -1067,7 +1067,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1084,7 +1084,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 16)
@@ -1102,7 +1102,7 @@
(get_local $18)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eqz
(get_local $18)
)
@@ -1112,7 +1112,7 @@
(if
(i32.lt_u
(get_local $18)
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 192)
)
@@ -1125,7 +1125,7 @@
(get_local $2)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $4)
)
@@ -1149,7 +1149,7 @@
)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=20
(get_local $4)
)
@@ -1186,7 +1186,7 @@
(i32.store offset=4
(get_local $4)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $7)
(get_local $0)
@@ -1196,7 +1196,7 @@
)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $4)
@@ -1236,7 +1236,7 @@
(get_local $7)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 184)
)
@@ -1252,7 +1252,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $9
+ (tee_local $9
(i32.shr_u
(get_local $1)
(i32.const 3)
@@ -1266,12 +1266,12 @@
)
(if
(i32.and
- (set_local $16
+ (tee_local $16
(i32.load
(i32.const 176)
)
)
- (set_local $10
+ (tee_local $10
(i32.shl
(i32.const 1)
(get_local $9)
@@ -1280,9 +1280,9 @@
)
(if
(i32.lt_u
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $1)
(i32.const 8)
@@ -1358,10 +1358,8 @@
)
)
)
- (get_local $0)
)
)
- (get_local $0)
)
)
(if
@@ -1372,7 +1370,7 @@
(block
(set_local $2
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 11)
@@ -1382,7 +1380,7 @@
)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 180)
)
@@ -1396,12 +1394,12 @@
)
(block $label$break$L123
(if
- (set_local $7
+ (tee_local $7
(i32.load offset=480
(i32.shl
- (set_local $0
+ (tee_local $0
(if
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $1)
(i32.const 8)
@@ -1418,20 +1416,20 @@
(i32.shr_u
(get_local $2)
(i32.add
- (set_local $7
+ (tee_local $7
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
(i32.add
- (set_local $9
+ (tee_local $9
(i32.shl
(get_local $19)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
@@ -1454,11 +1452,11 @@
)
(get_local $1)
)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
(i32.add
- (set_local $8
+ (tee_local $8
(i32.shl
(get_local $9)
(get_local $19)
@@ -1532,12 +1530,12 @@
(set_local $4
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.sub
- (set_local $18
+ (tee_local $18
(i32.and
(i32.load offset=4
(get_local $19)
@@ -1583,7 +1581,7 @@
(set_local $18
(select
(get_local $8)
- (set_local $5
+ (tee_local $5
(i32.load offset=20
(get_local $19)
)
@@ -1595,7 +1593,7 @@
)
(i32.eq
(get_local $5)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.add
(i32.add
@@ -1617,7 +1615,7 @@
)
)
(if
- (set_local $5
+ (tee_local $5
(i32.eq
(get_local $19)
(i32.const 0)
@@ -1636,7 +1634,7 @@
(set_local $9
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $8
@@ -1656,7 +1654,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
(block
@@ -1681,7 +1679,7 @@
(i32.const 86)
)
(if
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -1696,11 +1694,11 @@
(block
(if
(i32.eqz
- (set_local $16
+ (tee_local $16
(i32.and
(get_local $10)
(i32.or
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 2)
(get_local $0)
@@ -1724,7 +1722,7 @@
(set_local $16
(i32.and
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.add
(i32.and
(get_local $16)
@@ -1748,10 +1746,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $7)
(get_local $16)
@@ -1764,10 +1762,10 @@
)
(get_local $16)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $0)
(get_local $7)
@@ -1779,10 +1777,10 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.shr_u
(get_local $5)
(get_local $0)
@@ -1794,10 +1792,10 @@
)
)
)
- (set_local $4
+ (tee_local $4
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $4)
(get_local $5)
@@ -1850,13 +1848,13 @@
(get_local $9)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $9
(i32.const 0)
)
(set_local $1
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.and
(i32.load offset=4
@@ -1885,7 +1883,7 @@
)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $25)
)
@@ -1900,11 +1898,11 @@
(set_local $29
(get_local $4)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load offset=20
(get_local $25)
)
@@ -1924,10 +1922,10 @@
(set_local $12
(get_local $4)
)
- (br $while-out$19)
+ (br $while-out$5)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -1951,7 +1949,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 192)
)
@@ -1962,7 +1960,7 @@
(if
(i32.ge_u
(get_local $12)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $12)
(get_local $2)
@@ -1976,10 +1974,10 @@
(get_local $12)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $12)
)
@@ -1988,9 +1986,9 @@
)
(block
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $12)
(i32.const 20)
@@ -2008,9 +2006,9 @@
)
(if
(i32.eqz
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $12)
(i32.const 16)
@@ -2023,15 +2021,15 @@
(set_local $11
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 20)
@@ -2046,13 +2044,13 @@
(set_local $7
(get_local $0)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 16)
@@ -2068,9 +2066,9 @@
(get_local $0)
)
)
- (br $while-out$23)
+ (br $while-out$9)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2092,7 +2090,7 @@
(block
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $12)
)
@@ -2104,7 +2102,7 @@
(if
(i32.ne
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $0)
(i32.const 12)
@@ -2118,7 +2116,7 @@
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -2145,7 +2143,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $5)
(block
@@ -2153,11 +2151,11 @@
(i32.eq
(get_local $12)
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $12)
)
@@ -2193,7 +2191,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2210,7 +2208,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $5)
(i32.const 16)
@@ -2228,7 +2226,7 @@
(get_local $11)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eqz
(get_local $11)
)
@@ -2238,7 +2236,7 @@
(if
(i32.lt_u
(get_local $11)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -2251,7 +2249,7 @@
(get_local $5)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=16
(get_local $12)
)
@@ -2275,7 +2273,7 @@
)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=20
(get_local $12)
)
@@ -2303,7 +2301,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.ge_u
(get_local $6)
@@ -2357,12 +2355,12 @@
)
(if
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 1)
(get_local $5)
@@ -2371,9 +2369,9 @@
)
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $10)
(i32.const 8)
@@ -2430,16 +2428,16 @@
(get_local $4)
(get_local $10)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $5
(i32.add
(i32.const 480)
(i32.shl
- (set_local $8
+ (tee_local $8
(if
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $6)
(i32.const 8)
@@ -2456,20 +2454,20 @@
(i32.shr_u
(get_local $6)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $10)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -2492,11 +2490,11 @@
)
(get_local $0)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $1)
(get_local $10)
@@ -2543,7 +2541,7 @@
(get_local $8)
)
(i32.store offset=4
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(i32.const 16)
@@ -2558,12 +2556,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 1)
(get_local $8)
@@ -2595,7 +2593,7 @@
(get_local $4)
(get_local $4)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $7
@@ -2622,7 +2620,7 @@
(get_local $5)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -2640,13 +2638,13 @@
(set_local $9
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.add
(get_local $1)
@@ -2684,10 +2682,10 @@
(set_local $9
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -2729,9 +2727,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -2739,7 +2737,7 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -2781,7 +2779,7 @@
(i32.store offset=4
(get_local $12)
(i32.or
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $6)
(get_local $2)
@@ -2791,7 +2789,7 @@
)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $12)
@@ -2835,7 +2833,7 @@
)
(if
(i32.ge_u
- (set_local $12
+ (tee_local $12
(i32.load
(i32.const 184)
)
@@ -2850,7 +2848,7 @@
)
(if
(i32.gt_u
- (set_local $6
+ (tee_local $6
(i32.sub
(get_local $12)
(get_local $0)
@@ -2861,7 +2859,7 @@
(block
(i32.store
(i32.const 196)
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $15)
(get_local $0)
@@ -2911,7 +2909,7 @@
)
)
(i32.store
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(get_local $15)
@@ -2939,7 +2937,7 @@
)
(if
(i32.gt_u
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 188)
)
@@ -2949,7 +2947,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $6
+ (tee_local $6
(i32.sub
(get_local $15)
(get_local $0)
@@ -2958,9 +2956,9 @@
)
(i32.store
(i32.const 200)
- (set_local $12
+ (tee_local $12
(i32.add
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 200)
)
@@ -3000,7 +2998,7 @@
(if
(i32.and
(i32.add
- (set_local $15
+ (tee_local $15
(call_import $_sysconf
(i32.const 30)
)
@@ -3058,16 +3056,16 @@
)
(if
(i32.le_u
- (set_local $6
+ (tee_local $6
(i32.and
- (set_local $21
+ (tee_local $21
(i32.add
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 656)
)
)
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $0)
(i32.const 47)
@@ -3075,7 +3073,7 @@
)
)
)
- (set_local $23
+ (tee_local $23
(i32.sub
(i32.const 0)
(get_local $6)
@@ -3092,7 +3090,7 @@
(if
(if
(i32.ne
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 616)
)
@@ -3101,9 +3099,9 @@
)
(i32.or
(i32.le_u
- (set_local $14
+ (tee_local $14
(i32.add
- (set_local $26
+ (tee_local $26
(i32.load
(i32.const 608)
)
@@ -3134,7 +3132,7 @@
)
(i32.const 0)
(i32.eq
- (set_local $9
+ (tee_local $9
(block $label$break$L257
(if
(i32.and
@@ -3147,7 +3145,7 @@
(block
(block $label$break$L259
(if
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 200)
)
@@ -3160,7 +3158,7 @@
(if
(if
(i32.le_u
- (set_local $26
+ (tee_local $26
(i32.load
(get_local $14)
)
@@ -3171,7 +3169,7 @@
(i32.add
(get_local $26)
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $14)
(i32.const 4)
@@ -3195,7 +3193,7 @@
)
(if
(i32.eqz
- (set_local $14
+ (tee_local $14
(i32.load offset=8
(get_local $14)
)
@@ -3212,7 +3210,7 @@
)
(if
(i32.lt_u
- (set_local $14
+ (tee_local $14
(i32.and
(i32.sub
(get_local $21)
@@ -3227,7 +3225,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(call_import $_sbrk
(get_local $14)
)
@@ -3285,7 +3283,7 @@
(i32.const 173)
)
(i32.ne
- (set_local $8
+ (tee_local $8
(call_import $_sbrk
(i32.const 0)
)
@@ -3298,9 +3296,9 @@
(set_local $1
(if
(i32.and
- (set_local $11
+ (tee_local $11
(i32.add
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 652)
)
@@ -3308,7 +3306,7 @@
(i32.const -1)
)
)
- (set_local $2
+ (tee_local $2
(get_local $8)
)
)
@@ -3333,7 +3331,7 @@
)
(set_local $2
(i32.add
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 608)
)
@@ -3362,7 +3360,7 @@
)
(i32.gt_u
(get_local $2)
- (set_local $11
+ (tee_local $11
(i32.load
(i32.const 616)
)
@@ -3378,7 +3376,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(call_import $_sbrk
(get_local $1)
)
@@ -3445,14 +3443,14 @@
)
)
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.and
(i32.add
(i32.sub
(get_local $12)
(get_local $17)
)
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 656)
)
@@ -3476,8 +3474,10 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $11)
+ (drop
+ (call_import $_sbrk
+ (get_local $11)
+ )
)
(br $label$break$L279)
)
@@ -3531,12 +3531,12 @@
)
(i32.and
(i32.lt_u
- (set_local $3
+ (tee_local $3
(call_import $_sbrk
(get_local $6)
)
)
- (set_local $6
+ (tee_local $6
(call_import $_sbrk
(i32.const 0)
)
@@ -3556,7 +3556,7 @@
(i32.const 0)
)
(i32.gt_u
- (set_local $13
+ (tee_local $13
(i32.sub
(get_local $6)
(get_local $3)
@@ -3589,7 +3589,7 @@
(block
(i32.store
(i32.const 608)
- (set_local $13
+ (tee_local $13
(i32.add
(i32.load
(i32.const 608)
@@ -3612,7 +3612,7 @@
)
(block $do-once$44
(if
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 200)
)
@@ -3621,19 +3621,19 @@
(set_local $3
(i32.const 624)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$48 $do-in$49
(if
(i32.eq
(get_local $20)
(i32.add
- (set_local $6
+ (tee_local $6
(i32.load
(get_local $3)
)
)
- (set_local $12
+ (tee_local $12
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $3)
(i32.const 4)
@@ -3659,12 +3659,12 @@
(set_local $9
(i32.const 203)
)
- (br $do-out$46)
+ (br $do-out$48)
)
)
- (br_if $do-in$47
+ (br_if $do-in$49
(i32.ne
- (set_local $3
+ (tee_local $3
(i32.load offset=8
(get_local $3)
)
@@ -3714,13 +3714,13 @@
(set_local $3
(i32.add
(get_local $13)
- (set_local $12
+ (tee_local $12
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $13)
(i32.const 8)
@@ -3786,7 +3786,7 @@
(if
(i32.lt_u
(get_local $20)
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 192)
)
@@ -3811,7 +3811,7 @@
(set_local $3
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$50 $while-in$51
(if
(i32.eq
(i32.load
@@ -3829,12 +3829,12 @@
(set_local $9
(i32.const 211)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
(if
(i32.eqz
- (set_local $3
+ (tee_local $3
(i32.load offset=8
(get_local $3)
)
@@ -3844,10 +3844,10 @@
(set_local $28
(i32.const 624)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
- (br $while-in$49)
+ (br $while-in$51)
)
(if
(i32.eq
@@ -3870,7 +3870,7 @@
(get_local $20)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $41)
(i32.const 4)
@@ -3891,7 +3891,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $20)
(i32.const 8)
@@ -3918,7 +3918,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $17)
(i32.const 8)
@@ -3959,7 +3959,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$52
(if
(i32.ne
(get_local $6)
@@ -3976,7 +3976,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.load
(i32.const 184)
@@ -4003,16 +4003,16 @@
)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(i32.store
- (set_local $5
+ (tee_local $5
(i32.add
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $6)
)
@@ -4046,10 +4046,10 @@
(get_local $6)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.eq
- (set_local $21
+ (tee_local $21
(i32.load offset=12
(get_local $6)
)
@@ -4058,11 +4058,11 @@
)
(block
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $6)
(i32.const 16)
@@ -4083,7 +4083,7 @@
)
(if
(i32.eqz
- (set_local $14
+ (tee_local $14
(i32.load
(get_local $11)
)
@@ -4093,15 +4093,15 @@
(set_local $24
(i32.const 0)
)
- (br $do-once$53)
+ (br $do-once$59)
)
)
)
- (loop $while-out$55 $while-in$56
+ (loop $while-out$61 $while-in$62
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $14)
(i32.const 20)
@@ -4116,13 +4116,13 @@
(set_local $11
(get_local $2)
)
- (br $while-in$56)
+ (br $while-in$62)
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $14)
(i32.const 16)
@@ -4138,9 +4138,9 @@
(get_local $2)
)
)
- (br $while-out$55)
+ (br $while-out$61)
)
- (br $while-in$56)
+ (br $while-in$62)
)
(if
(i32.lt_u
@@ -4162,7 +4162,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $6)
)
@@ -4174,7 +4174,7 @@
(if
(i32.ne
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 12)
@@ -4188,7 +4188,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $21)
(i32.const 8)
@@ -4220,16 +4220,16 @@
(get_local $23)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.ne
(get_local $6)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $21
+ (tee_local $21
(i32.load offset=28
(get_local $6)
)
@@ -4253,7 +4253,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $23)
(i32.const 16)
@@ -4282,7 +4282,7 @@
(get_local $2)
(get_local $24)
)
- (br_if $do-once$57
+ (br_if $do-once$63
(get_local $24)
)
(i32.store
@@ -4307,7 +4307,7 @@
(if
(i32.lt_u
(get_local $24)
- (set_local $21
+ (tee_local $21
(i32.load
(i32.const 192)
)
@@ -4320,9 +4320,9 @@
(get_local $23)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $6)
(i32.const 16)
@@ -4350,7 +4350,7 @@
)
(br_if $label$break$L331
(i32.eqz
- (set_local $11
+ (tee_local $11
(i32.load offset=4
(get_local $2)
)
@@ -4383,15 +4383,15 @@
(get_local $6)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.ne
- (set_local $11
+ (tee_local $11
(i32.load offset=8
(get_local $6)
)
)
- (set_local $23
+ (tee_local $23
(i32.add
(i32.const 216)
(i32.shl
@@ -4412,7 +4412,7 @@
)
(call_import $_abort)
)
- (br_if $do-once$61
+ (br_if $do-once$55
(i32.eq
(i32.load offset=12
(get_local $11)
@@ -4448,7 +4448,7 @@
(br $label$break$L331)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $21)
@@ -4471,7 +4471,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $21)
(i32.const 8)
@@ -4484,7 +4484,7 @@
(set_local $42
(get_local $2)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
(call_import $_abort)
@@ -4563,15 +4563,15 @@
)
)
)
- (block $do-once$65
+ (block $do-once$67
(if
(i32.and
- (set_local $23
+ (tee_local $23
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $5)
@@ -4581,9 +4581,9 @@
(block
(if
(i32.ge_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 8)
@@ -4602,7 +4602,7 @@
(set_local $35
(get_local $8)
)
- (br $do-once$65)
+ (br $do-once$67)
)
)
(call_import $_abort)
@@ -4643,24 +4643,24 @@
(get_local $3)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
- (block $do-once$67
+ (tee_local $0
+ (block $do-once$69
(if
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $15)
(i32.const 8)
)
)
(block
- (br_if $do-once$67
+ (br_if $do-once$69
(i32.const 31)
(i32.gt_u
(get_local $15)
@@ -4672,20 +4672,20 @@
(i32.shr_u
(get_local $15)
(i32.add
- (set_local $14
+ (tee_local $14
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $8
+ (tee_local $8
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $2)
- (set_local $23
+ (tee_local $23
(i32.and
(i32.shr_u
(i32.add
@@ -4708,11 +4708,11 @@
)
(get_local $23)
)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.shl
(get_local $7)
(get_local $8)
@@ -4760,7 +4760,7 @@
(get_local $0)
)
(i32.store offset=4
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $3)
(i32.const 16)
@@ -4775,12 +4775,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $14
+ (tee_local $14
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4812,7 +4812,7 @@
(get_local $3)
(get_local $3)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $14
@@ -4839,7 +4839,7 @@
(get_local $2)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$71 $while-in$72
(if
(i32.eq
(i32.and
@@ -4857,13 +4857,13 @@
(set_local $9
(i32.const 281)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $1)
@@ -4901,10 +4901,10 @@
(set_local $9
(i32.const 278)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
- (br $while-in$70)
+ (br $while-in$72)
)
(if
(i32.eq
@@ -4946,9 +4946,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $14
+ (tee_local $14
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $36)
(i32.const 8)
@@ -4956,7 +4956,7 @@
)
)
)
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 192)
)
@@ -4997,7 +4997,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $14
+ (tee_local $14
(i32.add
(i32.load
(i32.const 188)
@@ -5029,11 +5029,11 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$73 $while-in$74
(if
(if
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.load
(get_local $28)
)
@@ -5041,7 +5041,7 @@
(get_local $13)
)
(i32.gt_u
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $3)
(i32.load offset=4
@@ -5057,7 +5057,7 @@
(set_local $5
(get_local $15)
)
- (br $while-out$71)
+ (br $while-out$73)
)
)
(set_local $28
@@ -5065,11 +5065,11 @@
(get_local $28)
)
)
- (br $while-in$72)
+ (br $while-in$74)
)
(set_local $15
(i32.add
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $5)
(i32.const -47)
@@ -5080,10 +5080,10 @@
)
(set_local $3
(i32.add
- (set_local $12
+ (tee_local $12
(select
(get_local $13)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $12)
(select
@@ -5107,7 +5107,7 @@
)
(i32.lt_u
(get_local $3)
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $13)
(i32.const 16)
@@ -5121,16 +5121,16 @@
)
(i32.store
(i32.const 200)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $20)
- (set_local $17
+ (tee_local $17
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $20)
(i32.const 8)
@@ -5153,7 +5153,7 @@
)
(i32.store
(i32.const 188)
- (set_local $14
+ (tee_local $14
(i32.sub
(i32.add
(get_local $22)
@@ -5184,7 +5184,7 @@
)
)
(i32.store
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $12)
(i32.const 4)
@@ -5238,9 +5238,9 @@
(i32.const 24)
)
)
- (loop $do-in$74
+ (loop $do-in$76
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(i32.const 4)
@@ -5248,7 +5248,7 @@
)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$76
(i32.lt_u
(i32.add
(get_local $3)
@@ -5276,7 +5276,7 @@
(i32.store offset=4
(get_local $13)
(i32.or
- (set_local $3
+ (tee_local $3
(i32.sub
(get_local $12)
(get_local $13)
@@ -5315,12 +5315,12 @@
)
(if
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 1)
(get_local $6)
@@ -5329,9 +5329,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $17)
(i32.const 8)
@@ -5395,9 +5395,9 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $5
+ (tee_local $5
(if
- (set_local $17
+ (tee_local $17
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -5414,20 +5414,20 @@
(i32.shr_u
(get_local $3)
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $17)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
@@ -5450,11 +5450,11 @@
)
(get_local $7)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $1)
(get_local $17)
@@ -5511,12 +5511,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $5)
@@ -5575,7 +5575,7 @@
(get_local $6)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$77 $while-in$78
(if
(i32.eq
(i32.and
@@ -5593,13 +5593,13 @@
(set_local $9
(i32.const 307)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(get_local $1)
@@ -5637,10 +5637,10 @@
(set_local $9
(i32.const 304)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
- (br $while-in$76)
+ (br $while-in$78)
)
(if
(i32.eq
@@ -5682,9 +5682,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $38)
(i32.const 8)
@@ -5692,7 +5692,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 192)
)
@@ -5736,7 +5736,7 @@
(if
(i32.or
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 192)
)
@@ -5778,9 +5778,9 @@
(set_local $2
(i32.const 0)
)
- (loop $do-in$78
+ (loop $do-in$47
(i32.store offset=12
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 216)
(i32.shl
@@ -5798,9 +5798,9 @@
(get_local $1)
(get_local $1)
)
- (br_if $do-in$78
+ (br_if $do-in$47
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const 1)
@@ -5812,16 +5812,16 @@
)
(i32.store
(i32.const 200)
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $20)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $20)
(i32.const 8)
@@ -5844,7 +5844,7 @@
)
(i32.store
(i32.const 188)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.add
(get_local $22)
@@ -5879,7 +5879,7 @@
)
(if
(i32.gt_u
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 188)
)
@@ -5889,7 +5889,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $20
+ (tee_local $20
(i32.sub
(get_local $22)
(get_local $0)
@@ -5898,9 +5898,9 @@
)
(i32.store
(i32.const 200)
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 200)
)
@@ -5967,13 +5967,13 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 192)
)
@@ -5983,9 +5983,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.add
(get_local $0)
@@ -6003,7 +6003,7 @@
(set_local $8
(i32.add
(get_local $1)
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $9)
(i32.const -8)
@@ -6045,7 +6045,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.sub
@@ -6069,9 +6069,9 @@
(if
(i32.ne
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $8)
(i32.const 4)
@@ -6140,12 +6140,12 @@
)
(if
(i32.ne
- (set_local $9
+ (tee_local $9
(i32.load offset=8
(get_local $0)
)
)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 216)
(i32.shl
@@ -6223,7 +6223,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 8)
@@ -6270,7 +6270,7 @@
(block $do-once$2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $0)
)
@@ -6279,11 +6279,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 16)
@@ -6304,7 +6304,7 @@
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $6)
)
@@ -6320,9 +6320,9 @@
)
(loop $while-out$4 $while-in$5
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 20)
@@ -6341,9 +6341,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 16)
@@ -6391,7 +6391,7 @@
(block
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load offset=8
(get_local $0)
)
@@ -6403,7 +6403,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $5)
(i32.const 12)
@@ -6417,7 +6417,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 8)
@@ -6451,11 +6451,11 @@
(i32.eq
(get_local $0)
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $0)
)
@@ -6514,7 +6514,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 16)
@@ -6551,7 +6551,7 @@
(if
(i32.lt_u
(get_local $4)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -6564,9 +6564,9 @@
(get_local $9)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 16)
@@ -6593,7 +6593,7 @@
)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load offset=4
(get_local $5)
)
@@ -6655,9 +6655,9 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $8)
(i32.const 4)
@@ -6712,7 +6712,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.load
(i32.const 188)
@@ -6762,7 +6762,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.load
(i32.const 184)
@@ -6822,7 +6822,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $10
+ (tee_local $10
(i32.load offset=12
(get_local $8)
)
@@ -6831,11 +6831,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $8)
(i32.const 16)
@@ -6856,7 +6856,7 @@
)
(if
(i32.eqz
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $6)
)
@@ -6872,9 +6872,9 @@
)
(loop $while-out$12 $while-in$13
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -6893,9 +6893,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -6937,7 +6937,7 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $8)
)
@@ -6951,7 +6951,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $1)
(i32.const 12)
@@ -6965,7 +6965,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $10)
(i32.const 8)
@@ -6999,11 +6999,11 @@
(i32.eq
(get_local $8)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 480)
(i32.shl
- (set_local $10
+ (tee_local $10
(i32.load offset=28
(get_local $8)
)
@@ -7056,7 +7056,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $5)
(i32.const 16)
@@ -7084,7 +7084,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 192)
)
@@ -7097,9 +7097,9 @@
(get_local $5)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $8)
(i32.const 16)
@@ -7126,7 +7126,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $3)
)
@@ -7162,12 +7162,12 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $8)
)
)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 216)
(i32.shl
@@ -7243,7 +7243,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $10)
(i32.const 8)
@@ -7336,12 +7336,12 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 176)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $7)
@@ -7350,9 +7350,9 @@
)
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -7416,9 +7416,9 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $0)
(i32.const 8)
@@ -7435,20 +7435,20 @@
(i32.shr_u
(get_local $0)
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $15
+ (tee_local $15
(i32.shl
(get_local $1)
- (set_local $13
+ (tee_local $13
(i32.and
(i32.shr_u
(i32.add
@@ -7471,11 +7471,11 @@
)
(get_local $13)
)
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $15)
(get_local $1)
@@ -7531,12 +7531,12 @@
)
(if
(i32.and
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 180)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $1)
@@ -7590,9 +7590,9 @@
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(i32.add
(get_local $1)
@@ -7675,9 +7675,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $17)
(i32.const 8)
@@ -7685,7 +7685,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 192)
)
@@ -7751,7 +7751,7 @@
)
(i32.store
(i32.const 208)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.load
(i32.const 208)
@@ -7769,7 +7769,7 @@
)
(loop $while-out$20 $while-in$21
(if
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -7830,15 +7830,15 @@
(get_local $11)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $11)
(i32.const 32)
)
)
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $0)
(i32.const 28)
@@ -7849,10 +7849,10 @@
)
(i32.store offset=4
(get_local $3)
- (set_local $10
+ (tee_local $10
(i32.sub
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 20)
@@ -7899,7 +7899,7 @@
(if
(i32.eq
(get_local $5)
- (set_local $6
+ (tee_local $6
(if
(i32.load
(i32.const 8)
@@ -7996,7 +7996,7 @@
(if
(i32.le_u
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.load offset=4
(get_local $4)
)
@@ -8038,7 +8038,7 @@
(block
(i32.store
(get_local $9)
- (set_local $7
+ (tee_local $7
(i32.load
(get_local $8)
)
@@ -8108,7 +8108,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $8)
)
@@ -8120,7 +8120,7 @@
)
(i32.store
(get_local $9)
- (set_local $8
+ (tee_local $8
(get_local $5)
)
)
@@ -8190,9 +8190,9 @@
(local $6 i32)
(local $7 i32)
(if
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $2)
(i32.const 16)
@@ -8235,9 +8235,9 @@
)
(block
(set_local $6
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -8309,7 +8309,7 @@
(i32.load8_s
(i32.add
(get_local $0)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $3)
(i32.const -1)
@@ -8382,10 +8382,12 @@
)
)
)
- (call $_memcpy
- (get_local $6)
- (get_local $2)
- (get_local $0)
+ (drop
+ (call $_memcpy
+ (get_local $6)
+ (get_local $2)
+ (get_local $0)
+ )
)
(i32.store
(get_local $5)
@@ -8469,7 +8471,7 @@
(i32.const 36)
)
(if
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 32)
)
@@ -8522,12 +8524,13 @@
)
)
(if
- (set_local $1
- (i32.load offset=56
- (get_local $1)
+ (i32.eqz
+ (tee_local $1
+ (i32.load offset=56
+ (get_local $1)
+ )
)
)
- (get_local $2)
(block
(set_local $0
(get_local $2)
@@ -8538,7 +8541,6 @@
(br $while-in$3)
)
)
- (get_local $0)
)
(call_import $___unlock
(i32.const 36)
@@ -8557,7 +8559,7 @@
(block $label$break$L1
(if
(i32.and
- (set_local $3
+ (tee_local $3
(get_local $0)
)
(i32.const 3)
@@ -8581,18 +8583,19 @@
)
)
(if
- (i32.and
- (set_local $4
- (set_local $0
- (i32.add
- (get_local $0)
- (i32.const 1)
+ (i32.eqz
+ (i32.and
+ (tee_local $4
+ (tee_local $0
+ (i32.add
+ (get_local $0)
+ (i32.const 1)
+ )
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -8630,7 +8633,7 @@
(i32.and
(i32.xor
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $1)
)
@@ -8672,7 +8675,7 @@
(loop $while-out$5 $while-in$6
(if
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 1)
@@ -8687,7 +8690,6 @@
(br $while-in$6)
)
)
- (get_local $1)
)
(set_local $5
(get_local $1)
@@ -8724,10 +8726,10 @@
)
)
(i32.store8
- (set_local $6
+ (tee_local $6
(get_local $5)
)
- (set_local $9
+ (tee_local $9
(i32.and
(get_local $1)
(i32.const 255)
@@ -8735,9 +8737,9 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 16)
@@ -8782,9 +8784,9 @@
(if
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8795,7 +8797,7 @@
(get_local $7)
)
(i32.ne
- (set_local $10
+ (tee_local $10
(i32.and
(get_local $1)
(i32.const 255)
@@ -8870,7 +8872,7 @@
(if
(i32.gt_u
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -8878,7 +8880,7 @@
)
)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 28)
@@ -8887,19 +8889,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(i32.eq
(i32.load
@@ -8914,9 +8918,9 @@
(block
(if
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 4)
@@ -8924,9 +8928,9 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 8)
@@ -9144,7 +9148,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -9173,7 +9177,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -9264,7 +9268,7 @@
(if
(i32.gt_s
(i32.load offset=76
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 52)
)
@@ -9299,9 +9303,9 @@
(i32.const 10)
)
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 20)
@@ -9375,7 +9379,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -9392,7 +9396,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -9437,7 +9441,7 @@
(local $2 i32)
(set_local $2
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 74)
@@ -9457,7 +9461,7 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -9485,7 +9489,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -9519,7 +9523,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.gt_s
(i32.load offset=76
@@ -9735,7 +9739,7 @@
)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -9978,8 +9982,10 @@
)
)
(func $_main (result i32)
- (call $_puts
- (i32.const 672)
+ (drop
+ (call $_puts
+ (i32.const 672)
+ )
)
(i32.const 0)
)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise
index 4f0513d28..a87591d78 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise
+++ b/test/emcc_O2_hello_world.fromasm.imprecise
@@ -106,16 +106,16 @@
(block
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 176)
)
)
- (set_local $5
+ (tee_local $5
(i32.shr_u
- (set_local $0
+ (tee_local $0
(select
(i32.const 16)
(i32.and
@@ -141,18 +141,18 @@
(block
(set_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.xor
(i32.and
@@ -198,7 +198,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 12)
@@ -237,7 +237,7 @@
(i32.store offset=4
(get_local $5)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
(i32.const 3)
@@ -247,7 +247,7 @@
)
)
(i32.store
- (set_local $4
+ (tee_local $4
(i32.add
(i32.add
(get_local $5)
@@ -271,7 +271,7 @@
(if
(i32.gt_u
(get_local $0)
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 184)
)
@@ -284,17 +284,17 @@
(set_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.add
(i32.and
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shl
(get_local $2)
(get_local $5)
)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 2)
(get_local $5)
@@ -322,27 +322,27 @@
)
(set_local $1
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $18
+ (tee_local $18
(i32.add
- (set_local $10
+ (tee_local $10
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $9
+ (tee_local $9
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -355,10 +355,10 @@
)
(get_local $1)
)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.shr_u
(get_local $9)
(get_local $2)
@@ -370,10 +370,10 @@
)
)
)
- (set_local $16
+ (tee_local $16
(i32.and
(i32.shr_u
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $16)
(get_local $9)
@@ -385,10 +385,10 @@
)
)
)
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
- (set_local $18
+ (tee_local $18
(i32.shr_u
(get_local $10)
(get_local $16)
@@ -440,7 +440,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 12)
@@ -494,14 +494,14 @@
)
)
(i32.store offset=4
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $16)
(get_local $0)
)
)
(i32.or
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.shl
(get_local $19)
@@ -533,7 +533,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $18
+ (tee_local $18
(i32.shr_u
(get_local $8)
(i32.const 3)
@@ -547,12 +547,12 @@
)
(if
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $18)
@@ -561,9 +561,9 @@
)
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $18
+ (tee_local $18
(i32.add
(get_local $10)
(i32.const 8)
@@ -636,7 +636,7 @@
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 180)
)
@@ -645,7 +645,7 @@
(set_local $7
(i32.and
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.add
(i32.and
(get_local $7)
@@ -666,7 +666,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $8
+ (tee_local $8
(i32.load offset=480
(i32.shl
(i32.add
@@ -674,10 +674,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $4
+ (tee_local $4
(i32.and
(i32.shr_u
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $4)
(get_local $7)
@@ -690,10 +690,10 @@
)
(get_local $7)
)
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $10)
(get_local $4)
@@ -705,10 +705,10 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $10)
@@ -720,10 +720,10 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -756,9 +756,9 @@
(set_local $1
(get_local $8)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=16
(get_local $5)
)
@@ -767,7 +767,7 @@
(get_local $8)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=20
(get_local $5)
)
@@ -782,13 +782,13 @@
(set_local $4
(get_local $1)
)
- (br $while-out$6)
+ (br $while-out$23)
)
)
)
(set_local $10
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.sub
(i32.and
(i32.load offset=4
@@ -819,12 +819,12 @@
(get_local $10)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $4)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -835,7 +835,7 @@
(if
(i32.ge_u
(get_local $4)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(get_local $0)
@@ -849,10 +849,10 @@
(get_local $4)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $9
+ (tee_local $9
(i32.load offset=12
(get_local $4)
)
@@ -861,9 +861,9 @@
)
(block
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $4)
(i32.const 20)
@@ -881,9 +881,9 @@
)
(if
(i32.eqz
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $4)
(i32.const 16)
@@ -896,15 +896,15 @@
(set_local $18
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $8)
(i32.const 20)
@@ -919,13 +919,13 @@
(set_local $10
(get_local $16)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $8)
(i32.const 16)
@@ -941,9 +941,9 @@
(get_local $16)
)
)
- (br $while-out$10)
+ (br $while-out$27)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -965,7 +965,7 @@
(block
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.load offset=8
(get_local $4)
)
@@ -977,7 +977,7 @@
(if
(i32.ne
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $16)
(i32.const 12)
@@ -991,7 +991,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $9)
(i32.const 8)
@@ -1018,7 +1018,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $2)
(block
@@ -1026,11 +1026,11 @@
(i32.eq
(get_local $4)
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 480)
(i32.shl
- (set_local $9
+ (tee_local $9
(i32.load offset=28
(get_local $4)
)
@@ -1066,7 +1066,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1083,7 +1083,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 16)
@@ -1101,7 +1101,7 @@
(get_local $18)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eqz
(get_local $18)
)
@@ -1111,7 +1111,7 @@
(if
(i32.lt_u
(get_local $18)
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 192)
)
@@ -1124,7 +1124,7 @@
(get_local $2)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $4)
)
@@ -1148,7 +1148,7 @@
)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=20
(get_local $4)
)
@@ -1185,7 +1185,7 @@
(i32.store offset=4
(get_local $4)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $7)
(get_local $0)
@@ -1195,7 +1195,7 @@
)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $4)
@@ -1235,7 +1235,7 @@
(get_local $7)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 184)
)
@@ -1251,7 +1251,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $9
+ (tee_local $9
(i32.shr_u
(get_local $1)
(i32.const 3)
@@ -1265,12 +1265,12 @@
)
(if
(i32.and
- (set_local $16
+ (tee_local $16
(i32.load
(i32.const 176)
)
)
- (set_local $10
+ (tee_local $10
(i32.shl
(i32.const 1)
(get_local $9)
@@ -1279,9 +1279,9 @@
)
(if
(i32.lt_u
- (set_local $19
+ (tee_local $19
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $1)
(i32.const 8)
@@ -1357,10 +1357,8 @@
)
)
)
- (get_local $0)
)
)
- (get_local $0)
)
)
(if
@@ -1371,7 +1369,7 @@
(block
(set_local $2
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 11)
@@ -1381,7 +1379,7 @@
)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 180)
)
@@ -1395,12 +1393,12 @@
)
(block $label$break$L123
(if
- (set_local $7
+ (tee_local $7
(i32.load offset=480
(i32.shl
- (set_local $0
+ (tee_local $0
(if
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $1)
(i32.const 8)
@@ -1417,20 +1415,20 @@
(i32.shr_u
(get_local $2)
(i32.add
- (set_local $7
+ (tee_local $7
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
(i32.add
- (set_local $9
+ (tee_local $9
(i32.shl
(get_local $19)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
@@ -1453,11 +1451,11 @@
)
(get_local $1)
)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
(i32.add
- (set_local $8
+ (tee_local $8
(i32.shl
(get_local $9)
(get_local $19)
@@ -1531,12 +1529,12 @@
(set_local $4
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.sub
- (set_local $18
+ (tee_local $18
(i32.and
(i32.load offset=4
(get_local $19)
@@ -1582,7 +1580,7 @@
(set_local $18
(select
(get_local $8)
- (set_local $5
+ (tee_local $5
(i32.load offset=20
(get_local $19)
)
@@ -1594,7 +1592,7 @@
)
(i32.eq
(get_local $5)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.add
(i32.add
@@ -1616,7 +1614,7 @@
)
)
(if
- (set_local $5
+ (tee_local $5
(i32.eq
(get_local $19)
(i32.const 0)
@@ -1635,7 +1633,7 @@
(set_local $9
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $8
@@ -1655,7 +1653,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
(block
@@ -1680,7 +1678,7 @@
(i32.const 86)
)
(if
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -1695,11 +1693,11 @@
(block
(if
(i32.eqz
- (set_local $16
+ (tee_local $16
(i32.and
(get_local $10)
(i32.or
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 2)
(get_local $0)
@@ -1723,7 +1721,7 @@
(set_local $16
(i32.and
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.add
(i32.and
(get_local $16)
@@ -1747,10 +1745,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $7)
(get_local $16)
@@ -1763,10 +1761,10 @@
)
(get_local $16)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $0)
(get_local $7)
@@ -1778,10 +1776,10 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.shr_u
(get_local $5)
(get_local $0)
@@ -1793,10 +1791,10 @@
)
)
)
- (set_local $4
+ (tee_local $4
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $4)
(get_local $5)
@@ -1849,13 +1847,13 @@
(get_local $9)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $9
(i32.const 0)
)
(set_local $1
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.and
(i32.load offset=4
@@ -1884,7 +1882,7 @@
)
)
(if
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $25)
)
@@ -1899,11 +1897,11 @@
(set_local $29
(get_local $4)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load offset=20
(get_local $25)
)
@@ -1923,10 +1921,10 @@
(set_local $12
(get_local $4)
)
- (br $while-out$19)
+ (br $while-out$5)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -1950,7 +1948,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 192)
)
@@ -1961,7 +1959,7 @@
(if
(i32.ge_u
(get_local $12)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $12)
(get_local $2)
@@ -1975,10 +1973,10 @@
(get_local $12)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $12)
)
@@ -1987,9 +1985,9 @@
)
(block
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $12)
(i32.const 20)
@@ -2007,9 +2005,9 @@
)
(if
(i32.eqz
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $12)
(i32.const 16)
@@ -2022,15 +2020,15 @@
(set_local $11
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 20)
@@ -2045,13 +2043,13 @@
(set_local $7
(get_local $0)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 16)
@@ -2067,9 +2065,9 @@
(get_local $0)
)
)
- (br $while-out$23)
+ (br $while-out$9)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2091,7 +2089,7 @@
(block
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $12)
)
@@ -2103,7 +2101,7 @@
(if
(i32.ne
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $0)
(i32.const 12)
@@ -2117,7 +2115,7 @@
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -2144,7 +2142,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $5)
(block
@@ -2152,11 +2150,11 @@
(i32.eq
(get_local $12)
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $12)
)
@@ -2192,7 +2190,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2209,7 +2207,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $5)
(i32.const 16)
@@ -2227,7 +2225,7 @@
(get_local $11)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eqz
(get_local $11)
)
@@ -2237,7 +2235,7 @@
(if
(i32.lt_u
(get_local $11)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -2250,7 +2248,7 @@
(get_local $5)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=16
(get_local $12)
)
@@ -2274,7 +2272,7 @@
)
)
(if
- (set_local $10
+ (tee_local $10
(i32.load offset=20
(get_local $12)
)
@@ -2302,7 +2300,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.ge_u
(get_local $6)
@@ -2356,12 +2354,12 @@
)
(if
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 1)
(get_local $5)
@@ -2370,9 +2368,9 @@
)
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $10)
(i32.const 8)
@@ -2429,16 +2427,16 @@
(get_local $4)
(get_local $10)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $5
(i32.add
(i32.const 480)
(i32.shl
- (set_local $8
+ (tee_local $8
(if
- (set_local $10
+ (tee_local $10
(i32.shr_u
(get_local $6)
(i32.const 8)
@@ -2455,20 +2453,20 @@
(i32.shr_u
(get_local $6)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $10
+ (tee_local $10
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $10)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -2491,11 +2489,11 @@
)
(get_local $0)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $1)
(get_local $10)
@@ -2542,7 +2540,7 @@
(get_local $8)
)
(i32.store offset=4
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(i32.const 16)
@@ -2557,12 +2555,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 1)
(get_local $8)
@@ -2594,7 +2592,7 @@
(get_local $4)
(get_local $4)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $7
@@ -2621,7 +2619,7 @@
(get_local $5)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -2639,13 +2637,13 @@
(set_local $9
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.add
(get_local $1)
@@ -2683,10 +2681,10 @@
(set_local $9
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -2728,9 +2726,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -2738,7 +2736,7 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -2780,7 +2778,7 @@
(i32.store offset=4
(get_local $12)
(i32.or
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $6)
(get_local $2)
@@ -2790,7 +2788,7 @@
)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $12)
@@ -2834,7 +2832,7 @@
)
(if
(i32.ge_u
- (set_local $12
+ (tee_local $12
(i32.load
(i32.const 184)
)
@@ -2849,7 +2847,7 @@
)
(if
(i32.gt_u
- (set_local $6
+ (tee_local $6
(i32.sub
(get_local $12)
(get_local $0)
@@ -2860,7 +2858,7 @@
(block
(i32.store
(i32.const 196)
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $15)
(get_local $0)
@@ -2910,7 +2908,7 @@
)
)
(i32.store
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(get_local $15)
@@ -2938,7 +2936,7 @@
)
(if
(i32.gt_u
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 188)
)
@@ -2948,7 +2946,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $6
+ (tee_local $6
(i32.sub
(get_local $15)
(get_local $0)
@@ -2957,9 +2955,9 @@
)
(i32.store
(i32.const 200)
- (set_local $12
+ (tee_local $12
(i32.add
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 200)
)
@@ -2999,7 +2997,7 @@
(if
(i32.and
(i32.add
- (set_local $15
+ (tee_local $15
(call_import $_sysconf
(i32.const 30)
)
@@ -3057,16 +3055,16 @@
)
(if
(i32.le_u
- (set_local $6
+ (tee_local $6
(i32.and
- (set_local $21
+ (tee_local $21
(i32.add
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 656)
)
)
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $0)
(i32.const 47)
@@ -3074,7 +3072,7 @@
)
)
)
- (set_local $23
+ (tee_local $23
(i32.sub
(i32.const 0)
(get_local $6)
@@ -3091,7 +3089,7 @@
(if
(if
(i32.ne
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 616)
)
@@ -3100,9 +3098,9 @@
)
(i32.or
(i32.le_u
- (set_local $14
+ (tee_local $14
(i32.add
- (set_local $26
+ (tee_local $26
(i32.load
(i32.const 608)
)
@@ -3133,7 +3131,7 @@
)
(i32.const 0)
(i32.eq
- (set_local $9
+ (tee_local $9
(block $label$break$L257
(if
(i32.and
@@ -3146,7 +3144,7 @@
(block
(block $label$break$L259
(if
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 200)
)
@@ -3159,7 +3157,7 @@
(if
(if
(i32.le_u
- (set_local $26
+ (tee_local $26
(i32.load
(get_local $14)
)
@@ -3170,7 +3168,7 @@
(i32.add
(get_local $26)
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $14)
(i32.const 4)
@@ -3194,7 +3192,7 @@
)
(if
(i32.eqz
- (set_local $14
+ (tee_local $14
(i32.load offset=8
(get_local $14)
)
@@ -3211,7 +3209,7 @@
)
(if
(i32.lt_u
- (set_local $14
+ (tee_local $14
(i32.and
(i32.sub
(get_local $21)
@@ -3226,7 +3224,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(call_import $_sbrk
(get_local $14)
)
@@ -3284,7 +3282,7 @@
(i32.const 173)
)
(i32.ne
- (set_local $8
+ (tee_local $8
(call_import $_sbrk
(i32.const 0)
)
@@ -3297,9 +3295,9 @@
(set_local $1
(if
(i32.and
- (set_local $11
+ (tee_local $11
(i32.add
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 652)
)
@@ -3307,7 +3305,7 @@
(i32.const -1)
)
)
- (set_local $2
+ (tee_local $2
(get_local $8)
)
)
@@ -3332,7 +3330,7 @@
)
(set_local $2
(i32.add
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 608)
)
@@ -3361,7 +3359,7 @@
)
(i32.gt_u
(get_local $2)
- (set_local $11
+ (tee_local $11
(i32.load
(i32.const 616)
)
@@ -3377,7 +3375,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(call_import $_sbrk
(get_local $1)
)
@@ -3444,14 +3442,14 @@
)
)
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.and
(i32.add
(i32.sub
(get_local $12)
(get_local $17)
)
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 656)
)
@@ -3475,8 +3473,10 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $11)
+ (drop
+ (call_import $_sbrk
+ (get_local $11)
+ )
)
(br $label$break$L279)
)
@@ -3530,12 +3530,12 @@
)
(i32.and
(i32.lt_u
- (set_local $3
+ (tee_local $3
(call_import $_sbrk
(get_local $6)
)
)
- (set_local $6
+ (tee_local $6
(call_import $_sbrk
(i32.const 0)
)
@@ -3555,7 +3555,7 @@
(i32.const 0)
)
(i32.gt_u
- (set_local $13
+ (tee_local $13
(i32.sub
(get_local $6)
(get_local $3)
@@ -3588,7 +3588,7 @@
(block
(i32.store
(i32.const 608)
- (set_local $13
+ (tee_local $13
(i32.add
(i32.load
(i32.const 608)
@@ -3611,7 +3611,7 @@
)
(block $do-once$44
(if
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 200)
)
@@ -3620,19 +3620,19 @@
(set_local $3
(i32.const 624)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$48 $do-in$49
(if
(i32.eq
(get_local $20)
(i32.add
- (set_local $6
+ (tee_local $6
(i32.load
(get_local $3)
)
)
- (set_local $12
+ (tee_local $12
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $3)
(i32.const 4)
@@ -3658,12 +3658,12 @@
(set_local $9
(i32.const 203)
)
- (br $do-out$46)
+ (br $do-out$48)
)
)
- (br_if $do-in$47
+ (br_if $do-in$49
(i32.ne
- (set_local $3
+ (tee_local $3
(i32.load offset=8
(get_local $3)
)
@@ -3713,13 +3713,13 @@
(set_local $3
(i32.add
(get_local $13)
- (set_local $12
+ (tee_local $12
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $13)
(i32.const 8)
@@ -3785,7 +3785,7 @@
(if
(i32.lt_u
(get_local $20)
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 192)
)
@@ -3810,7 +3810,7 @@
(set_local $3
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$50 $while-in$51
(if
(i32.eq
(i32.load
@@ -3828,12 +3828,12 @@
(set_local $9
(i32.const 211)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
(if
(i32.eqz
- (set_local $3
+ (tee_local $3
(i32.load offset=8
(get_local $3)
)
@@ -3843,10 +3843,10 @@
(set_local $28
(i32.const 624)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
- (br $while-in$49)
+ (br $while-in$51)
)
(if
(i32.eq
@@ -3869,7 +3869,7 @@
(get_local $20)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $41)
(i32.const 4)
@@ -3890,7 +3890,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $20)
(i32.const 8)
@@ -3917,7 +3917,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $17)
(i32.const 8)
@@ -3958,7 +3958,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$52
(if
(i32.ne
(get_local $6)
@@ -3975,7 +3975,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.load
(i32.const 184)
@@ -4002,16 +4002,16 @@
)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(i32.store
- (set_local $5
+ (tee_local $5
(i32.add
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $6)
)
@@ -4045,10 +4045,10 @@
(get_local $6)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.eq
- (set_local $21
+ (tee_local $21
(i32.load offset=12
(get_local $6)
)
@@ -4057,11 +4057,11 @@
)
(block
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $6)
(i32.const 16)
@@ -4082,7 +4082,7 @@
)
(if
(i32.eqz
- (set_local $14
+ (tee_local $14
(i32.load
(get_local $11)
)
@@ -4092,15 +4092,15 @@
(set_local $24
(i32.const 0)
)
- (br $do-once$53)
+ (br $do-once$59)
)
)
)
- (loop $while-out$55 $while-in$56
+ (loop $while-out$61 $while-in$62
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $14)
(i32.const 20)
@@ -4115,13 +4115,13 @@
(set_local $11
(get_local $2)
)
- (br $while-in$56)
+ (br $while-in$62)
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $14)
(i32.const 16)
@@ -4137,9 +4137,9 @@
(get_local $2)
)
)
- (br $while-out$55)
+ (br $while-out$61)
)
- (br $while-in$56)
+ (br $while-in$62)
)
(if
(i32.lt_u
@@ -4161,7 +4161,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $6)
)
@@ -4173,7 +4173,7 @@
(if
(i32.ne
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 12)
@@ -4187,7 +4187,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $21)
(i32.const 8)
@@ -4219,16 +4219,16 @@
(get_local $23)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.ne
(get_local $6)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $21
+ (tee_local $21
(i32.load offset=28
(get_local $6)
)
@@ -4252,7 +4252,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $23)
(i32.const 16)
@@ -4281,7 +4281,7 @@
(get_local $2)
(get_local $24)
)
- (br_if $do-once$57
+ (br_if $do-once$63
(get_local $24)
)
(i32.store
@@ -4306,7 +4306,7 @@
(if
(i32.lt_u
(get_local $24)
- (set_local $21
+ (tee_local $21
(i32.load
(i32.const 192)
)
@@ -4319,9 +4319,9 @@
(get_local $23)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $6)
(i32.const 16)
@@ -4349,7 +4349,7 @@
)
(br_if $label$break$L331
(i32.eqz
- (set_local $11
+ (tee_local $11
(i32.load offset=4
(get_local $2)
)
@@ -4382,15 +4382,15 @@
(get_local $6)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.ne
- (set_local $11
+ (tee_local $11
(i32.load offset=8
(get_local $6)
)
)
- (set_local $23
+ (tee_local $23
(i32.add
(i32.const 216)
(i32.shl
@@ -4411,7 +4411,7 @@
)
(call_import $_abort)
)
- (br_if $do-once$61
+ (br_if $do-once$55
(i32.eq
(i32.load offset=12
(get_local $11)
@@ -4447,7 +4447,7 @@
(br $label$break$L331)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $21)
@@ -4470,7 +4470,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $21)
(i32.const 8)
@@ -4483,7 +4483,7 @@
(set_local $42
(get_local $2)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
(call_import $_abort)
@@ -4562,15 +4562,15 @@
)
)
)
- (block $do-once$65
+ (block $do-once$67
(if
(i32.and
- (set_local $23
+ (tee_local $23
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $5)
@@ -4580,9 +4580,9 @@
(block
(if
(i32.ge_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 8)
@@ -4601,7 +4601,7 @@
(set_local $35
(get_local $8)
)
- (br $do-once$65)
+ (br $do-once$67)
)
)
(call_import $_abort)
@@ -4642,24 +4642,24 @@
(get_local $3)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
- (block $do-once$67
+ (tee_local $0
+ (block $do-once$69
(if
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $15)
(i32.const 8)
)
)
(block
- (br_if $do-once$67
+ (br_if $do-once$69
(i32.const 31)
(i32.gt_u
(get_local $15)
@@ -4671,20 +4671,20 @@
(i32.shr_u
(get_local $15)
(i32.add
- (set_local $14
+ (tee_local $14
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $8
+ (tee_local $8
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $2)
- (set_local $23
+ (tee_local $23
(i32.and
(i32.shr_u
(i32.add
@@ -4707,11 +4707,11 @@
)
(get_local $23)
)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.shl
(get_local $7)
(get_local $8)
@@ -4759,7 +4759,7 @@
(get_local $0)
)
(i32.store offset=4
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $3)
(i32.const 16)
@@ -4774,12 +4774,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $14
+ (tee_local $14
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4811,7 +4811,7 @@
(get_local $3)
(get_local $3)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $14
@@ -4838,7 +4838,7 @@
(get_local $2)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$71 $while-in$72
(if
(i32.eq
(i32.and
@@ -4856,13 +4856,13 @@
(set_local $9
(i32.const 281)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $1)
@@ -4900,10 +4900,10 @@
(set_local $9
(i32.const 278)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
- (br $while-in$70)
+ (br $while-in$72)
)
(if
(i32.eq
@@ -4945,9 +4945,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $14
+ (tee_local $14
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $36)
(i32.const 8)
@@ -4955,7 +4955,7 @@
)
)
)
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 192)
)
@@ -4996,7 +4996,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $14
+ (tee_local $14
(i32.add
(i32.load
(i32.const 188)
@@ -5028,11 +5028,11 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$73 $while-in$74
(if
(if
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.load
(get_local $28)
)
@@ -5040,7 +5040,7 @@
(get_local $13)
)
(i32.gt_u
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $3)
(i32.load offset=4
@@ -5056,7 +5056,7 @@
(set_local $5
(get_local $15)
)
- (br $while-out$71)
+ (br $while-out$73)
)
)
(set_local $28
@@ -5064,11 +5064,11 @@
(get_local $28)
)
)
- (br $while-in$72)
+ (br $while-in$74)
)
(set_local $15
(i32.add
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $5)
(i32.const -47)
@@ -5079,10 +5079,10 @@
)
(set_local $3
(i32.add
- (set_local $12
+ (tee_local $12
(select
(get_local $13)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $12)
(select
@@ -5106,7 +5106,7 @@
)
(i32.lt_u
(get_local $3)
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $13)
(i32.const 16)
@@ -5120,16 +5120,16 @@
)
(i32.store
(i32.const 200)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $20)
- (set_local $17
+ (tee_local $17
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $20)
(i32.const 8)
@@ -5152,7 +5152,7 @@
)
(i32.store
(i32.const 188)
- (set_local $14
+ (tee_local $14
(i32.sub
(i32.add
(get_local $22)
@@ -5183,7 +5183,7 @@
)
)
(i32.store
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $12)
(i32.const 4)
@@ -5237,9 +5237,9 @@
(i32.const 24)
)
)
- (loop $do-in$74
+ (loop $do-in$76
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(i32.const 4)
@@ -5247,7 +5247,7 @@
)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$76
(i32.lt_u
(i32.add
(get_local $3)
@@ -5275,7 +5275,7 @@
(i32.store offset=4
(get_local $13)
(i32.or
- (set_local $3
+ (tee_local $3
(i32.sub
(get_local $12)
(get_local $13)
@@ -5314,12 +5314,12 @@
)
(if
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $7
+ (tee_local $7
(i32.shl
(i32.const 1)
(get_local $6)
@@ -5328,9 +5328,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $17)
(i32.const 8)
@@ -5394,9 +5394,9 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $5
+ (tee_local $5
(if
- (set_local $17
+ (tee_local $17
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -5413,20 +5413,20 @@
(i32.shr_u
(get_local $3)
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $17)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
@@ -5449,11 +5449,11 @@
)
(get_local $7)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $1)
(get_local $17)
@@ -5510,12 +5510,12 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $5)
@@ -5574,7 +5574,7 @@
(get_local $6)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$77 $while-in$78
(if
(i32.eq
(i32.and
@@ -5592,13 +5592,13 @@
(set_local $9
(i32.const 307)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(get_local $1)
@@ -5636,10 +5636,10 @@
(set_local $9
(i32.const 304)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
- (br $while-in$76)
+ (br $while-in$78)
)
(if
(i32.eq
@@ -5681,9 +5681,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $38)
(i32.const 8)
@@ -5691,7 +5691,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 192)
)
@@ -5735,7 +5735,7 @@
(if
(i32.or
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 192)
)
@@ -5777,9 +5777,9 @@
(set_local $2
(i32.const 0)
)
- (loop $do-in$78
+ (loop $do-in$47
(i32.store offset=12
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 216)
(i32.shl
@@ -5797,9 +5797,9 @@
(get_local $1)
(get_local $1)
)
- (br_if $do-in$78
+ (br_if $do-in$47
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const 1)
@@ -5811,16 +5811,16 @@
)
(i32.store
(i32.const 200)
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $20)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $20)
(i32.const 8)
@@ -5843,7 +5843,7 @@
)
(i32.store
(i32.const 188)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.add
(get_local $22)
@@ -5878,7 +5878,7 @@
)
(if
(i32.gt_u
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 188)
)
@@ -5888,7 +5888,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $20
+ (tee_local $20
(i32.sub
(get_local $22)
(get_local $0)
@@ -5897,9 +5897,9 @@
)
(i32.store
(i32.const 200)
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 200)
)
@@ -5966,13 +5966,13 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 192)
)
@@ -5982,9 +5982,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.add
(get_local $0)
@@ -6002,7 +6002,7 @@
(set_local $8
(i32.add
(get_local $1)
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $9)
(i32.const -8)
@@ -6044,7 +6044,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.sub
@@ -6068,9 +6068,9 @@
(if
(i32.ne
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $8)
(i32.const 4)
@@ -6139,12 +6139,12 @@
)
(if
(i32.ne
- (set_local $9
+ (tee_local $9
(i32.load offset=8
(get_local $0)
)
)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 216)
(i32.shl
@@ -6222,7 +6222,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 8)
@@ -6269,7 +6269,7 @@
(block $do-once$2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $0)
)
@@ -6278,11 +6278,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 16)
@@ -6303,7 +6303,7 @@
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $6)
)
@@ -6319,9 +6319,9 @@
)
(loop $while-out$4 $while-in$5
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 20)
@@ -6340,9 +6340,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $1)
(i32.const 16)
@@ -6390,7 +6390,7 @@
(block
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load offset=8
(get_local $0)
)
@@ -6402,7 +6402,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $5)
(i32.const 12)
@@ -6416,7 +6416,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 8)
@@ -6450,11 +6450,11 @@
(i32.eq
(get_local $0)
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $0)
)
@@ -6513,7 +6513,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 16)
@@ -6550,7 +6550,7 @@
(if
(i32.lt_u
(get_local $4)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -6563,9 +6563,9 @@
(get_local $9)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 16)
@@ -6592,7 +6592,7 @@
)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load offset=4
(get_local $5)
)
@@ -6654,9 +6654,9 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $8)
(i32.const 4)
@@ -6711,7 +6711,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.load
(i32.const 188)
@@ -6761,7 +6761,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.load
(i32.const 184)
@@ -6821,7 +6821,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $10
+ (tee_local $10
(i32.load offset=12
(get_local $8)
)
@@ -6830,11 +6830,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $8)
(i32.const 16)
@@ -6855,7 +6855,7 @@
)
(if
(i32.eqz
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $6)
)
@@ -6871,9 +6871,9 @@
)
(loop $while-out$12 $while-in$13
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -6892,9 +6892,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -6936,7 +6936,7 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $8)
)
@@ -6950,7 +6950,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $1)
(i32.const 12)
@@ -6964,7 +6964,7 @@
(if
(i32.eq
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $10)
(i32.const 8)
@@ -6998,11 +6998,11 @@
(i32.eq
(get_local $8)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 480)
(i32.shl
- (set_local $10
+ (tee_local $10
(i32.load offset=28
(get_local $8)
)
@@ -7055,7 +7055,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $5)
(i32.const 16)
@@ -7083,7 +7083,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 192)
)
@@ -7096,9 +7096,9 @@
(get_local $5)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $8)
(i32.const 16)
@@ -7125,7 +7125,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $3)
)
@@ -7161,12 +7161,12 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $8)
)
)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 216)
(i32.shl
@@ -7242,7 +7242,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $10)
(i32.const 8)
@@ -7335,12 +7335,12 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 176)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $7)
@@ -7349,9 +7349,9 @@
)
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -7415,9 +7415,9 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $0)
(i32.const 8)
@@ -7434,20 +7434,20 @@
(i32.shr_u
(get_local $0)
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $15
+ (tee_local $15
(i32.shl
(get_local $1)
- (set_local $13
+ (tee_local $13
(i32.and
(i32.shr_u
(i32.add
@@ -7470,11 +7470,11 @@
)
(get_local $13)
)
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $15)
(get_local $1)
@@ -7530,12 +7530,12 @@
)
(if
(i32.and
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 180)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $1)
@@ -7589,9 +7589,9 @@
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(i32.add
(get_local $1)
@@ -7674,9 +7674,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $17)
(i32.const 8)
@@ -7684,7 +7684,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 192)
)
@@ -7750,7 +7750,7 @@
)
(i32.store
(i32.const 208)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.load
(i32.const 208)
@@ -7768,7 +7768,7 @@
)
(loop $while-out$20 $while-in$21
(if
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -7829,15 +7829,15 @@
(get_local $11)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $11)
(i32.const 32)
)
)
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $0)
(i32.const 28)
@@ -7848,10 +7848,10 @@
)
(i32.store offset=4
(get_local $3)
- (set_local $10
+ (tee_local $10
(i32.sub
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 20)
@@ -7898,7 +7898,7 @@
(if
(i32.eq
(get_local $5)
- (set_local $6
+ (tee_local $6
(if
(i32.load
(i32.const 8)
@@ -7995,7 +7995,7 @@
(if
(i32.le_u
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.load offset=4
(get_local $4)
)
@@ -8037,7 +8037,7 @@
(block
(i32.store
(get_local $9)
- (set_local $7
+ (tee_local $7
(i32.load
(get_local $8)
)
@@ -8107,7 +8107,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $8)
)
@@ -8119,7 +8119,7 @@
)
(i32.store
(get_local $9)
- (set_local $8
+ (tee_local $8
(get_local $5)
)
)
@@ -8189,9 +8189,9 @@
(local $6 i32)
(local $7 i32)
(if
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $2)
(i32.const 16)
@@ -8234,9 +8234,9 @@
)
(block
(set_local $6
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -8308,7 +8308,7 @@
(i32.load8_s
(i32.add
(get_local $0)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $3)
(i32.const -1)
@@ -8381,10 +8381,12 @@
)
)
)
- (call $_memcpy
- (get_local $6)
- (get_local $2)
- (get_local $0)
+ (drop
+ (call $_memcpy
+ (get_local $6)
+ (get_local $2)
+ (get_local $0)
+ )
)
(i32.store
(get_local $5)
@@ -8468,7 +8470,7 @@
(i32.const 36)
)
(if
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 32)
)
@@ -8521,12 +8523,13 @@
)
)
(if
- (set_local $1
- (i32.load offset=56
- (get_local $1)
+ (i32.eqz
+ (tee_local $1
+ (i32.load offset=56
+ (get_local $1)
+ )
)
)
- (get_local $2)
(block
(set_local $0
(get_local $2)
@@ -8537,7 +8540,6 @@
(br $while-in$3)
)
)
- (get_local $0)
)
(call_import $___unlock
(i32.const 36)
@@ -8556,7 +8558,7 @@
(block $label$break$L1
(if
(i32.and
- (set_local $3
+ (tee_local $3
(get_local $0)
)
(i32.const 3)
@@ -8580,18 +8582,19 @@
)
)
(if
- (i32.and
- (set_local $4
- (set_local $0
- (i32.add
- (get_local $0)
- (i32.const 1)
+ (i32.eqz
+ (i32.and
+ (tee_local $4
+ (tee_local $0
+ (i32.add
+ (get_local $0)
+ (i32.const 1)
+ )
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -8629,7 +8632,7 @@
(i32.and
(i32.xor
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $1)
)
@@ -8671,7 +8674,7 @@
(loop $while-out$5 $while-in$6
(if
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 1)
@@ -8686,7 +8689,6 @@
(br $while-in$6)
)
)
- (get_local $1)
)
(set_local $5
(get_local $1)
@@ -8723,10 +8725,10 @@
)
)
(i32.store8
- (set_local $6
+ (tee_local $6
(get_local $5)
)
- (set_local $9
+ (tee_local $9
(i32.and
(get_local $1)
(i32.const 255)
@@ -8734,9 +8736,9 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 16)
@@ -8781,9 +8783,9 @@
(if
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8794,7 +8796,7 @@
(get_local $7)
)
(i32.ne
- (set_local $10
+ (tee_local $10
(i32.and
(get_local $1)
(i32.const 255)
@@ -8869,7 +8871,7 @@
(if
(i32.gt_u
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -8877,7 +8879,7 @@
)
)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 28)
@@ -8886,19 +8888,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(i32.eq
(i32.load
@@ -8913,9 +8917,9 @@
(block
(if
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 4)
@@ -8923,9 +8927,9 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 8)
@@ -9143,7 +9147,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -9172,7 +9176,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -9263,7 +9267,7 @@
(if
(i32.gt_s
(i32.load offset=76
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 52)
)
@@ -9298,9 +9302,9 @@
(i32.const 10)
)
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 20)
@@ -9374,7 +9378,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -9391,7 +9395,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -9436,7 +9440,7 @@
(local $2 i32)
(set_local $2
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 74)
@@ -9456,7 +9460,7 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -9484,7 +9488,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -9518,7 +9522,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.gt_s
(i32.load offset=76
@@ -9734,7 +9738,7 @@
)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -9977,8 +9981,10 @@
)
)
(func $_main (result i32)
- (call $_puts
- (i32.const 672)
+ (drop
+ (call $_puts
+ (i32.const 672)
+ )
)
(i32.const 0)
)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise.no-opts b/test/emcc_O2_hello_world.fromasm.imprecise.no-opts
index 494915489..df7888820 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise.no-opts
+++ b/test/emcc_O2_hello_world.fromasm.imprecise.no-opts
@@ -227,7 +227,7 @@
(get_local $i10)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(i32.ne
(get_local $i7)
@@ -265,7 +265,7 @@
(get_local $i8)
(get_local $i11)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $_abort)
)
@@ -498,7 +498,7 @@
(get_local $i12)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(i32.ne
(get_local $i15)
@@ -541,7 +541,7 @@
(i32.const 184)
)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $_abort)
)
@@ -880,7 +880,7 @@
(set_local $i7
(get_local $i10)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $i10
(i32.load
(i32.add
@@ -913,7 +913,7 @@
(set_local $i22
(get_local $i7)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $i23
(get_local $i15)
@@ -961,7 +961,7 @@
(get_local $i7)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $i7
(i32.load
@@ -1004,7 +1004,7 @@
)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
(get_local $i12)
@@ -1046,7 +1046,7 @@
(set_local $i24
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $i25
@@ -1067,7 +1067,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $i14
(i32.add
(get_local $i25)
@@ -1088,7 +1088,7 @@
(set_local $i26
(get_local $i14)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $i14
@@ -1113,7 +1113,7 @@
(set_local $i28
(get_local $i26)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $i25
@@ -1124,7 +1124,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -1140,7 +1140,7 @@
(set_local $i24
(get_local $i27)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -1200,14 +1200,14 @@
(set_local $i24
(get_local $i12)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $_abort)
)
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $i5)
(block
@@ -1260,7 +1260,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1303,7 +1303,7 @@
(i32.eqz
(get_local $i24)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1334,7 +1334,7 @@
)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(get_local $i7)
(if
@@ -1358,7 +1358,7 @@
)
(get_local $i24)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -1396,7 +1396,7 @@
)
(get_local $i24)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1829,7 +1829,7 @@
(set_local $i8
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $i16
(i32.and
(i32.load
@@ -1952,7 +1952,7 @@
(set_local $i36
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $i12
@@ -1978,7 +1978,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -2179,7 +2179,7 @@
(get_local $i36)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $i36
(i32.const 0)
)
@@ -2240,7 +2240,7 @@
(set_local $i36
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $i38
@@ -2262,7 +2262,7 @@
(set_local $i44
(get_local $i8)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $i37
@@ -2276,7 +2276,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2338,7 +2338,7 @@
)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
(get_local $i7)
@@ -2380,7 +2380,7 @@
(set_local $i45
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $i46
@@ -2401,7 +2401,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $i2
(i32.add
(get_local $i46)
@@ -2422,7 +2422,7 @@
(set_local $i47
(get_local $i2)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $i2
@@ -2447,7 +2447,7 @@
(set_local $i49
(get_local $i47)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $i46
@@ -2458,7 +2458,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2474,7 +2474,7 @@
(set_local $i45
(get_local $i48)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -2534,14 +2534,14 @@
(set_local $i45
(get_local $i7)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $_abort)
)
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $i3)
(block
@@ -2594,7 +2594,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2637,7 +2637,7 @@
(i32.eqz
(get_local $i45)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2668,7 +2668,7 @@
)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(get_local $i15)
(if
@@ -2692,7 +2692,7 @@
)
(get_local $i45)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -2730,14 +2730,14 @@
)
(get_local $i45)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.ge_u
(get_local $i43)
@@ -2885,7 +2885,7 @@
)
(get_local $i15)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $i15
@@ -3082,7 +3082,7 @@
)
(get_local $i8)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $i4
@@ -3109,7 +3109,7 @@
(get_local $i3)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -3130,7 +3130,7 @@
(set_local $i36
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $i3
@@ -3167,7 +3167,7 @@
(set_local $i36
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $i4
@@ -3181,7 +3181,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -3222,7 +3222,7 @@
)
(get_local $i8)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(if
@@ -3291,7 +3291,7 @@
)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $_abort)
)
@@ -4091,8 +4091,10 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $i45)
+ (drop
+ (call_import $_sbrk
+ (get_local $i45)
+ )
)
(br $label$break$L279)
)
@@ -4267,7 +4269,7 @@
(set_local $i63
(i32.const 624)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$48 $do-in$49
(set_local $i43
(i32.load
(get_local $i63)
@@ -4308,7 +4310,7 @@
(set_local $i36
(i32.const 203)
)
- (br $do-out$46)
+ (br $do-out$48)
)
)
(set_local $i63
@@ -4319,7 +4321,7 @@
)
)
)
- (br_if $do-in$47
+ (br_if $do-in$49
(i32.ne
(get_local $i63)
(i32.const 0)
@@ -4478,7 +4480,7 @@
(set_local $i63
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$50 $while-in$51
(if
(i32.eq
(i32.load
@@ -4496,7 +4498,7 @@
(set_local $i36
(i32.const 211)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
(set_local $i63
@@ -4515,10 +4517,10 @@
(set_local $i71
(i32.const 624)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
- (br $while-in$49)
+ (br $while-in$51)
)
(if
(i32.eq
@@ -4638,7 +4640,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$52
(if
(i32.ne
(get_local $i43)
@@ -4686,7 +4688,7 @@
)
(get_local $i62)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i62
@@ -4741,7 +4743,7 @@
)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.eq
(get_local $i55)
@@ -4783,7 +4785,7 @@
(set_local $i72
(i32.const 0)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(block
(set_local $i73
@@ -4804,7 +4806,7 @@
)
)
)
- (loop $while-out$55 $while-in$56
+ (loop $while-out$61 $while-in$62
(set_local $i5
(i32.add
(get_local $i73)
@@ -4825,7 +4827,7 @@
(set_local $i74
(get_local $i5)
)
- (br $while-in$56)
+ (br $while-in$62)
)
)
(set_local $i5
@@ -4850,7 +4852,7 @@
(set_local $i76
(get_local $i74)
)
- (br $while-out$55)
+ (br $while-out$61)
)
(block
(set_local $i73
@@ -4861,7 +4863,7 @@
)
)
)
- (br $while-in$56)
+ (br $while-in$62)
)
(if
(i32.lt_u
@@ -4877,7 +4879,7 @@
(set_local $i72
(get_local $i75)
)
- (br $do-once$53)
+ (br $do-once$59)
)
)
)
@@ -4937,7 +4939,7 @@
(set_local $i72
(get_local $i55)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(call_import $_abort)
)
@@ -4967,7 +4969,7 @@
)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.ne
(get_local $i43)
@@ -5024,7 +5026,7 @@
)
(if
(get_local $i72)
- (br $do-once$57)
+ (br $do-once$63)
)
(i32.store
(i32.const 180)
@@ -5075,7 +5077,7 @@
(get_local $i5)
)
)
- (block $do-once$59
+ (block $do-once$65
(if
(get_local $i45)
(if
@@ -5099,7 +5101,7 @@
)
(get_local $i72)
)
- (br $do-once$59)
+ (br $do-once$65)
)
)
)
@@ -5174,7 +5176,7 @@
)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.ne
(get_local $i45)
@@ -5198,7 +5200,7 @@
)
(get_local $i43)
)
- (br $do-once$61)
+ (br $do-once$55)
)
(call_import $_abort)
)
@@ -5228,7 +5230,7 @@
(br $label$break$L331)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $i55)
@@ -5265,7 +5267,7 @@
(set_local $i77
(get_local $i5)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
(call_import $_abort)
@@ -5375,7 +5377,7 @@
(get_local $i56)
)
)
- (block $do-once$65
+ (block $do-once$67
(if
(i32.eqz
(i32.and
@@ -5427,7 +5429,7 @@
(set_local $i81
(get_local $i52)
)
- (br $do-once$65)
+ (br $do-once$67)
)
)
(call_import $_abort)
@@ -5459,7 +5461,7 @@
)
(get_local $i62)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i5
@@ -5468,7 +5470,7 @@
(i32.const 8)
)
)
- (block $do-once$67
+ (block $do-once$69
(if
(i32.eqz
(get_local $i5)
@@ -5486,7 +5488,7 @@
(set_local $i82
(i32.const 31)
)
- (br $do-once$67)
+ (br $do-once$69)
)
)
(set_local $i54
@@ -5663,7 +5665,7 @@
)
(get_local $i63)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i50
@@ -5690,7 +5692,7 @@
(get_local $i5)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$71 $while-in$72
(if
(i32.eq
(i32.and
@@ -5711,7 +5713,7 @@
(set_local $i36
(i32.const 281)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
(set_local $i5
@@ -5748,7 +5750,7 @@
(set_local $i36
(i32.const 278)
)
- (br $while-out$69)
+ (br $while-out$71)
)
(block
(set_local $i50
@@ -5762,7 +5764,7 @@
)
)
)
- (br $while-in$70)
+ (br $while-in$72)
)
(if
(i32.eq
@@ -5803,7 +5805,7 @@
)
(get_local $i63)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(if
@@ -5872,7 +5874,7 @@
)
(i32.const 0)
)
- (br $do-once$50)
+ (br $do-once$52)
)
(call_import $_abort)
)
@@ -5925,7 +5927,7 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$73 $while-in$74
(set_local $i63
(i32.load
(get_local $i71)
@@ -5960,7 +5962,7 @@
(set_local $i86
(get_local $i53)
)
- (br $while-out$71)
+ (br $while-out$73)
)
)
(set_local $i71
@@ -5971,7 +5973,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$74)
)
(set_local $i44
(i32.add
@@ -6168,7 +6170,7 @@
(i32.const 24)
)
)
- (loop $do-out$73 $do-in$74
+ (loop $do-out$75 $do-in$76
(set_local $i63
(i32.add
(get_local $i63)
@@ -6179,7 +6181,7 @@
(get_local $i63)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$76
(i32.lt_u
(i32.add
(get_local $i63)
@@ -6556,7 +6558,7 @@
(get_local $i43)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$77 $while-in$78
(if
(i32.eq
(i32.and
@@ -6577,7 +6579,7 @@
(set_local $i36
(i32.const 307)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
(set_local $i43
@@ -6614,7 +6616,7 @@
(set_local $i36
(i32.const 304)
)
- (br $while-out$75)
+ (br $while-out$77)
)
(block
(set_local $i5
@@ -6628,7 +6630,7 @@
)
)
)
- (br $while-in$76)
+ (br $while-in$78)
)
(if
(i32.eq
@@ -6795,7 +6797,7 @@
(set_local $i5
(i32.const 0)
)
- (loop $do-out$77 $do-in$78
+ (loop $do-out$46 $do-in$47
(set_local $i62
(i32.add
(i32.const 216)
@@ -6828,7 +6830,7 @@
(i32.const 1)
)
)
- (br_if $do-in$78
+ (br_if $do-in$47
(i32.ne
(get_local $i5)
(i32.const 32)
@@ -9873,10 +9875,12 @@
)
)
)
- (call $_memcpy
- (get_local $i12)
- (get_local $i11)
- (get_local $i10)
+ (drop
+ (call $_memcpy
+ (get_local $i12)
+ (get_local $i11)
+ (get_local $i10)
+ )
)
(i32.store
(get_local $i5)
@@ -10498,22 +10502,24 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load
- (i32.add
- (get_local $i1)
- (i32.const 36)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load
+ (i32.add
+ (get_local $i1)
+ (i32.const 36)
+ )
)
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $i1)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $i1)
- (i32.const 0)
- (i32.const 0)
)
(i32.eq
(i32.load
@@ -11873,8 +11879,10 @@
)
)
(func $_main (result i32)
- (call $_puts
- (i32.const 672)
+ (drop
+ (call $_puts
+ (i32.const 672)
+ )
)
(return
(i32.const 0)
diff --git a/test/emcc_O2_hello_world.fromasm.no-opts b/test/emcc_O2_hello_world.fromasm.no-opts
index e75c5e4b2..2c1f718ff 100644
--- a/test/emcc_O2_hello_world.fromasm.no-opts
+++ b/test/emcc_O2_hello_world.fromasm.no-opts
@@ -228,7 +228,7 @@
(get_local $i10)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(i32.ne
(get_local $i7)
@@ -266,7 +266,7 @@
(get_local $i8)
(get_local $i11)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $_abort)
)
@@ -499,7 +499,7 @@
(get_local $i12)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(i32.ne
(get_local $i15)
@@ -542,7 +542,7 @@
(i32.const 184)
)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $_abort)
)
@@ -881,7 +881,7 @@
(set_local $i7
(get_local $i10)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $i10
(i32.load
(i32.add
@@ -914,7 +914,7 @@
(set_local $i22
(get_local $i7)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $i23
(get_local $i15)
@@ -962,7 +962,7 @@
(get_local $i7)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $i7
(i32.load
@@ -1005,7 +1005,7 @@
)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
(get_local $i12)
@@ -1047,7 +1047,7 @@
(set_local $i24
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $i25
@@ -1068,7 +1068,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $i14
(i32.add
(get_local $i25)
@@ -1089,7 +1089,7 @@
(set_local $i26
(get_local $i14)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $i14
@@ -1114,7 +1114,7 @@
(set_local $i28
(get_local $i26)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $i25
@@ -1125,7 +1125,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -1141,7 +1141,7 @@
(set_local $i24
(get_local $i27)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -1201,14 +1201,14 @@
(set_local $i24
(get_local $i12)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $_abort)
)
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $i5)
(block
@@ -1261,7 +1261,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1304,7 +1304,7 @@
(i32.eqz
(get_local $i24)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1335,7 +1335,7 @@
)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(get_local $i7)
(if
@@ -1359,7 +1359,7 @@
)
(get_local $i24)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -1397,7 +1397,7 @@
)
(get_local $i24)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1830,7 +1830,7 @@
(set_local $i8
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $i16
(i32.and
(i32.load
@@ -1953,7 +1953,7 @@
(set_local $i36
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $i12
@@ -1979,7 +1979,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -2180,7 +2180,7 @@
(get_local $i36)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $i36
(i32.const 0)
)
@@ -2241,7 +2241,7 @@
(set_local $i36
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $i38
@@ -2263,7 +2263,7 @@
(set_local $i44
(get_local $i8)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $i37
@@ -2277,7 +2277,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2339,7 +2339,7 @@
)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
(get_local $i7)
@@ -2381,7 +2381,7 @@
(set_local $i45
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $i46
@@ -2402,7 +2402,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $i2
(i32.add
(get_local $i46)
@@ -2423,7 +2423,7 @@
(set_local $i47
(get_local $i2)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $i2
@@ -2448,7 +2448,7 @@
(set_local $i49
(get_local $i47)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $i46
@@ -2459,7 +2459,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2475,7 +2475,7 @@
(set_local $i45
(get_local $i48)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -2535,14 +2535,14 @@
(set_local $i45
(get_local $i7)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $_abort)
)
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $i3)
(block
@@ -2595,7 +2595,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2638,7 +2638,7 @@
(i32.eqz
(get_local $i45)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2669,7 +2669,7 @@
)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(get_local $i15)
(if
@@ -2693,7 +2693,7 @@
)
(get_local $i45)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -2731,14 +2731,14 @@
)
(get_local $i45)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.ge_u
(get_local $i43)
@@ -2886,7 +2886,7 @@
)
(get_local $i15)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $i15
@@ -3083,7 +3083,7 @@
)
(get_local $i8)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $i4
@@ -3110,7 +3110,7 @@
(get_local $i3)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -3131,7 +3131,7 @@
(set_local $i36
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $i3
@@ -3168,7 +3168,7 @@
(set_local $i36
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $i4
@@ -3182,7 +3182,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -3223,7 +3223,7 @@
)
(get_local $i8)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(if
@@ -3292,7 +3292,7 @@
)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $_abort)
)
@@ -4092,8 +4092,10 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $i45)
+ (drop
+ (call_import $_sbrk
+ (get_local $i45)
+ )
)
(br $label$break$L279)
)
@@ -4268,7 +4270,7 @@
(set_local $i63
(i32.const 624)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$48 $do-in$49
(set_local $i43
(i32.load
(get_local $i63)
@@ -4309,7 +4311,7 @@
(set_local $i36
(i32.const 203)
)
- (br $do-out$46)
+ (br $do-out$48)
)
)
(set_local $i63
@@ -4320,7 +4322,7 @@
)
)
)
- (br_if $do-in$47
+ (br_if $do-in$49
(i32.ne
(get_local $i63)
(i32.const 0)
@@ -4479,7 +4481,7 @@
(set_local $i63
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$50 $while-in$51
(if
(i32.eq
(i32.load
@@ -4497,7 +4499,7 @@
(set_local $i36
(i32.const 211)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
(set_local $i63
@@ -4516,10 +4518,10 @@
(set_local $i71
(i32.const 624)
)
- (br $while-out$48)
+ (br $while-out$50)
)
)
- (br $while-in$49)
+ (br $while-in$51)
)
(if
(i32.eq
@@ -4639,7 +4641,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$52
(if
(i32.ne
(get_local $i43)
@@ -4687,7 +4689,7 @@
)
(get_local $i62)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i62
@@ -4742,7 +4744,7 @@
)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.eq
(get_local $i55)
@@ -4784,7 +4786,7 @@
(set_local $i72
(i32.const 0)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(block
(set_local $i73
@@ -4805,7 +4807,7 @@
)
)
)
- (loop $while-out$55 $while-in$56
+ (loop $while-out$61 $while-in$62
(set_local $i5
(i32.add
(get_local $i73)
@@ -4826,7 +4828,7 @@
(set_local $i74
(get_local $i5)
)
- (br $while-in$56)
+ (br $while-in$62)
)
)
(set_local $i5
@@ -4851,7 +4853,7 @@
(set_local $i76
(get_local $i74)
)
- (br $while-out$55)
+ (br $while-out$61)
)
(block
(set_local $i73
@@ -4862,7 +4864,7 @@
)
)
)
- (br $while-in$56)
+ (br $while-in$62)
)
(if
(i32.lt_u
@@ -4878,7 +4880,7 @@
(set_local $i72
(get_local $i75)
)
- (br $do-once$53)
+ (br $do-once$59)
)
)
)
@@ -4938,7 +4940,7 @@
(set_local $i72
(get_local $i55)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(call_import $_abort)
)
@@ -4968,7 +4970,7 @@
)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.ne
(get_local $i43)
@@ -5025,7 +5027,7 @@
)
(if
(get_local $i72)
- (br $do-once$57)
+ (br $do-once$63)
)
(i32.store
(i32.const 180)
@@ -5076,7 +5078,7 @@
(get_local $i5)
)
)
- (block $do-once$59
+ (block $do-once$65
(if
(get_local $i45)
(if
@@ -5100,7 +5102,7 @@
)
(get_local $i72)
)
- (br $do-once$59)
+ (br $do-once$65)
)
)
)
@@ -5175,7 +5177,7 @@
)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.ne
(get_local $i45)
@@ -5199,7 +5201,7 @@
)
(get_local $i43)
)
- (br $do-once$61)
+ (br $do-once$55)
)
(call_import $_abort)
)
@@ -5229,7 +5231,7 @@
(br $label$break$L331)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $i55)
@@ -5266,7 +5268,7 @@
(set_local $i77
(get_local $i5)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
(call_import $_abort)
@@ -5376,7 +5378,7 @@
(get_local $i56)
)
)
- (block $do-once$65
+ (block $do-once$67
(if
(i32.eqz
(i32.and
@@ -5428,7 +5430,7 @@
(set_local $i81
(get_local $i52)
)
- (br $do-once$65)
+ (br $do-once$67)
)
)
(call_import $_abort)
@@ -5460,7 +5462,7 @@
)
(get_local $i62)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i5
@@ -5469,7 +5471,7 @@
(i32.const 8)
)
)
- (block $do-once$67
+ (block $do-once$69
(if
(i32.eqz
(get_local $i5)
@@ -5487,7 +5489,7 @@
(set_local $i82
(i32.const 31)
)
- (br $do-once$67)
+ (br $do-once$69)
)
)
(set_local $i54
@@ -5664,7 +5666,7 @@
)
(get_local $i63)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(set_local $i50
@@ -5691,7 +5693,7 @@
(get_local $i5)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$71 $while-in$72
(if
(i32.eq
(i32.and
@@ -5712,7 +5714,7 @@
(set_local $i36
(i32.const 281)
)
- (br $while-out$69)
+ (br $while-out$71)
)
)
(set_local $i5
@@ -5749,7 +5751,7 @@
(set_local $i36
(i32.const 278)
)
- (br $while-out$69)
+ (br $while-out$71)
)
(block
(set_local $i50
@@ -5763,7 +5765,7 @@
)
)
)
- (br $while-in$70)
+ (br $while-in$72)
)
(if
(i32.eq
@@ -5804,7 +5806,7 @@
)
(get_local $i63)
)
- (br $do-once$50)
+ (br $do-once$52)
)
)
(if
@@ -5873,7 +5875,7 @@
)
(i32.const 0)
)
- (br $do-once$50)
+ (br $do-once$52)
)
(call_import $_abort)
)
@@ -5926,7 +5928,7 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$73 $while-in$74
(set_local $i63
(i32.load
(get_local $i71)
@@ -5961,7 +5963,7 @@
(set_local $i86
(get_local $i53)
)
- (br $while-out$71)
+ (br $while-out$73)
)
)
(set_local $i71
@@ -5972,7 +5974,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$74)
)
(set_local $i44
(i32.add
@@ -6169,7 +6171,7 @@
(i32.const 24)
)
)
- (loop $do-out$73 $do-in$74
+ (loop $do-out$75 $do-in$76
(set_local $i63
(i32.add
(get_local $i63)
@@ -6180,7 +6182,7 @@
(get_local $i63)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$76
(i32.lt_u
(i32.add
(get_local $i63)
@@ -6557,7 +6559,7 @@
(get_local $i43)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$77 $while-in$78
(if
(i32.eq
(i32.and
@@ -6578,7 +6580,7 @@
(set_local $i36
(i32.const 307)
)
- (br $while-out$75)
+ (br $while-out$77)
)
)
(set_local $i43
@@ -6615,7 +6617,7 @@
(set_local $i36
(i32.const 304)
)
- (br $while-out$75)
+ (br $while-out$77)
)
(block
(set_local $i5
@@ -6629,7 +6631,7 @@
)
)
)
- (br $while-in$76)
+ (br $while-in$78)
)
(if
(i32.eq
@@ -6796,7 +6798,7 @@
(set_local $i5
(i32.const 0)
)
- (loop $do-out$77 $do-in$78
+ (loop $do-out$46 $do-in$47
(set_local $i62
(i32.add
(i32.const 216)
@@ -6829,7 +6831,7 @@
(i32.const 1)
)
)
- (br_if $do-in$78
+ (br_if $do-in$47
(i32.ne
(get_local $i5)
(i32.const 32)
@@ -9874,10 +9876,12 @@
)
)
)
- (call $_memcpy
- (get_local $i12)
- (get_local $i11)
- (get_local $i10)
+ (drop
+ (call $_memcpy
+ (get_local $i12)
+ (get_local $i11)
+ (get_local $i10)
+ )
)
(i32.store
(get_local $i5)
@@ -10499,22 +10503,24 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load
- (i32.add
- (get_local $i1)
- (i32.const 36)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load
+ (i32.add
+ (get_local $i1)
+ (i32.const 36)
+ )
)
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $i1)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $i1)
- (i32.const 0)
- (i32.const 0)
)
(i32.eq
(i32.load
@@ -11874,8 +11880,10 @@
)
)
(func $_main (result i32)
- (call $_puts
- (i32.const 672)
+ (drop
+ (call $_puts
+ (i32.const 672)
+ )
)
(return
(i32.const 0)
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index 1ef3b9017..edcebd3ed 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -277,9 +277,11 @@
)
(call_import $abort)
)
- (call $_printf
- (i32.const 672)
- (get_local $0)
+ (drop
+ (call $_printf
+ (i32.const 672)
+ (get_local $0)
+ )
)
(i32.store
(i32.const 8)
@@ -291,9 +293,6 @@
(local $2 i32)
(local $3 i32)
(local $4 i32)
- (i32.load
- (i32.const 8)
- )
(f64.store
(i32.load
(i32.const 24)
@@ -302,14 +301,14 @@
)
(set_local $2
(call $_bitshift64Lshr
- (set_local $3
+ (tee_local $3
(i32.load
(i32.load
(i32.const 24)
)
)
)
- (set_local $4
+ (tee_local $4
(i32.load offset=4
(i32.load
(i32.const 24)
@@ -319,16 +318,13 @@
(i32.const 52)
)
)
- (i32.load
- (i32.const 168)
- )
(block $switch$0
(block $switch-default$3
(block $switch-case$2
(block $switch-case$1
(br_table $switch-case$1 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-case$2 $switch-default$3
(i32.sub
- (set_local $2
+ (tee_local $2
(i32.and
(get_local $2)
(i32.const 2047)
@@ -406,9 +402,6 @@
)
)
(func $_frexpl (param $0 f64) (param $1 i32) (result f64)
- (i32.load
- (i32.const 8)
- )
(call $_frexp
(get_local $0)
(get_local $1)
@@ -420,9 +413,6 @@
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $1
(i32.const 0)
)
@@ -449,7 +439,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -469,7 +459,6 @@
)
(br $while-out$0)
)
- (get_local $1)
)
(br $while-in$1)
)
@@ -539,7 +528,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const -1)
@@ -568,9 +557,6 @@
(get_local $5)
)
(func $___errno_location (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(i32.load
@@ -613,7 +599,7 @@
(call_import $abort)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -758,7 +744,7 @@
(call_import $abort)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -775,7 +761,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -818,9 +804,6 @@
(func $_fflush (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.eq
@@ -848,15 +831,14 @@
(i32.const 44)
)
(if
- (i32.eq
- (set_local $1
+ (i32.ne
+ (tee_local $1
(i32.load
(i32.const 40)
)
)
(i32.const 0)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -906,7 +888,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=56
(get_local $1)
)
@@ -1002,7 +984,7 @@
(call_import $abort)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $2)
)
(get_local $1)
@@ -1023,9 +1005,6 @@
(get_local $0)
)
(func $___lockfile (param $0 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(i32.const 0)
)
(func $___unlockfile (param $0 i32)
@@ -1082,15 +1061,15 @@
(get_local $8)
)
(i32.store
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $8)
(i32.const 32)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 28)
@@ -1101,10 +1080,10 @@
)
(i32.store offset=4
(get_local $4)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $0)
(i32.const 20)
@@ -1148,7 +1127,7 @@
(if
(i32.eq
(get_local $3)
- (set_local $5
+ (tee_local $5
(if
(i32.eq
(i32.load
@@ -1248,7 +1227,7 @@
(if
(i32.gt_u
(get_local $5)
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $4)
)
@@ -1257,7 +1236,7 @@
(block
(i32.store
(get_local $7)
- (set_local $3
+ (tee_local $3
(i32.load
(get_local $13)
)
@@ -1354,7 +1333,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $13)
)
@@ -1482,8 +1461,8 @@
)
(set_local $7
(i32.add
- (set_local $4
- (set_local $9
+ (tee_local $4
+ (tee_local $9
(i32.add
(get_local $3)
(i32.const 80)
@@ -1500,7 +1479,7 @@
)
(br_if $do-in$1
(i32.lt_s
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const 4)
@@ -1546,7 +1525,7 @@
)
(set_local $4
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -1580,7 +1559,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $0)
(i32.const 48)
@@ -1592,7 +1571,7 @@
(block
(set_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 44)
@@ -1605,7 +1584,7 @@
(get_local $6)
)
(i32.store
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $0)
(i32.const 28)
@@ -1614,7 +1593,7 @@
(get_local $6)
)
(i32.store
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $0)
(i32.const 20)
@@ -1627,7 +1606,7 @@
(i32.const 80)
)
(i32.store
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 16)
@@ -1654,19 +1633,21 @@
)
(get_local $1)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(set_local $1
(select
@@ -1715,7 +1696,7 @@
(i32.const -1)
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -1758,14 +1739,11 @@
(local $5 i32)
(local $6 i32)
(local $7 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 16)
@@ -1816,9 +1794,9 @@
(i32.lt_u
(i32.sub
(get_local $3)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -1852,122 +1830,124 @@
(br $label$break$L5)
)
)
- (call $_memcpy
- (block $label$break$L10
- (if
- (i32.gt_s
- (i32.shr_s
- (i32.shl
- (i32.load8_s offset=75
- (get_local $2)
+ (drop
+ (call $_memcpy
+ (block $label$break$L10
+ (if
+ (i32.gt_s
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s offset=75
+ (get_local $2)
+ )
+ (i32.const 24)
)
(i32.const 24)
)
- (i32.const 24)
- )
- (i32.const -1)
- )
- (block
- (set_local $3
- (get_local $1)
+ (i32.const -1)
)
- (loop $while-out$2 $while-in$3
- (if
- (i32.eq
- (get_local $3)
- (i32.const 0)
- )
- (block
- (set_local $2
+ (block
+ (set_local $3
+ (get_local $1)
+ )
+ (loop $while-out$2 $while-in$3
+ (if
+ (i32.eq
+ (get_local $3)
(i32.const 0)
)
- (br $label$break$L10
- (get_local $6)
+ (block
+ (set_local $2
+ (i32.const 0)
+ )
+ (br $label$break$L10
+ (get_local $6)
+ )
)
)
- )
- (if
- (i32.eq
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (i32.add
- (get_local $0)
- (set_local $4
- (i32.add
- (get_local $3)
- (i32.const -1)
+ (if
+ (i32.eq
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (i32.add
+ (get_local $0)
+ (tee_local $4
+ (i32.add
+ (get_local $3)
+ (i32.const -1)
+ )
)
)
)
+ (i32.const 24)
)
(i32.const 24)
)
- (i32.const 24)
+ (i32.const 10)
+ )
+ (br $while-out$2)
+ (set_local $3
+ (get_local $4)
)
- (i32.const 10)
- )
- (br $while-out$2)
- (set_local $3
- (get_local $4)
)
+ (br $while-in$3)
)
- (br $while-in$3)
- )
- (if
- (i32.lt_u
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $2)
+ (if
+ (i32.lt_u
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $2)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $2)
+ (get_local $0)
+ (get_local $3)
)
- (get_local $2)
- (get_local $0)
(get_local $3)
)
+ (block
+ (set_local $4
+ (get_local $3)
+ )
+ (br $label$break$L5)
+ )
+ )
+ (set_local $2
(get_local $3)
)
- (block
- (set_local $4
+ (set_local $1
+ (i32.sub
+ (get_local $1)
(get_local $3)
)
- (br $label$break$L5)
)
- )
- (set_local $2
- (get_local $3)
- )
- (set_local $1
- (i32.sub
- (get_local $1)
- (get_local $3)
+ (set_local $0
+ (i32.add
+ (get_local $0)
+ (get_local $3)
+ )
)
- )
- (set_local $0
- (i32.add
- (get_local $0)
- (get_local $3)
+ (i32.load
+ (get_local $5)
)
)
- (i32.load
- (get_local $5)
- )
- )
- (block
- (set_local $2
- (i32.const 0)
+ (block
+ (set_local $2
+ (i32.const 0)
+ )
+ (get_local $6)
)
- (get_local $6)
)
)
+ (get_local $0)
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(i32.store
(get_local $5)
@@ -1992,18 +1972,15 @@
(func $___towrite (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $1
(i32.and
(i32.or
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 74)
@@ -2029,7 +2006,7 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -2049,7 +2026,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -2083,9 +2060,6 @@
)
)
(func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.eq
@@ -2293,9 +2267,6 @@
)
)
(func $_wctomb (param $0 i32) (param $1 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(get_local $0)
@@ -2324,9 +2295,6 @@
(local $14 i32)
(local $15 i32)
(local $16 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $16
(i32.and
(get_local $1)
@@ -2336,7 +2304,7 @@
(block $label$break$L1
(if
(i32.and
- (set_local $6
+ (tee_local $6
(i32.ne
(get_local $2)
(i32.const 0)
@@ -2398,9 +2366,9 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const -1)
@@ -2411,7 +2379,7 @@
)
(i32.ne
(i32.and
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const 1)
@@ -2507,7 +2475,7 @@
)
(i32.shr_s
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.and
(get_local $1)
(i32.const 255)
@@ -2543,7 +2511,7 @@
(loop $while-out$5 $while-in$6
(set_local $1
(i32.add
- (set_local $6
+ (tee_local $6
(i32.xor
(i32.load
(get_local $5)
@@ -2578,7 +2546,7 @@
)
(if
(i32.gt_u
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const -4)
@@ -2691,7 +2659,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $10)
(i32.const -1)
@@ -2733,9 +2701,6 @@
)
)
(func $___syscall_ret (param $0 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.gt_u
(get_local $0)
@@ -2761,13 +2726,10 @@
(local $4 i32)
(local $5 i32)
(local $6 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.gt_u
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -2775,7 +2737,7 @@
)
)
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 28)
@@ -2784,19 +2746,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.eq
@@ -2825,9 +2789,9 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 4)
@@ -2835,9 +2799,9 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 8)
@@ -2892,9 +2856,6 @@
(get_local $1)
)
(func $_cleanup (param $0 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(i32.load offset=68
@@ -2917,8 +2878,8 @@
(local $11 i32)
(local $12 i32)
(local $13 i32)
- (local $14 i32)
- (local $15 f64)
+ (local $14 f64)
+ (local $15 i32)
(local $16 i32)
(local $17 i32)
(local $18 i32)
@@ -3034,9 +2995,9 @@
)
)
(set_local $71
- (set_local $28
+ (tee_local $28
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $31)
(i32.const 536)
@@ -3054,7 +3015,7 @@
)
(set_local $76
(i32.add
- (set_local $73
+ (tee_local $73
(i32.add
(get_local $31)
(i32.const 8)
@@ -3065,7 +3026,7 @@
)
(set_local $52
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $31)
(i32.const 576)
@@ -3082,11 +3043,11 @@
)
(set_local $77
(i32.sub
- (set_local $40
+ (tee_local $40
(get_local $52)
)
- (set_local $64
- (set_local $29
+ (tee_local $64
+ (tee_local $29
(i32.add
(get_local $31)
(i32.const 588)
@@ -3109,7 +3070,7 @@
)
(set_local $81
(i32.add
- (set_local $80
+ (tee_local $80
(i32.add
(get_local $31)
(i32.const 24)
@@ -3119,7 +3080,7 @@
)
)
(set_local $75
- (set_local $45
+ (tee_local $45
(i32.add
(get_local $29)
(i32.const 9)
@@ -3178,7 +3139,7 @@
(i32.eq
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
(get_local $20)
)
@@ -3243,7 +3204,7 @@
)
(set_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 1)
@@ -3297,7 +3258,7 @@
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $54)
(i32.const 2)
@@ -3375,13 +3336,13 @@
(set_local $7
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $41)
(i32.const 1)
@@ -3401,14 +3362,14 @@
(block
(set_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(select
(i32.add
(get_local $41)
(i32.const 3)
)
(get_local $5)
- (set_local $7
+ (tee_local $7
(i32.eq
(i32.shr_s
(i32.shl
@@ -3457,7 +3418,7 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.shr_s
(i32.shl
(get_local $1)
@@ -3512,12 +3473,12 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 1)
@@ -3567,12 +3528,12 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 1)
@@ -3612,33 +3573,28 @@
)
(i32.const 10)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (i32.add
- (get_local $3)
- (i32.shl
- (i32.add
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (get_local $6)
- )
- (i32.const 24)
+ (i32.add
+ (get_local $3)
+ (i32.shl
+ (i32.add
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (get_local $6)
)
(i32.const 24)
)
- (i32.const -48)
+ (i32.const 24)
)
- (i32.const 3)
+ (i32.const -48)
)
+ (i32.const 3)
)
)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(set_local $66
(i32.const 1)
)
@@ -3649,7 +3605,7 @@
)
)
(set_local $56
- (get_local $5)
+ (get_local $1)
)
)
(set_local $12
@@ -3700,7 +3656,7 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -3772,7 +3728,7 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
@@ -3805,12 +3761,12 @@
)
(if
(i32.ge_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -3885,9 +3841,9 @@
(i32.ne
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $9)
(i32.const 1)
@@ -3904,7 +3860,7 @@
(block
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
@@ -3947,12 +3903,12 @@
)
(if
(i32.ge_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -3983,12 +3939,12 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 2)
@@ -4028,35 +3984,30 @@
)
(i32.const 10)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (i32.add
- (get_local $3)
- (i32.shl
- (i32.add
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (get_local $6)
- )
- (i32.const 24)
+ (i32.add
+ (get_local $3)
+ (i32.shl
+ (i32.add
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (get_local $6)
)
(i32.const 24)
)
- (i32.const -48)
+ (i32.const 24)
)
- (i32.const 3)
+ (i32.const -48)
)
+ (i32.const 3)
)
)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(set_local $10
- (get_local $5)
+ (get_local $1)
)
(br $label$break$L46
(i32.add
@@ -4084,7 +4035,7 @@
(block
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -4132,7 +4083,7 @@
(loop $while-out$19 $while-in$20
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
@@ -4164,9 +4115,9 @@
(if
(i32.lt_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load8_s
(i32.add
(i32.add
@@ -4268,7 +4219,7 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $3)
(i32.shl
@@ -4285,7 +4236,7 @@
)
)
(i32.store
- (set_local $7
+ (tee_local $7
(get_local $19)
)
(get_local $5)
@@ -4355,7 +4306,7 @@
)
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.load8_s
@@ -4375,7 +4326,7 @@
(set_local $18
(select
(get_local $8)
- (set_local $7
+ (tee_local $7
(i32.and
(get_local $8)
(i32.const -65537)
@@ -4406,7 +4357,7 @@
(block $switch-case$34
(br_table $switch-case$49 $switch-default$127 $switch-case$47 $switch-default$127 $switch-case$49 $switch-case$49 $switch-case$49 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$48 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$49 $switch-default$127 $switch-case$44 $switch-case$41 $switch-case$49 $switch-case$49 $switch-case$49 $switch-default$127 $switch-case$41 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$45 $switch-case$34 $switch-case$40 $switch-case$35 $switch-default$127 $switch-default$127 $switch-case$46 $switch-default$127 $switch-case$43 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127
(i32.sub
- (set_local $26
+ (tee_local $26
(select
(i32.and
(get_local $1)
@@ -4470,7 +4421,7 @@
(br $label$continue$L1)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4559,7 +4510,7 @@
(br $label$continue$L1)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4642,9 +4593,9 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -4652,7 +4603,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $1)
)
@@ -4669,7 +4620,7 @@
)
(loop $while-out$38 $while-in$39
(i32.store8
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -1)
@@ -4689,7 +4640,7 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_bitshift64Lshr
(get_local $5)
(get_local $1)
@@ -4699,7 +4650,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 168)
)
@@ -4744,7 +4695,7 @@
(set_local $5
(i32.lt_s
(get_local $10)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.sub
(get_local $71)
@@ -4782,14 +4733,14 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
)
(if
(i32.lt_s
- (set_local $33
+ (tee_local $33
(i32.load offset=4
(get_local $1)
)
@@ -4811,7 +4762,7 @@
)
)
(i32.store
- (set_local $33
+ (tee_local $33
(get_local $19)
)
(get_local $1)
@@ -4853,7 +4804,7 @@
(i32.const 4091)
(i32.const 4093)
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.and
(get_local $18)
(i32.const 1)
@@ -4898,7 +4849,7 @@
)
(set_local $33
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -4919,20 +4870,15 @@
)
(br $switch$24)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (get_local $19)
- )
+ (get_local $19)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(i32.store8
(get_local $72)
(i32.and
- (get_local $5)
+ (get_local $1)
(i32.const 255)
)
)
@@ -4970,7 +4916,7 @@
)
(set_local $5
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4990,19 +4936,14 @@
)
(br $switch$24)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (get_local $19)
- )
+ (get_local $19)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(i32.store
(get_local $73)
- (get_local $5)
+ (get_local $1)
)
(i32.store
(get_local $76)
@@ -5049,7 +4990,7 @@
)
(br $switch$24)
)
- (set_local $15
+ (set_local $14
(f64.load
(get_local $19)
)
@@ -5062,12 +5003,7 @@
(i32.load
(i32.const 24)
)
- (get_local $15)
- )
- (i32.load
- (i32.load
- (i32.const 24)
- )
+ (get_local $14)
)
(set_local $51
(if
@@ -5083,9 +5019,9 @@
(set_local $39
(i32.const 4108)
)
- (set_local $15
+ (set_local $14
(f64.neg
- (get_local $15)
+ (get_local $14)
)
)
(i32.const 1)
@@ -5104,7 +5040,7 @@
(i32.const 4109)
(i32.const 4114)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $18)
(i32.const 1)
@@ -5129,12 +5065,7 @@
(i32.load
(i32.const 24)
)
- (get_local $15)
- )
- (i32.load
- (i32.load
- (i32.const 24)
- )
+ (get_local $14)
)
(set_local $20
(get_local $9)
@@ -5144,7 +5075,7 @@
(if
(i32.or
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.and
(i32.load offset=4
(i32.load
@@ -5166,12 +5097,12 @@
)
(block
(if
- (set_local $5
+ (tee_local $5
(f64.ne
- (set_local $15
+ (tee_local $14
(f64.mul
(call $_frexpl
- (get_local $15)
+ (get_local $14)
(get_local $25)
)
(f64.const 2)
@@ -5192,7 +5123,7 @@
)
(if
(i32.eq
- (set_local $14
+ (tee_local $15
(i32.or
(get_local $26)
(i32.const 32)
@@ -5209,7 +5140,7 @@
(i32.const 9)
)
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.and
(get_local $26)
(i32.const 32)
@@ -5225,7 +5156,7 @@
(i32.const 2)
)
)
- (set_local $15
+ (set_local $14
(if
(i32.or
(i32.gt_u
@@ -5233,7 +5164,7 @@
(i32.const 11)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 12)
(get_local $10)
@@ -5242,7 +5173,7 @@
(i32.const 0)
)
)
- (get_local $15)
+ (get_local $14)
(block
(set_local $30
(f64.const 8)
@@ -5256,7 +5187,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -5274,7 +5205,7 @@
(get_local $30)
(f64.sub
(f64.neg
- (get_local $15)
+ (get_local $14)
)
(get_local $30)
)
@@ -5282,7 +5213,7 @@
)
(f64.sub
(f64.add
- (get_local $15)
+ (get_local $14)
(get_local $30)
)
(get_local $30)
@@ -5305,7 +5236,7 @@
)
(set_local $5
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $25)
)
@@ -5317,7 +5248,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $8
+ (tee_local $8
(select
(i32.sub
(i32.const 0)
@@ -5336,10 +5267,10 @@
)
(i32.store8
(i32.add
- (set_local $5
+ (tee_local $5
(if
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_fmt_u
(get_local $8)
(get_local $5)
@@ -5375,7 +5306,7 @@
)
)
(i32.store8
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $5)
(i32.const -2)
@@ -5415,9 +5346,9 @@
(i32.and
(i32.load8_s
(i32.add
- (set_local $1
+ (tee_local $1
(call_import $f64-to-int
- (get_local $15)
+ (get_local $14)
)
)
(i32.const 4075)
@@ -5430,10 +5361,10 @@
(i32.const 255)
)
)
- (set_local $15
+ (set_local $14
(f64.mul
(f64.sub
- (get_local $15)
+ (get_local $14)
(f64.convert_s/i32
(get_local $1)
)
@@ -5446,7 +5377,7 @@
(if
(i32.eq
(i32.sub
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $11)
(i32.const 1)
@@ -5464,7 +5395,7 @@
(i32.and
(get_local $5)
(f64.eq
- (get_local $15)
+ (get_local $14)
(f64.const 0)
)
)
@@ -5485,7 +5416,7 @@
)
(if
(f64.eq
- (get_local $15)
+ (get_local $14)
(f64.const 0)
)
(block
@@ -5516,9 +5447,9 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $5
+ (tee_local $5
(i32.add
- (set_local $6
+ (tee_local $6
(select
(i32.sub
(i32.add
@@ -5597,7 +5528,7 @@
(get_local $6)
(i32.add
(get_local $1)
- (set_local $1
+ (tee_local $1
(i32.sub
(get_local $40)
(get_local $8)
@@ -5657,7 +5588,7 @@
)
)
(set_local $62
- (set_local $9
+ (tee_local $9
(select
(get_local $80)
(get_local $81)
@@ -5667,7 +5598,7 @@
(block
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $25)
@@ -5676,9 +5607,9 @@
)
)
)
- (set_local $15
+ (set_local $14
(f64.mul
- (get_local $15)
+ (get_local $14)
(f64.const 268435456)
)
)
@@ -5699,9 +5630,9 @@
(loop $while-out$66 $while-in$67
(i32.store
(get_local $7)
- (set_local $5
+ (tee_local $5
(call_import $f64-to-int
- (get_local $15)
+ (get_local $14)
)
)
)
@@ -5713,10 +5644,10 @@
)
(if
(f64.eq
- (set_local $15
+ (tee_local $14
(f64.mul
(f64.sub
- (get_local $15)
+ (get_local $14)
(f64.convert_u/i32
(get_local $5)
)
@@ -5737,7 +5668,7 @@
)
(if
(i32.gt_s
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $25)
)
@@ -5766,7 +5697,7 @@
(block $do-once$70
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $13)
(i32.const -4)
@@ -5785,7 +5716,7 @@
(loop $while-out$72 $while-in$73
(set_local $6
(call $___uremdi3
- (set_local $5
+ (tee_local $5
(call $_i64Add
(call $_bitshift64Shl
(i32.load
@@ -5801,7 +5732,7 @@
(i32.const 0)
)
)
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 168)
)
@@ -5810,9 +5741,6 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(i32.store
(get_local $10)
(get_local $6)
@@ -5825,12 +5753,9 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $10)
(i32.const -4)
@@ -5853,7 +5778,7 @@
)
)
(i32.store
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const -4)
@@ -5877,7 +5802,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $13)
(i32.const -4)
@@ -5895,7 +5820,7 @@
)
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.load
(get_local $25)
@@ -5949,7 +5874,7 @@
)
(set_local $10
(i32.eq
- (get_local $14)
+ (get_local $15)
(i32.const 102)
)
)
@@ -5959,7 +5884,7 @@
(loop $while-out$76 $while-in$77
(set_local $5
(i32.gt_s
- (set_local $6
+ (tee_local $6
(i32.sub
(i32.const 0)
(get_local $5)
@@ -6007,7 +5932,7 @@
(loop $while-out$80 $while-in$81
(set_local $6
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $17)
)
@@ -6033,7 +5958,7 @@
)
(if
(i32.ge_u
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $17)
(i32.const 4)
@@ -6102,7 +6027,7 @@
(i32.shr_s
(i32.sub
(get_local $23)
- (set_local $7
+ (tee_local $7
(select
(get_local $9)
(get_local $11)
@@ -6130,7 +6055,7 @@
)
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $25)
@@ -6190,7 +6115,7 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $7)
)
@@ -6217,7 +6142,7 @@
(if
(i32.lt_u
(get_local $5)
- (set_local $8
+ (tee_local $8
(i32.mul
(get_local $8)
(i32.const 10)
@@ -6242,7 +6167,7 @@
(set_local $7
(if
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.add
(i32.sub
(get_local $1)
@@ -6250,7 +6175,7 @@
(get_local $13)
(i32.const 0)
(i32.ne
- (get_local $14)
+ (get_local $15)
(i32.const 102)
)
)
@@ -6258,15 +6183,15 @@
(i32.shr_s
(i32.shl
(i32.and
- (set_local $70
+ (tee_local $70
(i32.ne
(get_local $1)
(i32.const 0)
)
)
- (set_local $8
+ (tee_local $8
(i32.eq
- (get_local $14)
+ (get_local $15)
(i32.const 103)
)
)
@@ -6302,7 +6227,7 @@
(i32.add
(i32.and
(call_import $i32s-div
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 9216)
@@ -6320,7 +6245,7 @@
)
(if
(i32.lt_s
- (set_local $11
+ (tee_local $11
(i32.add
(i32.and
(call_import $i32s-rem
@@ -6347,7 +6272,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $11)
(i32.const 1)
@@ -6373,7 +6298,7 @@
(if
(i32.eqz
(i32.and
- (set_local $11
+ (tee_local $11
(i32.eq
(i32.add
(get_local $6)
@@ -6383,10 +6308,10 @@
)
)
(i32.eq
- (set_local $14
+ (tee_local $15
(i32.and
(call_import $i32u-rem
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $6)
)
@@ -6401,7 +6326,7 @@
)
)
(block
- (set_local $15
+ (set_local $14
(select
(f64.const 9007199254740992)
(f64.const 9007199254740994)
@@ -6423,8 +6348,8 @@
(set_local $30
(if
(i32.lt_u
- (get_local $14)
- (set_local $10
+ (get_local $15)
+ (tee_local $10
(i32.and
(call_import $i32s-div
(get_local $17)
@@ -6441,21 +6366,21 @@
(i32.and
(get_local $11)
(i32.eq
- (get_local $14)
+ (get_local $15)
(get_local $10)
)
)
)
)
)
- (set_local $15
+ (set_local $14
(block $do-once$90
(if
(i32.eq
(get_local $51)
(i32.const 0)
)
- (get_local $15)
+ (get_local $14)
(block
(if
(i32.ne
@@ -6471,7 +6396,7 @@
(i32.const 45)
)
(br $do-once$90
- (get_local $15)
+ (get_local $14)
)
)
(set_local $30
@@ -6480,7 +6405,7 @@
)
)
(f64.neg
- (get_local $15)
+ (get_local $14)
)
)
)
@@ -6488,26 +6413,26 @@
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $5)
- (get_local $14)
+ (get_local $15)
)
)
)
(if
(f64.eq
(f64.add
- (get_local $15)
+ (get_local $14)
(get_local $30)
)
- (get_local $15)
+ (get_local $14)
)
(br $do-once$88)
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(get_local $17)
@@ -6527,7 +6452,7 @@
(set_local $7
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -4)
@@ -6537,7 +6462,7 @@
)
(block
(i32.store
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const -4)
@@ -6552,7 +6477,7 @@
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $6)
@@ -6585,7 +6510,7 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $7)
)
@@ -6612,7 +6537,7 @@
(if
(i32.lt_u
(get_local $5)
- (set_local $10
+ (tee_local $10
(i32.mul
(get_local $10)
(i32.const 10)
@@ -6634,7 +6559,7 @@
(set_local $6
(i32.gt_u
(get_local $27)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const 4)
@@ -6684,7 +6609,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const -4)
@@ -6717,7 +6642,7 @@
(if
(i32.and
(i32.gt_s
- (set_local $1
+ (tee_local $1
(i32.add
(i32.xor
(i32.and
@@ -6767,7 +6692,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $18)
(i32.const 8)
@@ -6776,7 +6701,7 @@
(i32.const 0)
)
(block
- (set_local $14
+ (set_local $15
(get_local $8)
)
(set_local $26
@@ -6793,7 +6718,7 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.add
(get_local $23)
@@ -6848,7 +6773,7 @@
(i32.and
(call_import $i32u-rem
(get_local $1)
- (set_local $5
+ (tee_local $5
(i32.mul
(get_local $5)
(i32.const 10)
@@ -6895,7 +6820,7 @@
(block
(set_local $1
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $1)
(get_local $6)
@@ -6907,7 +6832,7 @@
(set_local $5
(i32.lt_s
(get_local $8)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(get_local $5)
@@ -6916,7 +6841,7 @@
)
)
)
- (set_local $14
+ (set_local $15
(select
(get_local $8)
(get_local $1)
@@ -6931,7 +6856,7 @@
(block
(set_local $1
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.add
(get_local $1)
@@ -6946,7 +6871,7 @@
(set_local $5
(i32.lt_s
(get_local $8)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(get_local $5)
@@ -6955,7 +6880,7 @@
)
)
)
- (set_local $14
+ (set_local $15
(select
(get_local $8)
(get_local $1)
@@ -6970,7 +6895,7 @@
)
)
(block
- (set_local $14
+ (set_local $15
(get_local $1)
)
(i32.and
@@ -6984,9 +6909,9 @@
(set_local $17
(i32.and
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.or
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -6997,7 +6922,7 @@
)
(set_local $13
(if
- (set_local $10
+ (tee_local $10
(i32.eq
(i32.or
(get_local $26)
@@ -7024,7 +6949,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $6
+ (tee_local $6
(select
(get_local $27)
(get_local $13)
@@ -7045,7 +6970,7 @@
(i32.lt_s
(i32.sub
(get_local $40)
- (set_local $5
+ (tee_local $5
(call $_fmt_u
(get_local $6)
(get_local $5)
@@ -7057,7 +6982,7 @@
)
(loop $while-out$104 $while-in$105
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -1)
@@ -7066,19 +6991,17 @@
(i32.const 48)
)
(if
- (i32.lt_s
+ (i32.ge_s
(i32.sub
(get_local $40)
(get_local $5)
)
(i32.const 2)
)
- (get_local $5)
(br $while-out$104)
)
(br $while-in$105)
)
- (get_local $5)
)
(i32.store8
(i32.add
@@ -7100,7 +7023,7 @@
)
)
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -2)
@@ -7125,7 +7048,7 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(i32.add
@@ -7133,7 +7056,7 @@
(get_local $51)
(i32.const 1)
)
- (get_local $14)
+ (get_local $15)
)
(get_local $17)
)
@@ -7173,7 +7096,7 @@
(get_local $10)
(block
(set_local $7
- (set_local $8
+ (tee_local $8
(select
(get_local $9)
(get_local $7)
@@ -7184,7 +7107,7 @@
)
)
)
- (loop $while-out$108 $while-in$109
+ (loop $while-out$114 $while-in$115
(set_local $5
(call $_fmt_u
(i32.load
@@ -7194,7 +7117,7 @@
(get_local $45)
)
)
- (block $do-once$110
+ (block $do-once$116
(if
(i32.eq
(get_local $7)
@@ -7206,7 +7129,7 @@
(get_local $5)
(get_local $45)
)
- (br $do-once$110)
+ (br $do-once$116)
)
(i32.store8
(get_local $53)
@@ -7218,16 +7141,15 @@
)
(block
(if
- (i32.gt_u
+ (i32.le_u
(get_local $5)
(get_local $29)
)
- (get_local $5)
- (br $do-once$110)
+ (br $do-once$116)
)
- (loop $while-out$112 $while-in$113
+ (loop $while-out$118 $while-in$119
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -1)
@@ -7236,14 +7158,13 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $5)
(get_local $29)
)
- (get_local $5)
- (br $while-out$112)
+ (br $while-out$118)
)
- (br $while-in$113)
+ (br $while-in$119)
)
)
)
@@ -7269,7 +7190,7 @@
)
(if
(i32.gt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $7)
(i32.const 4)
@@ -7281,20 +7202,19 @@
(set_local $5
(get_local $7)
)
- (br $while-out$108)
+ (br $while-out$114)
)
- (get_local $7)
)
- (br $while-in$109)
+ (br $while-in$115)
)
- (block $do-once$114
+ (block $do-once$120
(if
(i32.ne
(get_local $1)
(i32.const 0)
)
(block
- (br_if $do-once$114
+ (br_if $do-once$120
(i32.ne
(i32.and
(i32.load
@@ -7316,7 +7236,7 @@
(if
(i32.and
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 0)
)
(i32.lt_u
@@ -7324,10 +7244,10 @@
(get_local $23)
)
)
- (loop $while-out$116 $while-in$117
+ (loop $while-out$122 $while-in$123
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(call $_fmt_u
(i32.load
(get_local $5)
@@ -7338,9 +7258,9 @@
)
(get_local $29)
)
- (loop $while-out$118 $while-in$119
+ (loop $while-out$124 $while-in$125
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -7349,16 +7269,14 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $1)
(get_local $29)
)
- (get_local $1)
- (br $while-out$118)
+ (br $while-out$124)
)
- (br $while-in$119)
+ (br $while-in$125)
)
- (get_local $1)
)
(if
(i32.eq
@@ -7374,9 +7292,9 @@
(get_local $1)
(select
(i32.const 9)
- (get_local $14)
+ (get_local $15)
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
)
@@ -7385,18 +7303,18 @@
)
(set_local $1
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const -9)
)
)
(if
(i32.and
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 4)
@@ -7405,25 +7323,24 @@
(get_local $23)
)
)
- (set_local $14
+ (set_local $15
(get_local $1)
)
(block
- (set_local $14
+ (set_local $15
(get_local $1)
)
- (br $while-out$116)
+ (br $while-out$122)
)
)
- (br $while-in$117)
+ (br $while-in$123)
)
- (get_local $14)
)
(call $_pad
(get_local $0)
(i32.const 48)
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
(i32.const 9)
@@ -7443,7 +7360,7 @@
)
(if
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const -1)
)
(block
@@ -7456,11 +7373,11 @@
(set_local $5
(get_local $7)
)
- (loop $while-out$120 $while-in$121
+ (loop $while-out$108 $while-in$109
(set_local $8
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(call $_fmt_u
(i32.load
(get_local $5)
@@ -7481,7 +7398,7 @@
(get_local $1)
)
)
- (block $do-once$122
+ (block $do-once$110
(if
(i32.eq
(get_local $5)
@@ -7514,11 +7431,11 @@
(i32.and
(get_local $9)
(i32.lt_s
- (get_local $14)
+ (get_local $15)
(i32.const 1)
)
)
- (br $do-once$122)
+ (br $do-once$110)
)
(if
(i32.ne
@@ -7530,7 +7447,7 @@
)
(i32.const 0)
)
- (br $do-once$122)
+ (br $do-once$110)
)
(call $___fwritex
(i32.const 4143)
@@ -7551,12 +7468,12 @@
(set_local $1
(get_local $8)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (loop $while-out$124 $while-in$125
+ (loop $while-out$112 $while-in$113
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -7565,14 +7482,13 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $1)
(get_local $29)
)
- (get_local $1)
- (br $while-out$124)
+ (br $while-out$112)
)
- (br $while-in$125)
+ (br $while-in$113)
)
)
)
@@ -7597,9 +7513,9 @@
(get_local $1)
(select
(get_local $8)
- (get_local $14)
+ (get_local $15)
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -7610,7 +7526,7 @@
(i32.eqz
(i32.and
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 4)
@@ -7619,9 +7535,9 @@
(get_local $11)
)
(i32.gt_s
- (set_local $14
+ (tee_local $15
(i32.sub
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -7629,18 +7545,17 @@
)
)
)
- (br $while-out$120)
+ (br $while-out$108)
)
- (br $while-in$121)
+ (br $while-in$109)
)
)
- (get_local $14)
)
(call $_pad
(get_local $0)
(i32.const 48)
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const 18)
)
(i32.const 18)
@@ -7692,7 +7607,7 @@
(select
(i32.const 4127)
(i32.const 4131)
- (set_local $8
+ (tee_local $8
(i32.ne
(i32.and
(get_local $26)
@@ -7707,11 +7622,11 @@
(select
(i32.const 0)
(get_local $51)
- (set_local $1
+ (tee_local $1
(i32.or
(f64.ne
- (get_local $15)
- (get_local $15)
+ (get_local $14)
+ (get_local $14)
)
(i32.const 0)
)
@@ -7733,7 +7648,7 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const 3)
@@ -7747,7 +7662,7 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -7757,10 +7672,12 @@
(i32.const 0)
)
(block
- (call $___fwritex
- (get_local $39)
- (get_local $6)
- (get_local $0)
+ (drop
+ (call $___fwritex
+ (get_local $39)
+ (get_local $6)
+ (get_local $0)
+ )
)
(i32.load
(get_local $0)
@@ -7841,9 +7758,9 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -7851,7 +7768,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $1)
)
@@ -7881,9 +7798,9 @@
(set_local $6
(get_local $28)
)
- (loop $while-out$129 $while-in$130
+ (loop $while-out$133 $while-in$134
(i32.store8
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -1)
@@ -7911,7 +7828,7 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_bitshift64Lshr
(get_local $5)
(get_local $1)
@@ -7921,7 +7838,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 168)
)
@@ -7929,9 +7846,9 @@
(i32.const 0)
)
)
- (br $while-out$129)
+ (br $while-out$133)
)
- (br $while-in$130)
+ (br $while-in$134)
)
(if
(i32.or
@@ -7945,7 +7862,7 @@
(i32.and
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -8046,7 +7963,7 @@
)
(set_local $5
(i32.eq
- (set_local $1
+ (tee_local $1
(call $_memchr
(get_local $50)
(i32.const 0)
@@ -8109,22 +8026,22 @@
(get_local $19)
)
)
- (loop $while-out$131 $while-in$132
+ (loop $while-out$129 $while-in$130
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $6)
)
)
(i32.const 0)
)
- (br $while-out$131)
+ (br $while-out$129)
)
(if
(i32.or
(i32.lt_s
- (set_local $5
+ (tee_local $5
(call $_wctomb
(get_local $63)
(get_local $1)
@@ -8140,7 +8057,7 @@
)
)
)
- (br $while-out$131)
+ (br $while-out$129)
)
(set_local $6
(i32.add
@@ -8151,7 +8068,7 @@
(if
(i32.gt_u
(get_local $69)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $5)
(get_local $7)
@@ -8165,10 +8082,10 @@
(set_local $7
(get_local $1)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
- (br $while-in$132)
+ (br $while-in$130)
)
(if
(i32.lt_s
@@ -8211,10 +8128,10 @@
(get_local $19)
)
)
- (loop $while-out$133 $while-in$134
+ (loop $while-out$131 $while-in$132
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $8)
)
@@ -8239,9 +8156,9 @@
)
(if
(i32.gt_s
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $5
+ (tee_local $5
(call $_wctomb
(get_local $63)
(get_local $1)
@@ -8293,10 +8210,10 @@
(set_local $12
(i32.const 98)
)
- (br $while-out$133)
+ (br $while-out$131)
)
)
- (br $while-in$134)
+ (br $while-in$132)
)
)
)
@@ -8373,11 +8290,11 @@
(get_local $32)
(i32.const 0)
)
- (set_local $1
+ (tee_local $1
(i32.or
(i32.ne
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -8396,7 +8313,7 @@
(set_local $7
(i32.gt_s
(get_local $32)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.xor
(i32.and
@@ -8459,7 +8376,7 @@
(set_local $1
(i32.lt_s
(get_local $42)
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $49)
(get_local $47)
@@ -8470,10 +8387,10 @@
(set_local $5
(i32.lt_s
(get_local $16)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $43)
- (set_local $6
+ (tee_local $6
(select
(get_local $7)
(get_local $42)
@@ -8487,7 +8404,7 @@
(call $_pad
(get_local $0)
(i32.const 32)
- (set_local $5
+ (tee_local $5
(select
(get_local $1)
(get_local $16)
@@ -8593,7 +8510,7 @@
(loop $while-out$136 $while-in$137
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(get_local $4)
@@ -8620,8 +8537,8 @@
(get_local $2)
)
(if
- (i32.lt_s
- (set_local $1
+ (i32.ge_s
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -8629,7 +8546,6 @@
)
(i32.const 10)
)
- (get_local $1)
(block
(set_local $24
(i32.const 1)
@@ -8710,9 +8626,6 @@
(local $3 i32)
(local $4 f64)
(local $5 i32)
- (i32.load
- (i32.const 8)
- )
(block $label$break$L1
(if
(i32.le_u
@@ -8739,7 +8652,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8767,7 +8680,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8808,7 +8721,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8840,8 +8753,8 @@
)
(set_local $5
(i32.load
- (set_local $3
- (set_local $1
+ (tee_local $3
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8879,7 +8792,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8903,7 +8816,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.and
@@ -8934,7 +8847,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8969,7 +8882,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8993,7 +8906,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.and
@@ -9024,7 +8937,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9059,7 +8972,7 @@
)
(set_local $4
(f64.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9087,7 +9000,7 @@
)
(set_local $4
(f64.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9118,9 +9031,6 @@
(func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $0
(if
(i32.or
@@ -9155,11 +9065,8 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(i32.store8
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const -1)
@@ -9229,18 +9136,17 @@
)
)
(if
- (i32.eq
+ (i32.ne
(get_local $3)
(i32.const 0)
)
- (get_local $0)
(block
(set_local $1
(get_local $0)
)
(loop $while-out$2 $while-in$3
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -9340,7 +9246,7 @@
(block
(set_local $4
(i32.gt_u
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $2)
(get_local $3)
@@ -9349,19 +9255,21 @@
(i32.const 256)
)
)
- (call $_memset
- (get_local $6)
- (get_local $1)
- (select
- (i32.const 256)
- (get_local $5)
- (get_local $4)
+ (drop
+ (call $_memset
+ (get_local $6)
+ (get_local $1)
+ (select
+ (i32.const 256)
+ (get_local $5)
+ (get_local $4)
+ )
)
)
(set_local $4
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -9390,14 +9298,16 @@
(set_local $4
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(if
(get_local $4)
(block
- (call $___fwritex
- (get_local $6)
- (i32.const 256)
- (get_local $0)
+ (drop
+ (call $___fwritex
+ (get_local $6)
+ (i32.const 256)
+ (get_local $0)
+ )
)
(i32.load
(get_local $0)
@@ -9413,7 +9323,7 @@
)
(if
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(i32.const -256)
@@ -9432,8 +9342,9 @@
)
)
(if
- (get_local $4)
- (get_local $1)
+ (i32.eqz
+ (get_local $4)
+ )
(br $do-once$0)
)
)
@@ -9505,9 +9416,6 @@
(local $44 i32)
(local $45 i32)
(local $46 i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.lt_u
@@ -9518,16 +9426,16 @@
(if
(i32.ne
(i32.and
- (set_local $25
+ (tee_local $25
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 176)
)
)
- (set_local $22
+ (tee_local $22
(i32.shr_u
- (set_local $6
+ (tee_local $6
(select
(i32.const 16)
(i32.and
@@ -9555,18 +9463,18 @@
(block
(set_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
- (set_local $9
+ (tee_local $9
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $8
+ (tee_local $8
(i32.add
(i32.xor
(i32.and
@@ -9625,7 +9533,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const 12)
@@ -9651,7 +9559,7 @@
(i32.store offset=4
(get_local $1)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.shl
(get_local $8)
(i32.const 3)
@@ -9663,7 +9571,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $1)
@@ -9688,7 +9596,7 @@
(if
(i32.gt_u
(get_local $6)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 184)
)
@@ -9704,7 +9612,7 @@
(set_local $1
(i32.sub
(i32.const 0)
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 2)
(get_local $22)
@@ -9715,7 +9623,7 @@
(set_local $1
(i32.sub
(i32.const 0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shl
(get_local $25)
@@ -9732,7 +9640,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.and
(get_local $0)
@@ -9748,27 +9656,27 @@
)
(set_local $0
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $9
+ (tee_local $9
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $8
+ (tee_local $8
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9781,10 +9689,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -9796,10 +9704,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9811,10 +9719,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9884,7 +9792,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 12)
@@ -9920,14 +9828,14 @@
)
)
(i32.store offset=4
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(get_local $6)
)
)
(i32.or
- (set_local $9
+ (tee_local $9
(i32.sub
(i32.shl
(get_local $8)
@@ -9962,7 +9870,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $7)
(i32.const 3)
@@ -9977,12 +9885,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -10011,9 +9919,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $8)
(i32.const 8)
@@ -10068,20 +9976,19 @@
)
)
(if
- (i32.eq
- (set_local $0
+ (i32.ne
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
(i32.const 0)
)
- (get_local $6)
(block
(set_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.and
(get_local $0)
@@ -10102,7 +10009,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $0
+ (tee_local $0
(i32.load offset=480
(i32.shl
(i32.add
@@ -10110,10 +10017,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10126,10 +10033,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -10141,10 +10048,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10156,10 +10063,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10192,10 +10099,10 @@
(set_local $8
(get_local $0)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=16
(get_local $4)
)
@@ -10204,7 +10111,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $4)
)
@@ -10218,7 +10125,7 @@
(set_local $10
(get_local $8)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $1
(get_local $0)
@@ -10230,7 +10137,7 @@
)
(set_local $0
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.and
(i32.load offset=4
@@ -10261,12 +10168,12 @@
(get_local $0)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $10)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -10277,7 +10184,7 @@
(if
(i32.ge_u
(get_local $10)
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $10)
(get_local $6)
@@ -10291,10 +10198,10 @@
(get_local $10)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $10)
)
@@ -10304,9 +10211,9 @@
(block
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $10)
(i32.const 20)
@@ -10318,9 +10225,9 @@
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $10)
(i32.const 16)
@@ -10334,7 +10241,7 @@
(set_local $15
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(set_local $4
(get_local $2)
@@ -10344,12 +10251,12 @@
(get_local $2)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(i32.const 20)
@@ -10366,14 +10273,14 @@
(set_local $8
(get_local $5)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(i32.const 16)
@@ -10383,7 +10290,7 @@
)
(i32.const 0)
)
- (br $while-out$10)
+ (br $while-out$27)
(block
(set_local $4
(get_local $2)
@@ -10393,7 +10300,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -10415,7 +10322,7 @@
(block
(if
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $10)
)
@@ -10427,7 +10334,7 @@
(if
(i32.ne
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 12)
@@ -10441,7 +10348,7 @@
(if
(i32.eq
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 8)
@@ -10468,7 +10375,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(i32.ne
(get_local $1)
@@ -10479,11 +10386,11 @@
(i32.eq
(get_local $10)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
(get_local $10)
)
@@ -10520,7 +10427,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -10537,7 +10444,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 16)
@@ -10555,7 +10462,7 @@
(get_local $15)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eq
(get_local $15)
(i32.const 0)
@@ -10566,7 +10473,7 @@
(if
(i32.lt_u
(get_local $15)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -10580,7 +10487,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $10)
)
@@ -10607,7 +10514,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $10)
)
@@ -10646,7 +10553,7 @@
(i32.store offset=4
(get_local $10)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $7)
(get_local $6)
@@ -10658,7 +10565,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $10)
@@ -10700,7 +10607,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 184)
)
@@ -10718,7 +10625,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $0)
(i32.const 3)
@@ -10733,12 +10640,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -10767,9 +10674,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 8)
@@ -10829,7 +10736,6 @@
)
)
)
- (get_local $6)
)
)
(if
@@ -10843,7 +10749,7 @@
(block
(set_local $5
(i32.and
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 11)
@@ -10854,7 +10760,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
@@ -10874,13 +10780,13 @@
(block $label$break$L123
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=480
(i32.shl
- (set_local $12
+ (tee_local $12
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -10898,20 +10804,20 @@
(block
(set_local $7
(i32.shl
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $12
+ (tee_local $12
(i32.shl
(get_local $3)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -10934,11 +10840,11 @@
)
(get_local $3)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $12)
(get_local $7)
@@ -11034,12 +10940,12 @@
(set_local $36
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.sub
- (set_local $3
+ (tee_local $3
(i32.and
(i32.load offset=4
(get_local $23)
@@ -11082,7 +10988,7 @@
)
(set_local $7
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=20
(get_local $23)
)
@@ -11098,7 +11004,7 @@
(get_local $7)
(i32.eq
(get_local $3)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.add
(i32.add
@@ -11124,7 +11030,7 @@
(get_local $11)
(i32.xor
(i32.and
- (set_local $7
+ (tee_local $7
(i32.eq
(get_local $3)
(i32.const 0)
@@ -11151,7 +11057,7 @@
(set_local $11
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $7
@@ -11162,7 +11068,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -11174,7 +11080,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -11190,7 +11096,7 @@
(set_local $7
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.shl
(i32.const 2)
(get_local $12)
@@ -11200,7 +11106,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
(get_local $0)
(i32.or
@@ -11221,7 +11127,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.add
(i32.and
(get_local $0)
@@ -11245,10 +11151,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11261,10 +11167,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $7)
(get_local $3)
@@ -11276,10 +11182,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11291,10 +11197,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11349,13 +11255,13 @@
(get_local $11)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $11
(i32.const 0)
)
(set_local $0
(i32.lt_u
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.and
(i32.load offset=4
@@ -11385,7 +11291,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=16
(get_local $24)
)
@@ -11402,12 +11308,12 @@
(set_local $29
(get_local $3)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $24)
)
@@ -11418,7 +11324,7 @@
(set_local $13
(get_local $3)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $26
@@ -11432,7 +11338,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -11457,7 +11363,7 @@
(if
(i32.lt_u
(get_local $13)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -11468,7 +11374,7 @@
(if
(i32.ge_u
(get_local $13)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $13)
(get_local $5)
@@ -11482,10 +11388,10 @@
(get_local $13)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $13)
)
@@ -11495,9 +11401,9 @@
(block
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $13)
(i32.const 20)
@@ -11509,9 +11415,9 @@
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $13)
(i32.const 16)
@@ -11525,7 +11431,7 @@
(set_local $6
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(set_local $8
(get_local $2)
@@ -11535,12 +11441,12 @@
(get_local $2)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 20)
@@ -11557,14 +11463,14 @@
(set_local $9
(get_local $7)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 16)
@@ -11574,7 +11480,7 @@
)
(i32.const 0)
)
- (br $while-out$23)
+ (br $while-out$9)
(block
(set_local $8
(get_local $2)
@@ -11584,7 +11490,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -11606,7 +11512,7 @@
(block
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load offset=8
(get_local $13)
)
@@ -11618,7 +11524,7 @@
(if
(i32.ne
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 12)
@@ -11632,7 +11538,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 8)
@@ -11659,7 +11565,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(i32.ne
(get_local $1)
@@ -11670,11 +11576,11 @@
(i32.eq
(get_local $13)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
(get_local $13)
)
@@ -11711,7 +11617,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -11728,7 +11634,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 16)
@@ -11746,7 +11652,7 @@
(get_local $6)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eq
(get_local $6)
(i32.const 0)
@@ -11757,7 +11663,7 @@
(if
(i32.lt_u
(get_local $6)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -11771,7 +11677,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $13)
)
@@ -11798,7 +11704,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $13)
)
@@ -11828,7 +11734,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $17)
@@ -11838,7 +11744,7 @@
(i32.store offset=4
(get_local $13)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $17)
(get_local $5)
@@ -11850,7 +11756,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $13)
@@ -11917,12 +11823,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -11951,9 +11857,9 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -11992,17 +11898,17 @@
(get_local $3)
(get_local $2)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $17)
(i32.const 8)
@@ -12020,20 +11926,20 @@
(block
(set_local $1
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -12056,11 +11962,11 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $2)
(get_local $1)
@@ -12113,7 +12019,7 @@
(get_local $1)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const 16)
@@ -12128,12 +12034,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $1)
@@ -12166,7 +12072,7 @@
(get_local $3)
(get_local $3)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $1
@@ -12193,7 +12099,7 @@
(get_local $2)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -12211,7 +12117,7 @@
(set_local $11
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $4
@@ -12222,9 +12128,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $2)
@@ -12253,7 +12159,7 @@
(set_local $11
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $1
@@ -12264,7 +12170,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -12306,9 +12212,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $22)
(i32.const 8)
@@ -12316,7 +12222,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -12376,7 +12282,7 @@
)
(if
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 184)
)
@@ -12391,7 +12297,7 @@
)
(if
(i32.gt_u
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -12402,7 +12308,7 @@
(block
(i32.store
(i32.const 196)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(get_local $6)
@@ -12454,7 +12360,7 @@
(set_local $2
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $1)
@@ -12483,7 +12389,7 @@
)
(if
(i32.gt_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 188)
)
@@ -12493,7 +12399,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -12502,9 +12408,9 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -12546,7 +12452,7 @@
(i32.eq
(i32.and
(i32.add
- (set_local $0
+ (tee_local $0
(call_import $_sysconf
(i32.const 30)
)
@@ -12606,16 +12512,16 @@
)
(if
(i32.le_u
- (set_local $10
+ (tee_local $10
(i32.and
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 656)
)
)
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $6)
(i32.const 47)
@@ -12623,7 +12529,7 @@
)
)
)
- (set_local $12
+ (tee_local $12
(i32.sub
(i32.const 0)
(get_local $0)
@@ -12639,7 +12545,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 616)
)
@@ -12649,9 +12555,9 @@
(if
(i32.or
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 608)
)
@@ -12673,7 +12579,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(block $label$break$L257
(if
(i32.eq
@@ -12689,7 +12595,7 @@
(block $label$break$L259
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -12706,7 +12612,7 @@
(loop $while-out$37 $while-in$38
(if
(i32.le_u
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $16)
)
@@ -12718,7 +12624,7 @@
(i32.add
(get_local $4)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $16)
(i32.const 4)
@@ -12741,7 +12647,7 @@
)
(if
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $16)
)
@@ -12762,7 +12668,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.and
(i32.sub
(get_local $7)
@@ -12777,7 +12683,7 @@
)
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(call_import $_sbrk
(get_local $0)
)
@@ -12812,7 +12718,7 @@
(set_local $30
(get_local $3)
)
- (set_local $20
+ (set_local $21
(get_local $0)
)
(set_local $11
@@ -12832,7 +12738,7 @@
)
(if
(i32.ne
- (set_local $7
+ (tee_local $7
(call_import $_sbrk
(i32.const 0)
)
@@ -12842,18 +12748,18 @@
(block
(set_local $4
(i32.add
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 608)
)
)
- (set_local $12
+ (tee_local $12
(if
(i32.eq
(i32.and
- (set_local $12
+ (tee_local $12
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 652)
)
@@ -12861,7 +12767,7 @@
(i32.const -1)
)
)
- (set_local $0
+ (tee_local $0
(get_local $7)
)
)
@@ -12902,7 +12808,7 @@
(block
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 616)
)
@@ -12924,7 +12830,7 @@
)
(if
(i32.eq
- (set_local $30
+ (tee_local $30
(call_import $_sbrk
(get_local $12)
)
@@ -12943,7 +12849,7 @@
)
)
(block
- (set_local $20
+ (set_local $21
(get_local $12)
)
(set_local $11
@@ -12967,18 +12873,18 @@
(set_local $4
(i32.sub
(i32.const 0)
- (get_local $20)
+ (get_local $21)
)
)
(if
(i32.and
(i32.gt_u
(get_local $5)
- (get_local $20)
+ (get_local $21)
)
(i32.and
(i32.lt_u
- (get_local $20)
+ (get_local $21)
(i32.const 2147483647)
)
(i32.ne
@@ -12989,14 +12895,14 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.and
(i32.add
(i32.sub
(get_local $15)
- (get_local $20)
+ (get_local $21)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 656)
)
@@ -13018,21 +12924,21 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $4)
+ (drop
+ (call_import $_sbrk
+ (get_local $4)
+ )
)
(br $label$break$L279)
)
- (set_local $20
+ (set_local $21
(i32.add
(get_local $0)
- (get_local $20)
+ (get_local $21)
)
)
)
- (get_local $20)
)
- (get_local $20)
)
(if
(i32.ne
@@ -13044,7 +12950,7 @@
(get_local $30)
)
(set_local $19
- (get_local $20)
+ (get_local $21)
)
(br $label$break$L257
(i32.const 193)
@@ -13080,7 +12986,7 @@
(set_local $3
(i32.and
(i32.ne
- (set_local $0
+ (tee_local $0
(call_import $_sbrk
(get_local $10)
)
@@ -13088,7 +12994,7 @@
(i32.const -1)
)
(i32.ne
- (set_local $4
+ (tee_local $4
(call_import $_sbrk
(i32.const 0)
)
@@ -13107,7 +13013,7 @@
)
(if
(i32.gt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(get_local $4)
(get_local $0)
@@ -13142,7 +13048,7 @@
(block
(i32.store
(i32.const 608)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 608)
@@ -13166,7 +13072,7 @@
(block $do-once$44
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -13177,7 +13083,7 @@
(if
(i32.or
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -13219,9 +13125,9 @@
(set_local $1
(i32.const 0)
)
- (loop $while-out$46 $while-in$47
+ (loop $while-out$77 $while-in$78
(i32.store offset=12
- (set_local $0
+ (tee_local $0
(i32.add
(i32.const 216)
(i32.shl
@@ -13241,7 +13147,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -13249,15 +13155,14 @@
)
(i32.const 32)
)
- (br $while-out$46)
- (get_local $1)
+ (br $while-out$77)
)
- (br $while-in$47)
+ (br $while-in$78)
)
(set_local $1
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $14)
(i32.const 8)
@@ -13270,10 +13175,10 @@
)
(i32.store
(i32.const 200)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $14)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
@@ -13291,7 +13196,7 @@
)
(i32.store
(i32.const 188)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.add
(get_local $19)
@@ -13326,19 +13231,19 @@
(set_local $7
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(get_local $14)
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $7)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 4)
@@ -13364,24 +13269,24 @@
(set_local $11
(i32.const 203)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(if
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $7)
)
)
(i32.const 0)
)
- (br $while-out$48)
+ (br $while-out$46)
(set_local $7
(get_local $4)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -13420,7 +13325,7 @@
(set_local $2
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 8)
@@ -13434,7 +13339,7 @@
(set_local $0
(i32.add
(get_local $0)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
@@ -13497,7 +13402,7 @@
(if
(i32.lt_u
(get_local $14)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -13522,7 +13427,7 @@
(set_local $1
(i32.const 624)
)
- (loop $while-out$50 $while-in$51
+ (loop $while-out$48 $while-in$49
(if
(i32.eq
(i32.load
@@ -13540,12 +13445,12 @@
(set_local $11
(i32.const 211)
)
- (br $while-out$50)
+ (br $while-out$48)
)
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -13556,11 +13461,10 @@
(set_local $27
(i32.const 624)
)
- (br $while-out$50)
+ (br $while-out$48)
)
- (get_local $1)
)
- (br $while-in$51)
+ (br $while-in$49)
)
(if
(i32.eq
@@ -13585,7 +13489,7 @@
(set_local $1
(i32.add
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $38)
(i32.const 4)
@@ -13602,7 +13506,7 @@
(set_local $9
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
(i32.const 8)
@@ -13616,7 +13520,7 @@
(set_local $5
(i32.eq
(i32.and
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $3)
(i32.const 8)
@@ -13629,7 +13533,7 @@
)
(set_local $1
(i32.sub
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(select
@@ -13645,7 +13549,7 @@
)
)
)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $14)
(select
@@ -13682,7 +13586,7 @@
(i32.const 3)
)
)
- (block $do-once$52
+ (block $do-once$50
(if
(i32.eq
(get_local $3)
@@ -13691,7 +13595,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 188)
@@ -13723,7 +13627,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 184)
@@ -13750,18 +13654,18 @@
)
(get_local $0)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $0
(i32.and
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $3)
)
@@ -13795,15 +13699,15 @@
(get_local $3)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $3)
)
)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 216)
(i32.shl
@@ -13824,7 +13728,7 @@
)
(call_import $_abort)
)
- (br_if $do-once$55
+ (br_if $do-once$61
(i32.eq
(i32.load offset=12
(get_local $0)
@@ -13860,7 +13764,7 @@
(br $label$break$L331)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.eq
(get_local $1)
@@ -13883,7 +13787,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 8)
@@ -13896,7 +13800,7 @@
(set_local $39
(get_local $2)
)
- (br $do-once$57)
+ (br $do-once$63)
)
)
(call_import $_abort)
@@ -13918,10 +13822,10 @@
(get_local $3)
)
)
- (block $do-once$59
+ (block $do-once$53
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $3)
)
@@ -13931,11 +13835,11 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $3)
(i32.const 16)
@@ -13950,9 +13854,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
(i32.const 0)
@@ -13961,14 +13865,14 @@
(set_local $18
(i32.const 0)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(block
(set_local $2
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
)
)
@@ -13976,12 +13880,12 @@
(get_local $1)
)
)
- (loop $while-out$61 $while-in$62
+ (loop $while-out$55 $while-in$56
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $2)
(i32.const 20)
@@ -13996,16 +13900,16 @@
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
- (br $while-in$62)
+ (br $while-in$56)
)
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $2)
(i32.const 16)
@@ -14015,17 +13919,17 @@
)
(i32.const 0)
)
- (br $while-out$61)
+ (br $while-out$55)
(block
(set_local $2
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
)
)
- (br $while-in$62)
+ (br $while-in$56)
)
(if
(i32.lt_u
@@ -14047,7 +13951,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $3)
)
@@ -14059,7 +13963,7 @@
(if
(i32.ne
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const 12)
@@ -14073,7 +13977,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $1)
(i32.const 8)
@@ -14106,16 +14010,16 @@
(i32.const 0)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $3)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $3)
)
@@ -14131,7 +14035,7 @@
(get_local $2)
(get_local $18)
)
- (br_if $do-once$63
+ (br_if $do-once$57
(i32.ne
(get_local $18)
(i32.const 0)
@@ -14167,7 +14071,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -14197,7 +14101,7 @@
(if
(i32.lt_u
(get_local $18)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -14211,9 +14115,9 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $3)
(i32.const 16)
@@ -14243,7 +14147,7 @@
)
(br_if $label$break$L331
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -14340,16 +14244,16 @@
)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -14379,9 +14283,9 @@
(block
(if
(i32.ge_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -14400,7 +14304,7 @@
(set_local $33
(get_local $1)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(call_import $_abort)
@@ -14423,18 +14327,18 @@
(get_local $5)
(get_local $2)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
- (block $do-once$69
+ (tee_local $1
+ (block $do-once$67
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $4)
(i32.const 8)
@@ -14444,7 +14348,7 @@
)
(i32.const 0)
(block
- (br_if $do-once$69
+ (br_if $do-once$67
(i32.const 31)
(i32.gt_u
(get_local $4)
@@ -14453,20 +14357,20 @@
)
(set_local $1
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -14489,11 +14393,11 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $2)
(get_local $1)
@@ -14546,7 +14450,7 @@
(get_local $1)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 16)
@@ -14561,12 +14465,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $1)
@@ -14599,7 +14503,7 @@
(get_local $5)
(get_local $5)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $1
@@ -14626,7 +14530,7 @@
(get_local $2)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(if
(i32.eq
(i32.and
@@ -14644,7 +14548,7 @@
(set_local $11
(i32.const 281)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
(set_local $8
@@ -14655,9 +14559,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $2)
@@ -14686,7 +14590,7 @@
(set_local $11
(i32.const 278)
)
- (br $while-out$71)
+ (br $while-out$69)
)
(block
(set_local $1
@@ -14697,7 +14601,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(if
(i32.eq
@@ -14739,9 +14643,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $34)
(i32.const 8)
@@ -14749,7 +14653,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -14801,10 +14705,10 @@
)
)
)
- (loop $while-out$73 $while-in$74
+ (loop $while-out$71 $while-in$72
(if
(i32.le_u
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $27)
)
@@ -14813,7 +14717,7 @@
)
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.load offset=4
@@ -14827,7 +14731,7 @@
(set_local $2
(get_local $1)
)
- (br $while-out$73)
+ (br $while-out$71)
)
)
)
@@ -14836,14 +14740,14 @@
(get_local $27)
)
)
- (br $while-in$74)
+ (br $while-in$72)
)
(set_local $8
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const -47)
@@ -14859,7 +14763,7 @@
)
(set_local $4
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(select
@@ -14875,7 +14779,7 @@
)
)
)
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $0)
(i32.const 16)
@@ -14885,7 +14789,7 @@
)
(set_local $4
(i32.add
- (set_local $5
+ (tee_local $5
(select
(get_local $0)
(get_local $1)
@@ -14898,7 +14802,7 @@
(set_local $3
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
(i32.const 8)
@@ -14911,10 +14815,10 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
- (set_local $3
+ (tee_local $3
(select
(i32.const 0)
(i32.and
@@ -14932,7 +14836,7 @@
)
(i32.store
(i32.const 188)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.add
(get_local $19)
@@ -14963,7 +14867,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $5)
(i32.const 4)
@@ -15017,9 +14921,9 @@
(i32.const 24)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 4)
@@ -15028,17 +14932,16 @@
(i32.const 7)
)
(if
- (i32.lt_u
+ (i32.ge_u
(i32.add
(get_local $1)
(i32.const 4)
)
(get_local $2)
)
- (get_local $1)
- (br $while-out$75)
+ (br $while-out$73)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.ne
@@ -15058,7 +14961,7 @@
(i32.store offset=4
(get_local $0)
(i32.or
- (set_local $3
+ (tee_local $3
(i32.sub
(get_local $5)
(get_local $0)
@@ -15098,12 +15001,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -15126,15 +15029,15 @@
(i32.const 8)
)
)
- (set_local $21
+ (set_local $20
(get_local $4)
)
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(i32.const 8)
@@ -15151,7 +15054,7 @@
(set_local $9
(get_local $1)
)
- (set_local $21
+ (set_local $20
(get_local $2)
)
)
@@ -15162,12 +15065,12 @@
(get_local $0)
)
(i32.store offset=12
- (get_local $21)
+ (get_local $20)
(get_local $0)
)
(i32.store offset=8
(get_local $0)
- (get_local $21)
+ (get_local $20)
)
(i32.store offset=12
(get_local $0)
@@ -15180,10 +15083,10 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $2
+ (tee_local $2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -15201,20 +15104,20 @@
(block
(set_local $2
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $1)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
@@ -15237,11 +15140,11 @@
)
(get_local $1)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $4)
(get_local $2)
@@ -15304,12 +15207,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $2)
@@ -15369,7 +15272,7 @@
(get_local $4)
)
)
- (loop $while-out$77 $while-in$78
+ (loop $while-out$75 $while-in$76
(if
(i32.eq
(i32.and
@@ -15387,7 +15290,7 @@
(set_local $11
(i32.const 307)
)
- (br $while-out$77)
+ (br $while-out$75)
)
)
(set_local $8
@@ -15398,9 +15301,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $4)
@@ -15429,7 +15332,7 @@
(set_local $11
(i32.const 304)
)
- (br $while-out$77)
+ (br $while-out$75)
)
(block
(set_local $2
@@ -15440,7 +15343,7 @@
)
)
)
- (br $while-in$78)
+ (br $while-in$76)
)
(if
(i32.eq
@@ -15482,9 +15385,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $35)
(i32.const 8)
@@ -15492,7 +15395,7 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 192)
)
@@ -15536,7 +15439,7 @@
)
(if
(i32.gt_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 188)
)
@@ -15546,7 +15449,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -15555,9 +15458,9 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -15615,9 +15518,6 @@
(local $16 i32)
(local $17 i32)
(local $18 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(get_local $0)
@@ -15627,13 +15527,13 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -15643,9 +15543,9 @@
)
(if
(i32.eq
- (set_local $8
+ (tee_local $8
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(get_local $0)
@@ -15663,7 +15563,7 @@
(set_local $9
(i32.add
(get_local $2)
- (set_local $7
+ (tee_local $7
(i32.and
(get_local $0)
(i32.const -8)
@@ -15701,7 +15601,7 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $4
(i32.add
(get_local $2)
(i32.sub
@@ -15716,7 +15616,7 @@
)
(if
(i32.eq
- (get_local $6)
+ (get_local $4)
(i32.load
(i32.const 196)
)
@@ -15725,9 +15625,9 @@
(if
(i32.ne
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 4)
@@ -15741,7 +15641,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15761,7 +15661,7 @@
)
)
(i32.store offset=4
- (get_local $6)
+ (get_local $4)
(i32.or
(get_local $12)
(i32.const 1)
@@ -15769,7 +15669,7 @@
)
(i32.store
(i32.add
- (get_local $6)
+ (get_local $4)
(get_local $12)
)
(get_local $12)
@@ -15791,17 +15691,17 @@
(block
(set_local $2
(i32.load offset=12
- (get_local $6)
+ (get_local $4)
)
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
- (get_local $6)
+ (get_local $4)
)
)
- (set_local $8
+ (tee_local $8
(i32.add
(i32.const 216)
(i32.shl
@@ -15827,7 +15727,7 @@
(i32.load offset=12
(get_local $0)
)
- (get_local $6)
+ (get_local $4)
)
(call_import $_abort)
)
@@ -15855,7 +15755,7 @@
)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15885,14 +15785,14 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 8)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(set_local $13
(get_local $1)
@@ -15910,7 +15810,7 @@
(get_local $0)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15920,29 +15820,29 @@
)
(set_local $8
(i32.load offset=24
- (get_local $6)
+ (get_local $4)
)
)
(block $do-once$2
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=12
- (get_local $6)
+ (get_local $4)
)
)
- (get_local $6)
+ (get_local $4)
)
(block
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $13
+ (tee_local $13
(i32.add
- (get_local $6)
+ (get_local $4)
(i32.const 16)
)
)
@@ -15955,7 +15855,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $13)
)
@@ -15963,7 +15863,7 @@
(i32.const 0)
)
(block
- (set_local $4
+ (set_local $5
(i32.const 0)
)
(br $do-once$2)
@@ -15984,9 +15884,9 @@
(loop $while-out$4 $while-in$5
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $2)
(i32.const 20)
@@ -16008,9 +15908,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $2)
(i32.const 16)
@@ -16043,7 +15943,7 @@
(get_local $7)
(i32.const 0)
)
- (set_local $4
+ (set_local $5
(get_local $2)
)
)
@@ -16052,9 +15952,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
- (get_local $6)
+ (get_local $4)
)
)
(get_local $1)
@@ -16064,28 +15964,28 @@
(if
(i32.ne
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 12)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(call_import $_abort)
)
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 8)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(block
(i32.store
@@ -16096,7 +15996,7 @@
(get_local $7)
(get_local $2)
)
- (set_local $4
+ (set_local $5
(get_local $0)
)
)
@@ -16112,7 +16012,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16121,15 +16021,15 @@
(block
(if
(i32.eq
- (get_local $6)
+ (get_local $4)
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
- (get_local $6)
+ (get_local $4)
)
)
(i32.const 2)
@@ -16141,11 +16041,11 @@
(block
(i32.store
(get_local $1)
- (get_local $4)
+ (get_local $5)
)
(if
(i32.eq
- (get_local $4)
+ (get_local $5)
(i32.const 0)
)
(block
@@ -16165,7 +16065,7 @@
)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16187,32 +16087,32 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 16)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(i32.store
(get_local $0)
- (get_local $4)
+ (get_local $5)
)
(i32.store offset=20
(get_local $8)
- (get_local $4)
+ (get_local $5)
)
)
(if
(i32.eq
- (get_local $4)
+ (get_local $5)
(i32.const 0)
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16224,8 +16124,8 @@
)
(if
(i32.lt_u
- (get_local $4)
- (set_local $0
+ (get_local $5)
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -16234,16 +16134,16 @@
(call_import $_abort)
)
(i32.store offset=24
- (get_local $4)
+ (get_local $5)
(get_local $8)
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
- (get_local $6)
+ (get_local $4)
(i32.const 16)
)
)
@@ -16259,19 +16159,19 @@
(call_import $_abort)
(block
(i32.store offset=16
- (get_local $4)
+ (get_local $5)
(get_local $1)
)
(i32.store offset=24
(get_local $1)
- (get_local $4)
+ (get_local $5)
)
)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -16280,7 +16180,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16296,15 +16196,15 @@
(call_import $_abort)
(block
(i32.store offset=20
- (get_local $4)
+ (get_local $5)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
- (get_local $4)
+ (get_local $5)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16335,9 +16235,9 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 4)
@@ -16370,7 +16270,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 188)
@@ -16420,7 +16320,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 184)
@@ -16450,7 +16350,7 @@
(return)
)
)
- (set_local $4
+ (set_local $5
(i32.add
(i32.and
(get_local $0)
@@ -16479,12 +16379,12 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $9)
)
)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 216)
(i32.shl
@@ -16566,7 +16466,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 8)
@@ -16600,7 +16500,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $9)
)
@@ -16610,11 +16510,11 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $9)
(i32.const 16)
@@ -16629,7 +16529,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $7)
)
@@ -16658,9 +16558,9 @@
(loop $while-out$12 $while-in$13
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $2)
(i32.const 20)
@@ -16682,9 +16582,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $2)
(i32.const 16)
@@ -16728,7 +16628,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $9)
)
@@ -16742,7 +16642,7 @@
(if
(i32.ne
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 12)
@@ -16756,7 +16656,7 @@
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -16793,11 +16693,11 @@
(i32.eq
(get_local $9)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $9)
)
@@ -16851,7 +16751,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -16880,7 +16780,7 @@
(if
(i32.lt_u
(get_local $11)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -16894,9 +16794,9 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $9)
(i32.const 16)
@@ -16926,7 +16826,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -16961,16 +16861,16 @@
(i32.store offset=4
(get_local $3)
(i32.or
- (get_local $4)
+ (get_local $5)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $3)
- (get_local $4)
+ (get_local $5)
)
- (get_local $4)
+ (get_local $5)
)
(if
(i32.eq
@@ -16982,11 +16882,10 @@
(block
(i32.store
(i32.const 184)
- (get_local $4)
+ (get_local $5)
)
(return)
)
- (get_local $4)
)
)
(block
@@ -17011,20 +16910,20 @@
)
(get_local $10)
)
- (set_local $4
+ (set_local $5
(get_local $10)
)
)
)
(set_local $1
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.const 3)
)
)
(if
(i32.lt_u
- (get_local $4)
+ (get_local $5)
(i32.const 256)
)
(block
@@ -17043,12 +16942,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -17065,7 +16964,7 @@
(get_local $1)
)
)
- (set_local $5
+ (set_local $6
(i32.add
(get_local $2)
(i32.const 8)
@@ -17077,9 +16976,9 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -17093,7 +16992,7 @@
)
(call_import $_abort)
(block
- (set_local $5
+ (set_local $6
(get_local $0)
)
(set_local $14
@@ -17103,7 +17002,7 @@
)
)
(i32.store
- (get_local $5)
+ (get_local $6)
(get_local $3)
)
(i32.store offset=12
@@ -17125,12 +17024,12 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $5
+ (tee_local $6
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.const 8)
)
)
@@ -17139,27 +17038,27 @@
(i32.const 0)
(if
(i32.gt_u
- (get_local $4)
+ (get_local $5)
(i32.const 16777215)
)
(i32.const 31)
(block
- (set_local $5
+ (set_local $6
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $5
+ (tee_local $6
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -17182,14 +17081,14 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $6
(i32.shl
(get_local $1)
- (get_local $5)
+ (get_local $6)
)
)
(i32.const 245760)
@@ -17203,7 +17102,7 @@
)
(i32.shr_u
(i32.shl
- (get_local $5)
+ (get_local $6)
(get_local $0)
)
(i32.const 15)
@@ -17216,7 +17115,7 @@
(i32.or
(i32.and
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.add
(get_local $0)
(i32.const 7)
@@ -17224,7 +17123,7 @@
)
(i32.const 1)
)
- (get_local $5)
+ (get_local $6)
)
)
)
@@ -17236,7 +17135,7 @@
)
(i32.store offset=28
(get_local $3)
- (get_local $5)
+ (get_local $6)
)
(i32.store offset=20
(get_local $3)
@@ -17249,15 +17148,15 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
- (get_local $5)
+ (get_local $6)
)
)
)
@@ -17289,20 +17188,20 @@
)
)
(block
- (set_local $5
+ (set_local $6
(i32.shl
- (get_local $4)
+ (get_local $5)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
- (get_local $5)
+ (get_local $6)
(i32.const 1)
)
)
(i32.eq
- (get_local $5)
+ (get_local $6)
(i32.const 31)
)
)
@@ -17322,7 +17221,7 @@
)
(i32.const -8)
)
- (get_local $4)
+ (get_local $5)
)
(block
(set_local $15
@@ -17336,15 +17235,15 @@
)
(set_local $2
(i32.shl
- (get_local $5)
+ (get_local $6)
(i32.const 1)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $6
(i32.add
(i32.add
(get_local $1)
@@ -17352,7 +17251,7 @@
)
(i32.shl
(i32.shr_u
- (get_local $5)
+ (get_local $6)
(i32.const 31)
)
(i32.const 2)
@@ -17368,7 +17267,7 @@
(get_local $1)
)
(set_local $17
- (get_local $5)
+ (get_local $6)
)
(set_local $0
(i32.const 127)
@@ -17376,7 +17275,7 @@
(br $while-out$18)
)
(block
- (set_local $5
+ (set_local $6
(get_local $2)
)
(set_local $1
@@ -17426,9 +17325,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -17436,7 +17335,7 @@
)
)
)
- (set_local $5
+ (tee_local $6
(i32.load
(i32.const 192)
)
@@ -17444,7 +17343,7 @@
)
(i32.ge_u
(get_local $15)
- (get_local $5)
+ (get_local $6)
)
)
(block
@@ -17477,7 +17376,7 @@
)
(i32.store
(i32.const 208)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 208)
@@ -17491,7 +17390,7 @@
(get_local $0)
(i32.const 0)
)
- (set_local $5
+ (set_local $6
(i32.const 632)
)
(return)
@@ -17499,24 +17398,23 @@
(loop $while-out$20 $while-in$21
(set_local $0
(i32.eq
- (set_local $5
+ (tee_local $6
(i32.load
- (get_local $5)
+ (get_local $6)
)
)
(i32.const 0)
)
)
- (set_local $5
+ (set_local $6
(i32.add
- (get_local $5)
+ (get_local $6)
(i32.const 8)
)
)
(if
(get_local $0)
(br $while-out$20)
- (get_local $5)
)
(br $while-in$21)
)
@@ -17556,7 +17454,7 @@
(get_local $3)
)
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(get_local $2)
@@ -17589,7 +17487,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -17618,7 +17516,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -18020,15 +17918,15 @@
(set_local $2
(i32.add
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.mul
- (set_local $2
+ (tee_local $2
(i32.and
(get_local $1)
(i32.const 65535)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 65535)
@@ -18040,7 +17938,7 @@
)
(i32.mul
(get_local $2)
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $0)
(i32.const 16)
@@ -18051,7 +17949,7 @@
)
(set_local $3
(i32.mul
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(i32.const 16)
@@ -18109,7 +18007,7 @@
(call $___udivmoddi4
(call $_i64Subtract
(i32.xor
- (set_local $4
+ (tee_local $4
(i32.or
(i32.shr_s
(get_local $1)
@@ -18131,7 +18029,7 @@
(get_local $0)
)
(i32.xor
- (set_local $0
+ (tee_local $0
(i32.or
(i32.shr_s
(select
@@ -18167,7 +18065,7 @@
)
(call $_i64Subtract
(i32.xor
- (set_local $1
+ (tee_local $1
(i32.or
(i32.shr_s
(get_local $3)
@@ -18189,7 +18087,7 @@
(get_local $2)
)
(i32.xor
- (set_local $2
+ (tee_local $2
(i32.or
(i32.shr_s
(select
@@ -18225,7 +18123,7 @@
)
(i32.const 0)
)
- (set_local $1
+ (tee_local $1
(i32.xor
(get_local $1)
(get_local $4)
@@ -18236,7 +18134,7 @@
(i32.load
(i32.const 168)
)
- (set_local $0
+ (tee_local $0
(i32.xor
(get_local $2)
(get_local $0)
@@ -18265,125 +18163,127 @@
(i32.const 16)
)
)
- (call $___udivmoddi4
- (call $_i64Subtract
- (i32.xor
- (set_local $4
- (i32.or
- (i32.shr_s
- (get_local $1)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (drop
+ (call $___udivmoddi4
+ (call $_i64Subtract
+ (i32.xor
+ (tee_local $4
+ (i32.or
+ (i32.shr_s
+ (get_local $1)
+ (i32.const 31)
+ )
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $0)
)
- (get_local $0)
- )
- (i32.xor
- (set_local $5
- (i32.or
- (i32.shr_s
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (i32.xor
+ (tee_local $5
+ (i32.or
+ (i32.shr_s
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $1)
)
- (get_local $1)
+ (get_local $4)
+ (get_local $5)
)
- (get_local $4)
- (get_local $5)
- )
- (i32.load
- (i32.const 168)
- )
- (call $_i64Subtract
- (i32.xor
- (set_local $0
- (i32.or
- (i32.shr_s
- (get_local $3)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.load
+ (i32.const 168)
+ )
+ (call $_i64Subtract
+ (i32.xor
+ (tee_local $0
+ (i32.or
+ (i32.shr_s
+ (get_local $3)
+ (i32.const 31)
+ )
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $2)
)
- (get_local $2)
- )
- (i32.xor
- (set_local $1
- (i32.or
- (i32.shr_s
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.xor
+ (tee_local $1
+ (i32.or
+ (i32.shr_s
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $3)
)
- (get_local $3)
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.load
+ (i32.const 168)
+ )
+ (tee_local $0
+ (get_local $6)
)
- (get_local $0)
- (get_local $1)
- )
- (i32.load
- (i32.const 168)
- )
- (set_local $0
- (get_local $6)
)
)
(set_local $0
@@ -18441,7 +18341,7 @@
(get_local $2)
)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 168)
)
@@ -18486,13 +18386,15 @@
(i32.const 16)
)
)
- (call $___udivmoddi4
- (get_local $0)
- (get_local $1)
- (get_local $2)
- (get_local $3)
- (set_local $0
- (get_local $4)
+ (drop
+ (call $___udivmoddi4
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ (get_local $3)
+ (tee_local $0
+ (get_local $4)
+ )
)
)
(i32.store
@@ -18527,14 +18429,14 @@
(get_local $2)
)
(set_local $7
- (set_local $14
+ (tee_local $14
(get_local $3)
)
)
(if
(i32.eq
- (set_local $6
- (set_local $9
+ (tee_local $6
+ (tee_local $9
(get_local $1)
)
)
@@ -18716,7 +18618,7 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $7)
(i32.const 1)
@@ -18774,7 +18676,7 @@
)
(if
(i32.le_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.clz
(get_local $7)
@@ -18788,7 +18690,7 @@
)
(block
(set_local $12
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 1)
@@ -18799,7 +18701,7 @@
(i32.or
(i32.shl
(get_local $6)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 31)
(get_local $5)
@@ -18881,7 +18783,7 @@
(block
(if
(i32.le_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.clz
(get_local $7)
@@ -18895,7 +18797,7 @@
)
(block
(set_local $12
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 1)
@@ -18909,7 +18811,7 @@
(get_local $8)
(get_local $0)
)
- (set_local $9
+ (tee_local $9
(i32.shr_s
(i32.sub
(get_local $5)
@@ -18921,7 +18823,7 @@
)
(i32.shl
(get_local $6)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 31)
(get_local $5)
@@ -18998,7 +18900,7 @@
(if
(i32.ne
(i32.and
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $5)
(i32.const 1)
@@ -19012,7 +18914,7 @@
(set_local $1
(i32.sub
(i32.const 64)
- (set_local $0
+ (tee_local $0
(i32.sub
(i32.add
(i32.clz
@@ -19029,7 +18931,7 @@
)
(set_local $5
(i32.shr_s
- (set_local $9
+ (tee_local $9
(i32.sub
(i32.const 32)
(get_local $0)
@@ -19040,7 +18942,7 @@
)
(set_local $10
(i32.shr_s
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $0)
(i32.const 32)
@@ -19185,7 +19087,7 @@
(i32.const 0)
(i32.shr_u
(get_local $6)
- (set_local $0
+ (tee_local $0
(i32.ctz
(get_local $5)
)
@@ -19231,7 +19133,7 @@
(block
(set_local $3
(call $_i64Add
- (set_local $1
+ (tee_local $1
(i32.or
(i32.const 0)
(i32.and
@@ -19240,7 +19142,7 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.or
(get_local $14)
(i32.and
@@ -19286,43 +19188,45 @@
)
)
)
- (call $_i64Subtract
- (get_local $3)
- (get_local $8)
- (set_local $0
- (i32.or
- (i32.const 0)
+ (drop
+ (call $_i64Subtract
+ (get_local $3)
+ (get_local $8)
+ (tee_local $0
(i32.or
- (i32.shl
- (get_local $11)
- (i32.const 1)
+ (i32.const 0)
+ (i32.or
+ (i32.shl
+ (get_local $11)
+ (i32.const 1)
+ )
+ (i32.shr_u
+ (get_local $9)
+ (i32.const 31)
+ )
)
+ )
+ )
+ (tee_local $9
+ (i32.or
(i32.shr_u
- (get_local $9)
+ (get_local $11)
(i32.const 31)
)
- )
- )
- )
- (set_local $9
- (i32.or
- (i32.shr_u
- (get_local $11)
- (i32.const 31)
- )
- (i32.shl
- (get_local $13)
- (i32.const 1)
+ (i32.shl
+ (get_local $13)
+ (i32.const 1)
+ )
)
)
)
)
(set_local $7
(i32.and
- (set_local $14
+ (tee_local $14
(i32.or
(i32.shr_s
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 168)
)
@@ -19389,7 +19293,7 @@
)
(if
(i32.eq
- (set_local $12
+ (tee_local $12
(i32.sub
(get_local $12)
(i32.const 1)
@@ -19419,7 +19323,7 @@
(set_local $3
(i32.or
(get_local $6)
- (set_local $2
+ (tee_local $2
(i32.const 0)
)
)
diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise
index 13c8baec6..f0e3e992d 100644
--- a/test/emcc_hello_world.fromasm.imprecise
+++ b/test/emcc_hello_world.fromasm.imprecise
@@ -271,9 +271,11 @@
)
(call_import $abort)
)
- (call $_printf
- (i32.const 672)
- (get_local $0)
+ (drop
+ (call $_printf
+ (i32.const 672)
+ (get_local $0)
+ )
)
(i32.store
(i32.const 8)
@@ -285,9 +287,6 @@
(local $2 i32)
(local $3 i32)
(local $4 i32)
- (i32.load
- (i32.const 8)
- )
(f64.store
(i32.load
(i32.const 24)
@@ -296,14 +295,14 @@
)
(set_local $2
(call $_bitshift64Lshr
- (set_local $3
+ (tee_local $3
(i32.load
(i32.load
(i32.const 24)
)
)
)
- (set_local $4
+ (tee_local $4
(i32.load offset=4
(i32.load
(i32.const 24)
@@ -313,16 +312,13 @@
(i32.const 52)
)
)
- (i32.load
- (i32.const 168)
- )
(block $switch$0
(block $switch-default$3
(block $switch-case$2
(block $switch-case$1
(br_table $switch-case$1 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-default$3 $switch-case$2 $switch-default$3
(i32.sub
- (set_local $2
+ (tee_local $2
(i32.and
(get_local $2)
(i32.const 2047)
@@ -400,9 +396,6 @@
)
)
(func $_frexpl (param $0 f64) (param $1 i32) (result f64)
- (i32.load
- (i32.const 8)
- )
(call $_frexp
(get_local $0)
(get_local $1)
@@ -414,9 +407,6 @@
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $1
(i32.const 0)
)
@@ -443,7 +433,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -463,7 +453,6 @@
)
(br $while-out$0)
)
- (get_local $1)
)
(br $while-in$1)
)
@@ -533,7 +522,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const -1)
@@ -562,9 +551,6 @@
(get_local $5)
)
(func $___errno_location (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(i32.load
@@ -607,7 +593,7 @@
(call_import $abort)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -752,7 +738,7 @@
(call_import $abort)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -769,7 +755,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -812,9 +798,6 @@
(func $_fflush (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.eq
@@ -842,15 +825,14 @@
(i32.const 44)
)
(if
- (i32.eq
- (set_local $1
+ (i32.ne
+ (tee_local $1
(i32.load
(i32.const 40)
)
)
(i32.const 0)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -900,7 +882,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=56
(get_local $1)
)
@@ -996,7 +978,7 @@
(call_import $abort)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $2)
)
(get_local $1)
@@ -1017,9 +999,6 @@
(get_local $0)
)
(func $___lockfile (param $0 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(i32.const 0)
)
(func $___unlockfile (param $0 i32)
@@ -1076,15 +1055,15 @@
(get_local $8)
)
(i32.store
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $8)
(i32.const 32)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 28)
@@ -1095,10 +1074,10 @@
)
(i32.store offset=4
(get_local $4)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $0)
(i32.const 20)
@@ -1142,7 +1121,7 @@
(if
(i32.eq
(get_local $3)
- (set_local $5
+ (tee_local $5
(if
(i32.eq
(i32.load
@@ -1242,7 +1221,7 @@
(if
(i32.gt_u
(get_local $5)
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $4)
)
@@ -1251,7 +1230,7 @@
(block
(i32.store
(get_local $7)
- (set_local $3
+ (tee_local $3
(i32.load
(get_local $13)
)
@@ -1348,7 +1327,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $13)
)
@@ -1476,8 +1455,8 @@
)
(set_local $7
(i32.add
- (set_local $4
- (set_local $9
+ (tee_local $4
+ (tee_local $9
(i32.add
(get_local $3)
(i32.const 80)
@@ -1494,7 +1473,7 @@
)
(br_if $do-in$1
(i32.lt_s
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const 4)
@@ -1540,7 +1519,7 @@
)
(set_local $4
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -1574,7 +1553,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $0)
(i32.const 48)
@@ -1586,7 +1565,7 @@
(block
(set_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 44)
@@ -1599,7 +1578,7 @@
(get_local $6)
)
(i32.store
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $0)
(i32.const 28)
@@ -1608,7 +1587,7 @@
(get_local $6)
)
(i32.store
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $0)
(i32.const 20)
@@ -1621,7 +1600,7 @@
(i32.const 80)
)
(i32.store
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 16)
@@ -1648,19 +1627,21 @@
)
(get_local $1)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(set_local $1
(select
@@ -1709,7 +1690,7 @@
(i32.const -1)
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -1752,14 +1733,11 @@
(local $5 i32)
(local $6 i32)
(local $7 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 16)
@@ -1810,9 +1788,9 @@
(i32.lt_u
(i32.sub
(get_local $3)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -1846,122 +1824,124 @@
(br $label$break$L5)
)
)
- (call $_memcpy
- (block $label$break$L10
- (if
- (i32.gt_s
- (i32.shr_s
- (i32.shl
- (i32.load8_s offset=75
- (get_local $2)
+ (drop
+ (call $_memcpy
+ (block $label$break$L10
+ (if
+ (i32.gt_s
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s offset=75
+ (get_local $2)
+ )
+ (i32.const 24)
)
(i32.const 24)
)
- (i32.const 24)
- )
- (i32.const -1)
- )
- (block
- (set_local $3
- (get_local $1)
+ (i32.const -1)
)
- (loop $while-out$2 $while-in$3
- (if
- (i32.eq
- (get_local $3)
- (i32.const 0)
- )
- (block
- (set_local $2
+ (block
+ (set_local $3
+ (get_local $1)
+ )
+ (loop $while-out$2 $while-in$3
+ (if
+ (i32.eq
+ (get_local $3)
(i32.const 0)
)
- (br $label$break$L10
- (get_local $6)
+ (block
+ (set_local $2
+ (i32.const 0)
+ )
+ (br $label$break$L10
+ (get_local $6)
+ )
)
)
- )
- (if
- (i32.eq
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (i32.add
- (get_local $0)
- (set_local $4
- (i32.add
- (get_local $3)
- (i32.const -1)
+ (if
+ (i32.eq
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (i32.add
+ (get_local $0)
+ (tee_local $4
+ (i32.add
+ (get_local $3)
+ (i32.const -1)
+ )
)
)
)
+ (i32.const 24)
)
(i32.const 24)
)
- (i32.const 24)
+ (i32.const 10)
+ )
+ (br $while-out$2)
+ (set_local $3
+ (get_local $4)
)
- (i32.const 10)
- )
- (br $while-out$2)
- (set_local $3
- (get_local $4)
)
+ (br $while-in$3)
)
- (br $while-in$3)
- )
- (if
- (i32.lt_u
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $2)
+ (if
+ (i32.lt_u
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $2)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $2)
+ (get_local $0)
+ (get_local $3)
)
- (get_local $2)
- (get_local $0)
(get_local $3)
)
+ (block
+ (set_local $4
+ (get_local $3)
+ )
+ (br $label$break$L5)
+ )
+ )
+ (set_local $2
(get_local $3)
)
- (block
- (set_local $4
+ (set_local $1
+ (i32.sub
+ (get_local $1)
(get_local $3)
)
- (br $label$break$L5)
)
- )
- (set_local $2
- (get_local $3)
- )
- (set_local $1
- (i32.sub
- (get_local $1)
- (get_local $3)
+ (set_local $0
+ (i32.add
+ (get_local $0)
+ (get_local $3)
+ )
)
- )
- (set_local $0
- (i32.add
- (get_local $0)
- (get_local $3)
+ (i32.load
+ (get_local $5)
)
)
- (i32.load
- (get_local $5)
- )
- )
- (block
- (set_local $2
- (i32.const 0)
+ (block
+ (set_local $2
+ (i32.const 0)
+ )
+ (get_local $6)
)
- (get_local $6)
)
)
+ (get_local $0)
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(i32.store
(get_local $5)
@@ -1986,18 +1966,15 @@
(func $___towrite (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $1
(i32.and
(i32.or
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 74)
@@ -2023,7 +2000,7 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -2043,7 +2020,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -2077,9 +2054,6 @@
)
)
(func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.eq
@@ -2287,9 +2261,6 @@
)
)
(func $_wctomb (param $0 i32) (param $1 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(get_local $0)
@@ -2318,9 +2289,6 @@
(local $14 i32)
(local $15 i32)
(local $16 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $16
(i32.and
(get_local $1)
@@ -2330,7 +2298,7 @@
(block $label$break$L1
(if
(i32.and
- (set_local $6
+ (tee_local $6
(i32.ne
(get_local $2)
(i32.const 0)
@@ -2392,9 +2360,9 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const -1)
@@ -2405,7 +2373,7 @@
)
(i32.ne
(i32.and
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const 1)
@@ -2501,7 +2469,7 @@
)
(i32.shr_s
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.and
(get_local $1)
(i32.const 255)
@@ -2537,7 +2505,7 @@
(loop $while-out$5 $while-in$6
(set_local $1
(i32.add
- (set_local $6
+ (tee_local $6
(i32.xor
(i32.load
(get_local $5)
@@ -2572,7 +2540,7 @@
)
(if
(i32.gt_u
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const -4)
@@ -2685,7 +2653,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $10)
(i32.const -1)
@@ -2727,9 +2695,6 @@
)
)
(func $___syscall_ret (param $0 i32) (result i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.gt_u
(get_local $0)
@@ -2755,13 +2720,10 @@
(local $4 i32)
(local $5 i32)
(local $6 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.gt_u
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -2769,7 +2731,7 @@
)
)
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 28)
@@ -2778,19 +2740,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.eq
@@ -2819,9 +2783,9 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 4)
@@ -2829,9 +2793,9 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 8)
@@ -2886,9 +2850,6 @@
(get_local $1)
)
(func $_cleanup (param $0 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(i32.load offset=68
@@ -2911,8 +2872,8 @@
(local $11 i32)
(local $12 i32)
(local $13 i32)
- (local $14 i32)
- (local $15 f64)
+ (local $14 f64)
+ (local $15 i32)
(local $16 i32)
(local $17 i32)
(local $18 i32)
@@ -3028,9 +2989,9 @@
)
)
(set_local $71
- (set_local $28
+ (tee_local $28
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $31)
(i32.const 536)
@@ -3048,7 +3009,7 @@
)
(set_local $76
(i32.add
- (set_local $73
+ (tee_local $73
(i32.add
(get_local $31)
(i32.const 8)
@@ -3059,7 +3020,7 @@
)
(set_local $52
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $31)
(i32.const 576)
@@ -3076,11 +3037,11 @@
)
(set_local $77
(i32.sub
- (set_local $40
+ (tee_local $40
(get_local $52)
)
- (set_local $64
- (set_local $29
+ (tee_local $64
+ (tee_local $29
(i32.add
(get_local $31)
(i32.const 588)
@@ -3103,7 +3064,7 @@
)
(set_local $81
(i32.add
- (set_local $80
+ (tee_local $80
(i32.add
(get_local $31)
(i32.const 24)
@@ -3113,7 +3074,7 @@
)
)
(set_local $75
- (set_local $45
+ (tee_local $45
(i32.add
(get_local $29)
(i32.const 9)
@@ -3172,7 +3133,7 @@
(i32.eq
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
(get_local $20)
)
@@ -3237,7 +3198,7 @@
)
(set_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 1)
@@ -3291,7 +3252,7 @@
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $54)
(i32.const 2)
@@ -3369,13 +3330,13 @@
(set_local $7
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $41)
(i32.const 1)
@@ -3395,14 +3356,14 @@
(block
(set_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(select
(i32.add
(get_local $41)
(i32.const 3)
)
(get_local $5)
- (set_local $7
+ (tee_local $7
(i32.eq
(i32.shr_s
(i32.shl
@@ -3451,7 +3412,7 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.shr_s
(i32.shl
(get_local $1)
@@ -3506,12 +3467,12 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 1)
@@ -3561,12 +3522,12 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 1)
@@ -3606,33 +3567,28 @@
)
(i32.const 10)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (i32.add
- (get_local $3)
- (i32.shl
- (i32.add
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (get_local $6)
- )
- (i32.const 24)
+ (i32.add
+ (get_local $3)
+ (i32.shl
+ (i32.add
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (get_local $6)
)
(i32.const 24)
)
- (i32.const -48)
+ (i32.const 24)
)
- (i32.const 3)
+ (i32.const -48)
)
+ (i32.const 3)
)
)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(set_local $66
(i32.const 1)
)
@@ -3643,7 +3599,7 @@
)
)
(set_local $56
- (get_local $5)
+ (get_local $1)
)
)
(set_local $12
@@ -3694,7 +3650,7 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -3766,7 +3722,7 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
@@ -3799,12 +3755,12 @@
)
(if
(i32.ge_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -3879,9 +3835,9 @@
(i32.ne
(i32.shr_s
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load8_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $9)
(i32.const 1)
@@ -3898,7 +3854,7 @@
(block
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
@@ -3941,12 +3897,12 @@
)
(if
(i32.ge_u
- (set_local $6
+ (tee_local $6
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -3977,12 +3933,12 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
(i32.load8_s
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $9)
(i32.const 2)
@@ -4022,35 +3978,30 @@
)
(i32.const 10)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (i32.add
- (get_local $3)
- (i32.shl
- (i32.add
- (i32.shr_s
- (i32.shl
- (i32.load8_s
- (get_local $6)
- )
- (i32.const 24)
+ (i32.add
+ (get_local $3)
+ (i32.shl
+ (i32.add
+ (i32.shr_s
+ (i32.shl
+ (i32.load8_s
+ (get_local $6)
)
(i32.const 24)
)
- (i32.const -48)
+ (i32.const 24)
)
- (i32.const 3)
+ (i32.const -48)
)
+ (i32.const 3)
)
)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(set_local $10
- (get_local $5)
+ (get_local $1)
)
(br $label$break$L46
(i32.add
@@ -4078,7 +4029,7 @@
(block
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -4126,7 +4077,7 @@
(loop $while-out$19 $while-in$20
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.shr_s
(i32.shl
@@ -4158,9 +4109,9 @@
(if
(i32.lt_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load8_s
(i32.add
(i32.add
@@ -4262,7 +4213,7 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $3)
(i32.shl
@@ -4279,7 +4230,7 @@
)
)
(i32.store
- (set_local $7
+ (tee_local $7
(get_local $19)
)
(get_local $5)
@@ -4349,7 +4300,7 @@
)
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.load8_s
@@ -4369,7 +4320,7 @@
(set_local $18
(select
(get_local $8)
- (set_local $7
+ (tee_local $7
(i32.and
(get_local $8)
(i32.const -65537)
@@ -4400,7 +4351,7 @@
(block $switch-case$34
(br_table $switch-case$49 $switch-default$127 $switch-case$47 $switch-default$127 $switch-case$49 $switch-case$49 $switch-case$49 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$48 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$49 $switch-default$127 $switch-case$44 $switch-case$41 $switch-case$49 $switch-case$49 $switch-case$49 $switch-default$127 $switch-case$41 $switch-default$127 $switch-default$127 $switch-default$127 $switch-case$45 $switch-case$34 $switch-case$40 $switch-case$35 $switch-default$127 $switch-default$127 $switch-case$46 $switch-default$127 $switch-case$43 $switch-default$127 $switch-default$127 $switch-case$36 $switch-default$127
(i32.sub
- (set_local $26
+ (tee_local $26
(select
(i32.and
(get_local $1)
@@ -4464,7 +4415,7 @@
(br $label$continue$L1)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4553,7 +4504,7 @@
(br $label$continue$L1)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4636,9 +4587,9 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -4646,7 +4597,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $1)
)
@@ -4663,7 +4614,7 @@
)
(loop $while-out$38 $while-in$39
(i32.store8
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -1)
@@ -4683,7 +4634,7 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_bitshift64Lshr
(get_local $5)
(get_local $1)
@@ -4693,7 +4644,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 168)
)
@@ -4738,7 +4689,7 @@
(set_local $5
(i32.lt_s
(get_local $10)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.sub
(get_local $71)
@@ -4776,14 +4727,14 @@
)
(set_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
)
(if
(i32.lt_s
- (set_local $33
+ (tee_local $33
(i32.load offset=4
(get_local $1)
)
@@ -4805,7 +4756,7 @@
)
)
(i32.store
- (set_local $33
+ (tee_local $33
(get_local $19)
)
(get_local $1)
@@ -4847,7 +4798,7 @@
(i32.const 4091)
(i32.const 4093)
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.and
(get_local $18)
(i32.const 1)
@@ -4892,7 +4843,7 @@
)
(set_local $33
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -4913,20 +4864,15 @@
)
(br $switch$24)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (get_local $19)
- )
+ (get_local $19)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(i32.store8
(get_local $72)
(i32.and
- (get_local $5)
+ (get_local $1)
(i32.const 255)
)
)
@@ -4964,7 +4910,7 @@
)
(set_local $5
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $19)
)
@@ -4984,19 +4930,14 @@
)
(br $switch$24)
)
- (set_local $5
+ (set_local $1
(i32.load
- (set_local $1
- (get_local $19)
- )
+ (get_local $19)
)
)
- (i32.load offset=4
- (get_local $1)
- )
(i32.store
(get_local $73)
- (get_local $5)
+ (get_local $1)
)
(i32.store
(get_local $76)
@@ -5043,7 +4984,7 @@
)
(br $switch$24)
)
- (set_local $15
+ (set_local $14
(f64.load
(get_local $19)
)
@@ -5056,12 +4997,7 @@
(i32.load
(i32.const 24)
)
- (get_local $15)
- )
- (i32.load
- (i32.load
- (i32.const 24)
- )
+ (get_local $14)
)
(set_local $51
(if
@@ -5077,9 +5013,9 @@
(set_local $39
(i32.const 4108)
)
- (set_local $15
+ (set_local $14
(f64.neg
- (get_local $15)
+ (get_local $14)
)
)
(i32.const 1)
@@ -5098,7 +5034,7 @@
(i32.const 4109)
(i32.const 4114)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $18)
(i32.const 1)
@@ -5123,12 +5059,7 @@
(i32.load
(i32.const 24)
)
- (get_local $15)
- )
- (i32.load
- (i32.load
- (i32.const 24)
- )
+ (get_local $14)
)
(set_local $20
(get_local $9)
@@ -5138,7 +5069,7 @@
(if
(i32.or
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.and
(i32.load offset=4
(i32.load
@@ -5160,12 +5091,12 @@
)
(block
(if
- (set_local $5
+ (tee_local $5
(f64.ne
- (set_local $15
+ (tee_local $14
(f64.mul
(call $_frexpl
- (get_local $15)
+ (get_local $14)
(get_local $25)
)
(f64.const 2)
@@ -5186,7 +5117,7 @@
)
(if
(i32.eq
- (set_local $14
+ (tee_local $15
(i32.or
(get_local $26)
(i32.const 32)
@@ -5203,7 +5134,7 @@
(i32.const 9)
)
(i32.eq
- (set_local $6
+ (tee_local $6
(i32.and
(get_local $26)
(i32.const 32)
@@ -5219,7 +5150,7 @@
(i32.const 2)
)
)
- (set_local $15
+ (set_local $14
(if
(i32.or
(i32.gt_u
@@ -5227,7 +5158,7 @@
(i32.const 11)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 12)
(get_local $10)
@@ -5236,7 +5167,7 @@
(i32.const 0)
)
)
- (get_local $15)
+ (get_local $14)
(block
(set_local $30
(f64.const 8)
@@ -5250,7 +5181,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -5268,7 +5199,7 @@
(get_local $30)
(f64.sub
(f64.neg
- (get_local $15)
+ (get_local $14)
)
(get_local $30)
)
@@ -5276,7 +5207,7 @@
)
(f64.sub
(f64.add
- (get_local $15)
+ (get_local $14)
(get_local $30)
)
(get_local $30)
@@ -5299,7 +5230,7 @@
)
(set_local $5
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $25)
)
@@ -5311,7 +5242,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $8
+ (tee_local $8
(select
(i32.sub
(i32.const 0)
@@ -5330,10 +5261,10 @@
)
(i32.store8
(i32.add
- (set_local $5
+ (tee_local $5
(if
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_fmt_u
(get_local $8)
(get_local $5)
@@ -5369,7 +5300,7 @@
)
)
(i32.store8
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $5)
(i32.const -2)
@@ -5409,9 +5340,9 @@
(i32.and
(i32.load8_s
(i32.add
- (set_local $1
+ (tee_local $1
(i32.trunc_s/f64
- (get_local $15)
+ (get_local $14)
)
)
(i32.const 4075)
@@ -5424,10 +5355,10 @@
(i32.const 255)
)
)
- (set_local $15
+ (set_local $14
(f64.mul
(f64.sub
- (get_local $15)
+ (get_local $14)
(f64.convert_s/i32
(get_local $1)
)
@@ -5440,7 +5371,7 @@
(if
(i32.eq
(i32.sub
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $11)
(i32.const 1)
@@ -5458,7 +5389,7 @@
(i32.and
(get_local $5)
(f64.eq
- (get_local $15)
+ (get_local $14)
(f64.const 0)
)
)
@@ -5479,7 +5410,7 @@
)
(if
(f64.eq
- (get_local $15)
+ (get_local $14)
(f64.const 0)
)
(block
@@ -5510,9 +5441,9 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $5
+ (tee_local $5
(i32.add
- (set_local $6
+ (tee_local $6
(select
(i32.sub
(i32.add
@@ -5591,7 +5522,7 @@
(get_local $6)
(i32.add
(get_local $1)
- (set_local $1
+ (tee_local $1
(i32.sub
(get_local $40)
(get_local $8)
@@ -5651,7 +5582,7 @@
)
)
(set_local $62
- (set_local $9
+ (tee_local $9
(select
(get_local $80)
(get_local $81)
@@ -5661,7 +5592,7 @@
(block
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $25)
@@ -5670,9 +5601,9 @@
)
)
)
- (set_local $15
+ (set_local $14
(f64.mul
- (get_local $15)
+ (get_local $14)
(f64.const 268435456)
)
)
@@ -5693,9 +5624,9 @@
(loop $while-out$66 $while-in$67
(i32.store
(get_local $7)
- (set_local $5
+ (tee_local $5
(i32.trunc_s/f64
- (get_local $15)
+ (get_local $14)
)
)
)
@@ -5707,10 +5638,10 @@
)
(if
(f64.eq
- (set_local $15
+ (tee_local $14
(f64.mul
(f64.sub
- (get_local $15)
+ (get_local $14)
(f64.convert_u/i32
(get_local $5)
)
@@ -5731,7 +5662,7 @@
)
(if
(i32.gt_s
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $25)
)
@@ -5760,7 +5691,7 @@
(block $do-once$70
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $13)
(i32.const -4)
@@ -5779,7 +5710,7 @@
(loop $while-out$72 $while-in$73
(set_local $6
(call $___uremdi3
- (set_local $5
+ (tee_local $5
(call $_i64Add
(call $_bitshift64Shl
(i32.load
@@ -5795,7 +5726,7 @@
(i32.const 0)
)
)
- (set_local $7
+ (tee_local $7
(i32.load
(i32.const 168)
)
@@ -5804,9 +5735,6 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(i32.store
(get_local $10)
(get_local $6)
@@ -5819,12 +5747,9 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(if
(i32.lt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $10)
(i32.const -4)
@@ -5847,7 +5772,7 @@
)
)
(i32.store
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const -4)
@@ -5871,7 +5796,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $13)
(i32.const -4)
@@ -5889,7 +5814,7 @@
)
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.load
(get_local $25)
@@ -5943,7 +5868,7 @@
)
(set_local $10
(i32.eq
- (get_local $14)
+ (get_local $15)
(i32.const 102)
)
)
@@ -5953,7 +5878,7 @@
(loop $while-out$76 $while-in$77
(set_local $5
(i32.gt_s
- (set_local $6
+ (tee_local $6
(i32.sub
(i32.const 0)
(get_local $5)
@@ -6001,7 +5926,7 @@
(loop $while-out$80 $while-in$81
(set_local $6
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $17)
)
@@ -6027,7 +5952,7 @@
)
(if
(i32.ge_u
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $17)
(i32.const 4)
@@ -6096,7 +6021,7 @@
(i32.shr_s
(i32.sub
(get_local $23)
- (set_local $7
+ (tee_local $7
(select
(get_local $9)
(get_local $11)
@@ -6124,7 +6049,7 @@
)
(i32.store
(get_local $25)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $25)
@@ -6184,7 +6109,7 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $7)
)
@@ -6211,7 +6136,7 @@
(if
(i32.lt_u
(get_local $5)
- (set_local $8
+ (tee_local $8
(i32.mul
(get_local $8)
(i32.const 10)
@@ -6236,7 +6161,7 @@
(set_local $7
(if
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.add
(i32.sub
(get_local $1)
@@ -6244,7 +6169,7 @@
(get_local $13)
(i32.const 0)
(i32.ne
- (get_local $14)
+ (get_local $15)
(i32.const 102)
)
)
@@ -6252,15 +6177,15 @@
(i32.shr_s
(i32.shl
(i32.and
- (set_local $70
+ (tee_local $70
(i32.ne
(get_local $1)
(i32.const 0)
)
)
- (set_local $8
+ (tee_local $8
(i32.eq
- (get_local $14)
+ (get_local $15)
(i32.const 103)
)
)
@@ -6296,7 +6221,7 @@
(i32.add
(i32.and
(i32.div_s
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 9216)
@@ -6314,7 +6239,7 @@
)
(if
(i32.lt_s
- (set_local $11
+ (tee_local $11
(i32.add
(i32.and
(i32.rem_s
@@ -6341,7 +6266,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $11)
(i32.const 1)
@@ -6367,7 +6292,7 @@
(if
(i32.eqz
(i32.and
- (set_local $11
+ (tee_local $11
(i32.eq
(i32.add
(get_local $6)
@@ -6377,10 +6302,10 @@
)
)
(i32.eq
- (set_local $14
+ (tee_local $15
(i32.and
(i32.rem_u
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $6)
)
@@ -6395,7 +6320,7 @@
)
)
(block
- (set_local $15
+ (set_local $14
(select
(f64.const 9007199254740992)
(f64.const 9007199254740994)
@@ -6417,8 +6342,8 @@
(set_local $30
(if
(i32.lt_u
- (get_local $14)
- (set_local $10
+ (get_local $15)
+ (tee_local $10
(i32.and
(i32.div_s
(get_local $17)
@@ -6435,21 +6360,21 @@
(i32.and
(get_local $11)
(i32.eq
- (get_local $14)
+ (get_local $15)
(get_local $10)
)
)
)
)
)
- (set_local $15
+ (set_local $14
(block $do-once$90
(if
(i32.eq
(get_local $51)
(i32.const 0)
)
- (get_local $15)
+ (get_local $14)
(block
(if
(i32.ne
@@ -6465,7 +6390,7 @@
(i32.const 45)
)
(br $do-once$90
- (get_local $15)
+ (get_local $14)
)
)
(set_local $30
@@ -6474,7 +6399,7 @@
)
)
(f64.neg
- (get_local $15)
+ (get_local $14)
)
)
)
@@ -6482,26 +6407,26 @@
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $5)
- (get_local $14)
+ (get_local $15)
)
)
)
(if
(f64.eq
(f64.add
- (get_local $15)
+ (get_local $14)
(get_local $30)
)
- (get_local $15)
+ (get_local $14)
)
(br $do-once$88)
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(get_local $17)
@@ -6521,7 +6446,7 @@
(set_local $7
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -4)
@@ -6531,7 +6456,7 @@
)
(block
(i32.store
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const -4)
@@ -6546,7 +6471,7 @@
)
(i32.store
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.add
(i32.load
(get_local $6)
@@ -6579,7 +6504,7 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $7)
)
@@ -6606,7 +6531,7 @@
(if
(i32.lt_u
(get_local $5)
- (set_local $10
+ (tee_local $10
(i32.mul
(get_local $10)
(i32.const 10)
@@ -6628,7 +6553,7 @@
(set_local $6
(i32.gt_u
(get_local $27)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const 4)
@@ -6678,7 +6603,7 @@
(if
(i32.eq
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const -4)
@@ -6711,7 +6636,7 @@
(if
(i32.and
(i32.gt_s
- (set_local $1
+ (tee_local $1
(i32.add
(i32.xor
(i32.and
@@ -6761,7 +6686,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $18)
(i32.const 8)
@@ -6770,7 +6695,7 @@
(i32.const 0)
)
(block
- (set_local $14
+ (set_local $15
(get_local $8)
)
(set_local $26
@@ -6787,7 +6712,7 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.add
(get_local $23)
@@ -6842,7 +6767,7 @@
(i32.and
(i32.rem_u
(get_local $1)
- (set_local $5
+ (tee_local $5
(i32.mul
(get_local $5)
(i32.const 10)
@@ -6889,7 +6814,7 @@
(block
(set_local $1
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $1)
(get_local $6)
@@ -6901,7 +6826,7 @@
(set_local $5
(i32.lt_s
(get_local $8)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(get_local $5)
@@ -6910,7 +6835,7 @@
)
)
)
- (set_local $14
+ (set_local $15
(select
(get_local $8)
(get_local $1)
@@ -6925,7 +6850,7 @@
(block
(set_local $1
(i32.lt_s
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.add
(get_local $1)
@@ -6940,7 +6865,7 @@
(set_local $5
(i32.lt_s
(get_local $8)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(get_local $5)
@@ -6949,7 +6874,7 @@
)
)
)
- (set_local $14
+ (set_local $15
(select
(get_local $8)
(get_local $1)
@@ -6964,7 +6889,7 @@
)
)
(block
- (set_local $14
+ (set_local $15
(get_local $1)
)
(i32.and
@@ -6978,9 +6903,9 @@
(set_local $17
(i32.and
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.or
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -6991,7 +6916,7 @@
)
(set_local $13
(if
- (set_local $10
+ (tee_local $10
(i32.eq
(i32.or
(get_local $26)
@@ -7018,7 +6943,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $6
+ (tee_local $6
(select
(get_local $27)
(get_local $13)
@@ -7039,7 +6964,7 @@
(i32.lt_s
(i32.sub
(get_local $40)
- (set_local $5
+ (tee_local $5
(call $_fmt_u
(get_local $6)
(get_local $5)
@@ -7051,7 +6976,7 @@
)
(loop $while-out$104 $while-in$105
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -1)
@@ -7060,19 +6985,17 @@
(i32.const 48)
)
(if
- (i32.lt_s
+ (i32.ge_s
(i32.sub
(get_local $40)
(get_local $5)
)
(i32.const 2)
)
- (get_local $5)
(br $while-out$104)
)
(br $while-in$105)
)
- (get_local $5)
)
(i32.store8
(i32.add
@@ -7094,7 +7017,7 @@
)
)
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -2)
@@ -7119,7 +7042,7 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.add
(i32.add
@@ -7127,7 +7050,7 @@
(get_local $51)
(i32.const 1)
)
- (get_local $14)
+ (get_local $15)
)
(get_local $17)
)
@@ -7167,7 +7090,7 @@
(get_local $10)
(block
(set_local $7
- (set_local $8
+ (tee_local $8
(select
(get_local $9)
(get_local $7)
@@ -7178,7 +7101,7 @@
)
)
)
- (loop $while-out$108 $while-in$109
+ (loop $while-out$114 $while-in$115
(set_local $5
(call $_fmt_u
(i32.load
@@ -7188,7 +7111,7 @@
(get_local $45)
)
)
- (block $do-once$110
+ (block $do-once$116
(if
(i32.eq
(get_local $7)
@@ -7200,7 +7123,7 @@
(get_local $5)
(get_local $45)
)
- (br $do-once$110)
+ (br $do-once$116)
)
(i32.store8
(get_local $53)
@@ -7212,16 +7135,15 @@
)
(block
(if
- (i32.gt_u
+ (i32.le_u
(get_local $5)
(get_local $29)
)
- (get_local $5)
- (br $do-once$110)
+ (br $do-once$116)
)
- (loop $while-out$112 $while-in$113
+ (loop $while-out$118 $while-in$119
(i32.store8
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const -1)
@@ -7230,14 +7152,13 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $5)
(get_local $29)
)
- (get_local $5)
- (br $while-out$112)
+ (br $while-out$118)
)
- (br $while-in$113)
+ (br $while-in$119)
)
)
)
@@ -7263,7 +7184,7 @@
)
(if
(i32.gt_u
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $7)
(i32.const 4)
@@ -7275,20 +7196,19 @@
(set_local $5
(get_local $7)
)
- (br $while-out$108)
+ (br $while-out$114)
)
- (get_local $7)
)
- (br $while-in$109)
+ (br $while-in$115)
)
- (block $do-once$114
+ (block $do-once$120
(if
(i32.ne
(get_local $1)
(i32.const 0)
)
(block
- (br_if $do-once$114
+ (br_if $do-once$120
(i32.ne
(i32.and
(i32.load
@@ -7310,7 +7230,7 @@
(if
(i32.and
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 0)
)
(i32.lt_u
@@ -7318,10 +7238,10 @@
(get_local $23)
)
)
- (loop $while-out$116 $while-in$117
+ (loop $while-out$122 $while-in$123
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(call $_fmt_u
(i32.load
(get_local $5)
@@ -7332,9 +7252,9 @@
)
(get_local $29)
)
- (loop $while-out$118 $while-in$119
+ (loop $while-out$124 $while-in$125
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -7343,16 +7263,14 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $1)
(get_local $29)
)
- (get_local $1)
- (br $while-out$118)
+ (br $while-out$124)
)
- (br $while-in$119)
+ (br $while-in$125)
)
- (get_local $1)
)
(if
(i32.eq
@@ -7368,9 +7286,9 @@
(get_local $1)
(select
(i32.const 9)
- (get_local $14)
+ (get_local $15)
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
)
@@ -7379,18 +7297,18 @@
)
(set_local $1
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const -9)
)
)
(if
(i32.and
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 4)
@@ -7399,25 +7317,24 @@
(get_local $23)
)
)
- (set_local $14
+ (set_local $15
(get_local $1)
)
(block
- (set_local $14
+ (set_local $15
(get_local $1)
)
- (br $while-out$116)
+ (br $while-out$122)
)
)
- (br $while-in$117)
+ (br $while-in$123)
)
- (get_local $14)
)
(call $_pad
(get_local $0)
(i32.const 48)
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const 9)
)
(i32.const 9)
@@ -7437,7 +7354,7 @@
)
(if
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(i32.const -1)
)
(block
@@ -7450,11 +7367,11 @@
(set_local $5
(get_local $7)
)
- (loop $while-out$120 $while-in$121
+ (loop $while-out$108 $while-in$109
(set_local $8
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(call $_fmt_u
(i32.load
(get_local $5)
@@ -7475,7 +7392,7 @@
(get_local $1)
)
)
- (block $do-once$122
+ (block $do-once$110
(if
(i32.eq
(get_local $5)
@@ -7508,11 +7425,11 @@
(i32.and
(get_local $9)
(i32.lt_s
- (get_local $14)
+ (get_local $15)
(i32.const 1)
)
)
- (br $do-once$122)
+ (br $do-once$110)
)
(if
(i32.ne
@@ -7524,7 +7441,7 @@
)
(i32.const 0)
)
- (br $do-once$122)
+ (br $do-once$110)
)
(call $___fwritex
(i32.const 4143)
@@ -7545,12 +7462,12 @@
(set_local $1
(get_local $8)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (loop $while-out$124 $while-in$125
+ (loop $while-out$112 $while-in$113
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -7559,14 +7476,13 @@
(i32.const 48)
)
(if
- (i32.gt_u
+ (i32.le_u
(get_local $1)
(get_local $29)
)
- (get_local $1)
- (br $while-out$124)
+ (br $while-out$112)
)
- (br $while-in$125)
+ (br $while-in$113)
)
)
)
@@ -7591,9 +7507,9 @@
(get_local $1)
(select
(get_local $8)
- (get_local $14)
+ (get_local $15)
(i32.gt_s
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -7604,7 +7520,7 @@
(i32.eqz
(i32.and
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 4)
@@ -7613,9 +7529,9 @@
(get_local $11)
)
(i32.gt_s
- (set_local $14
+ (tee_local $15
(i32.sub
- (get_local $14)
+ (get_local $15)
(get_local $8)
)
)
@@ -7623,18 +7539,17 @@
)
)
)
- (br $while-out$120)
+ (br $while-out$108)
)
- (br $while-in$121)
+ (br $while-in$109)
)
)
- (get_local $14)
)
(call $_pad
(get_local $0)
(i32.const 48)
(i32.add
- (get_local $14)
+ (get_local $15)
(i32.const 18)
)
(i32.const 18)
@@ -7686,7 +7601,7 @@
(select
(i32.const 4127)
(i32.const 4131)
- (set_local $8
+ (tee_local $8
(i32.ne
(i32.and
(get_local $26)
@@ -7701,11 +7616,11 @@
(select
(i32.const 0)
(get_local $51)
- (set_local $1
+ (tee_local $1
(i32.or
(f64.ne
- (get_local $15)
- (get_local $15)
+ (get_local $14)
+ (get_local $14)
)
(i32.const 0)
)
@@ -7727,7 +7642,7 @@
(get_local $0)
(i32.const 32)
(get_local $16)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $6)
(i32.const 3)
@@ -7741,7 +7656,7 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -7751,10 +7666,12 @@
(i32.const 0)
)
(block
- (call $___fwritex
- (get_local $39)
- (get_local $6)
- (get_local $0)
+ (drop
+ (call $___fwritex
+ (get_local $39)
+ (get_local $6)
+ (get_local $0)
+ )
)
(i32.load
(get_local $0)
@@ -7835,9 +7752,9 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -7845,7 +7762,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=4
(get_local $1)
)
@@ -7875,9 +7792,9 @@
(set_local $6
(get_local $28)
)
- (loop $while-out$129 $while-in$130
+ (loop $while-out$133 $while-in$134
(i32.store8
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $6)
(i32.const -1)
@@ -7905,7 +7822,7 @@
(if
(i32.and
(i32.eq
- (set_local $5
+ (tee_local $5
(call $_bitshift64Lshr
(get_local $5)
(get_local $1)
@@ -7915,7 +7832,7 @@
(i32.const 0)
)
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 168)
)
@@ -7923,9 +7840,9 @@
(i32.const 0)
)
)
- (br $while-out$129)
+ (br $while-out$133)
)
- (br $while-in$130)
+ (br $while-in$134)
)
(if
(i32.or
@@ -7939,7 +7856,7 @@
(i32.and
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -8040,7 +7957,7 @@
)
(set_local $5
(i32.eq
- (set_local $1
+ (tee_local $1
(call $_memchr
(get_local $50)
(i32.const 0)
@@ -8103,22 +8020,22 @@
(get_local $19)
)
)
- (loop $while-out$131 $while-in$132
+ (loop $while-out$129 $while-in$130
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $6)
)
)
(i32.const 0)
)
- (br $while-out$131)
+ (br $while-out$129)
)
(if
(i32.or
(i32.lt_s
- (set_local $5
+ (tee_local $5
(call $_wctomb
(get_local $63)
(get_local $1)
@@ -8134,7 +8051,7 @@
)
)
)
- (br $while-out$131)
+ (br $while-out$129)
)
(set_local $6
(i32.add
@@ -8145,7 +8062,7 @@
(if
(i32.gt_u
(get_local $69)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $5)
(get_local $7)
@@ -8159,10 +8076,10 @@
(set_local $7
(get_local $1)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
- (br $while-in$132)
+ (br $while-in$130)
)
(if
(i32.lt_s
@@ -8205,10 +8122,10 @@
(get_local $19)
)
)
- (loop $while-out$133 $while-in$134
+ (loop $while-out$131 $while-in$132
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $8)
)
@@ -8233,9 +8150,9 @@
)
(if
(i32.gt_s
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $5
+ (tee_local $5
(call $_wctomb
(get_local $63)
(get_local $1)
@@ -8287,10 +8204,10 @@
(set_local $12
(i32.const 98)
)
- (br $while-out$133)
+ (br $while-out$131)
)
)
- (br $while-in$134)
+ (br $while-in$132)
)
)
)
@@ -8367,11 +8284,11 @@
(get_local $32)
(i32.const 0)
)
- (set_local $1
+ (tee_local $1
(i32.or
(i32.ne
(i32.load
- (set_local $1
+ (tee_local $1
(get_local $19)
)
)
@@ -8390,7 +8307,7 @@
(set_local $7
(i32.gt_s
(get_local $32)
- (set_local $1
+ (tee_local $1
(i32.add
(i32.xor
(i32.and
@@ -8453,7 +8370,7 @@
(set_local $1
(i32.lt_s
(get_local $42)
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $49)
(get_local $47)
@@ -8464,10 +8381,10 @@
(set_local $5
(i32.lt_s
(get_local $16)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $43)
- (set_local $6
+ (tee_local $6
(select
(get_local $7)
(get_local $42)
@@ -8481,7 +8398,7 @@
(call $_pad
(get_local $0)
(i32.const 32)
- (set_local $5
+ (tee_local $5
(select
(get_local $1)
(get_local $16)
@@ -8587,7 +8504,7 @@
(loop $while-out$136 $while-in$137
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(get_local $4)
@@ -8614,8 +8531,8 @@
(get_local $2)
)
(if
- (i32.lt_s
- (set_local $1
+ (i32.ge_s
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -8623,7 +8540,6 @@
)
(i32.const 10)
)
- (get_local $1)
(block
(set_local $24
(i32.const 1)
@@ -8704,9 +8620,6 @@
(local $3 i32)
(local $4 f64)
(local $5 i32)
- (i32.load
- (i32.const 8)
- )
(block $label$break$L1
(if
(i32.le_u
@@ -8733,7 +8646,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8761,7 +8674,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8802,7 +8715,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8834,8 +8747,8 @@
)
(set_local $5
(i32.load
- (set_local $3
- (set_local $1
+ (tee_local $3
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8873,7 +8786,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8897,7 +8810,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.and
@@ -8928,7 +8841,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8963,7 +8876,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -8987,7 +8900,7 @@
(i32.shr_s
(i32.shl
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.shr_s
(i32.shl
(i32.and
@@ -9018,7 +8931,7 @@
)
(set_local $3
(i32.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9053,7 +8966,7 @@
)
(set_local $4
(f64.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9081,7 +8994,7 @@
)
(set_local $4
(f64.load
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -9112,9 +9025,6 @@
(func $_fmt_u (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
- (i32.load
- (i32.const 8)
- )
(set_local $0
(if
(i32.or
@@ -9149,11 +9059,8 @@
(i32.const 0)
)
)
- (i32.load
- (i32.const 168)
- )
(i32.store8
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const -1)
@@ -9223,18 +9130,17 @@
)
)
(if
- (i32.eq
+ (i32.ne
(get_local $3)
(i32.const 0)
)
- (get_local $0)
(block
(set_local $1
(get_local $0)
)
(loop $while-out$2 $while-in$3
(i32.store8
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -9334,7 +9240,7 @@
(block
(set_local $4
(i32.gt_u
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $2)
(get_local $3)
@@ -9343,19 +9249,21 @@
(i32.const 256)
)
)
- (call $_memset
- (get_local $6)
- (get_local $1)
- (select
- (i32.const 256)
- (get_local $5)
- (get_local $4)
+ (drop
+ (call $_memset
+ (get_local $6)
+ (get_local $1)
+ (select
+ (i32.const 256)
+ (get_local $5)
+ (get_local $4)
+ )
)
)
(set_local $4
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -9384,14 +9292,16 @@
(set_local $4
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(if
(get_local $4)
(block
- (call $___fwritex
- (get_local $6)
- (i32.const 256)
- (get_local $0)
+ (drop
+ (call $___fwritex
+ (get_local $6)
+ (i32.const 256)
+ (get_local $0)
+ )
)
(i32.load
(get_local $0)
@@ -9407,7 +9317,7 @@
)
(if
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(i32.const -256)
@@ -9426,8 +9336,9 @@
)
)
(if
- (get_local $4)
- (get_local $1)
+ (i32.eqz
+ (get_local $4)
+ )
(br $do-once$0)
)
)
@@ -9499,9 +9410,6 @@
(local $44 i32)
(local $45 i32)
(local $46 i32)
- (i32.load
- (i32.const 8)
- )
(block $do-once$0
(if
(i32.lt_u
@@ -9512,16 +9420,16 @@
(if
(i32.ne
(i32.and
- (set_local $25
+ (tee_local $25
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 176)
)
)
- (set_local $22
+ (tee_local $22
(i32.shr_u
- (set_local $6
+ (tee_local $6
(select
(i32.const 16)
(i32.and
@@ -9549,18 +9457,18 @@
(block
(set_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
- (set_local $9
+ (tee_local $9
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $8
+ (tee_local $8
(i32.add
(i32.xor
(i32.and
@@ -9619,7 +9527,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const 12)
@@ -9645,7 +9553,7 @@
(i32.store offset=4
(get_local $1)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.shl
(get_local $8)
(i32.const 3)
@@ -9657,7 +9565,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $1)
@@ -9682,7 +9590,7 @@
(if
(i32.gt_u
(get_local $6)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 184)
)
@@ -9698,7 +9606,7 @@
(set_local $1
(i32.sub
(i32.const 0)
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 2)
(get_local $22)
@@ -9709,7 +9617,7 @@
(set_local $1
(i32.sub
(i32.const 0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shl
(get_local $25)
@@ -9726,7 +9634,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.and
(get_local $0)
@@ -9742,27 +9650,27 @@
)
(set_local $0
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $9
+ (tee_local $9
(i32.add
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $8
+ (tee_local $8
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9775,10 +9683,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -9790,10 +9698,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9805,10 +9713,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -9878,7 +9786,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 12)
@@ -9914,14 +9822,14 @@
)
)
(i32.store offset=4
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(get_local $6)
)
)
(i32.or
- (set_local $9
+ (tee_local $9
(i32.sub
(i32.shl
(get_local $8)
@@ -9956,7 +9864,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $7)
(i32.const 3)
@@ -9971,12 +9879,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -10005,9 +9913,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $8)
(i32.const 8)
@@ -10062,20 +9970,19 @@
)
)
(if
- (i32.eq
- (set_local $0
+ (i32.ne
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
(i32.const 0)
)
- (get_local $6)
(block
(set_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.add
(i32.and
(get_local $0)
@@ -10096,7 +10003,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $0
+ (tee_local $0
(i32.load offset=480
(i32.shl
(i32.add
@@ -10104,10 +10011,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10120,10 +10027,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $2)
(get_local $1)
@@ -10135,10 +10042,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10150,10 +10057,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(get_local $0)
@@ -10186,10 +10093,10 @@
(set_local $8
(get_local $0)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=16
(get_local $4)
)
@@ -10198,7 +10105,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $4)
)
@@ -10212,7 +10119,7 @@
(set_local $10
(get_local $8)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $1
(get_local $0)
@@ -10224,7 +10131,7 @@
)
(set_local $0
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(i32.and
(i32.load offset=4
@@ -10255,12 +10162,12 @@
(get_local $0)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $10)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -10271,7 +10178,7 @@
(if
(i32.ge_u
(get_local $10)
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $10)
(get_local $6)
@@ -10285,10 +10192,10 @@
(get_local $10)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $10)
)
@@ -10298,9 +10205,9 @@
(block
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $10)
(i32.const 20)
@@ -10312,9 +10219,9 @@
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $10)
(i32.const 16)
@@ -10328,7 +10235,7 @@
(set_local $15
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(set_local $4
(get_local $2)
@@ -10338,12 +10245,12 @@
(get_local $2)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(i32.const 20)
@@ -10360,14 +10267,14 @@
(set_local $8
(get_local $5)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $4)
(i32.const 16)
@@ -10377,7 +10284,7 @@
)
(i32.const 0)
)
- (br $while-out$10)
+ (br $while-out$27)
(block
(set_local $4
(get_local $2)
@@ -10387,7 +10294,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -10409,7 +10316,7 @@
(block
(if
(i32.lt_u
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $10)
)
@@ -10421,7 +10328,7 @@
(if
(i32.ne
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 12)
@@ -10435,7 +10342,7 @@
(if
(i32.eq
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 8)
@@ -10462,7 +10369,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(i32.ne
(get_local $1)
@@ -10473,11 +10380,11 @@
(i32.eq
(get_local $10)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
(get_local $10)
)
@@ -10514,7 +10421,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -10531,7 +10438,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 16)
@@ -10549,7 +10456,7 @@
(get_local $15)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eq
(get_local $15)
(i32.const 0)
@@ -10560,7 +10467,7 @@
(if
(i32.lt_u
(get_local $15)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -10574,7 +10481,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $10)
)
@@ -10601,7 +10508,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $10)
)
@@ -10640,7 +10547,7 @@
(i32.store offset=4
(get_local $10)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $7)
(get_local $6)
@@ -10652,7 +10559,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $10)
@@ -10694,7 +10601,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 184)
)
@@ -10712,7 +10619,7 @@
(i32.const 216)
(i32.shl
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $0)
(i32.const 3)
@@ -10727,12 +10634,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -10761,9 +10668,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 8)
@@ -10823,7 +10730,6 @@
)
)
)
- (get_local $6)
)
)
(if
@@ -10837,7 +10743,7 @@
(block
(set_local $5
(i32.and
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 11)
@@ -10848,7 +10754,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
@@ -10868,13 +10774,13 @@
(block $label$break$L123
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=480
(i32.shl
- (set_local $12
+ (tee_local $12
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -10892,20 +10798,20 @@
(block
(set_local $7
(i32.shl
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $12
+ (tee_local $12
(i32.shl
(get_local $3)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -10928,11 +10834,11 @@
)
(get_local $3)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $12)
(get_local $7)
@@ -11028,12 +10934,12 @@
(set_local $36
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $16
+ (tee_local $16
(i32.sub
- (set_local $3
+ (tee_local $3
(i32.and
(i32.load offset=4
(get_local $23)
@@ -11076,7 +10982,7 @@
)
(set_local $7
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=20
(get_local $23)
)
@@ -11092,7 +10998,7 @@
(get_local $7)
(i32.eq
(get_local $3)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.add
(i32.add
@@ -11118,7 +11024,7 @@
(get_local $11)
(i32.xor
(i32.and
- (set_local $7
+ (tee_local $7
(i32.eq
(get_local $3)
(i32.const 0)
@@ -11145,7 +11051,7 @@
(set_local $11
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $7
@@ -11156,7 +11062,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -11168,7 +11074,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -11184,7 +11090,7 @@
(set_local $7
(i32.sub
(i32.const 0)
- (set_local $3
+ (tee_local $3
(i32.shl
(i32.const 2)
(get_local $12)
@@ -11194,7 +11100,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
(get_local $0)
(i32.or
@@ -11215,7 +11121,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.add
(i32.and
(get_local $0)
@@ -11239,10 +11145,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $7
+ (tee_local $7
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11255,10 +11161,10 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $7)
(get_local $3)
@@ -11270,10 +11176,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11285,10 +11191,10 @@
)
)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $3)
(get_local $0)
@@ -11343,13 +11249,13 @@
(get_local $11)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $11
(i32.const 0)
)
(set_local $0
(i32.lt_u
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.and
(i32.load offset=4
@@ -11379,7 +11285,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=16
(get_local $24)
)
@@ -11396,12 +11302,12 @@
(set_local $29
(get_local $3)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $24)
)
@@ -11412,7 +11318,7 @@
(set_local $13
(get_local $3)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $26
@@ -11426,7 +11332,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -11451,7 +11357,7 @@
(if
(i32.lt_u
(get_local $13)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -11462,7 +11368,7 @@
(if
(i32.ge_u
(get_local $13)
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $13)
(get_local $5)
@@ -11476,10 +11382,10 @@
(get_local $13)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $13)
)
@@ -11489,9 +11395,9 @@
(block
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $13)
(i32.const 20)
@@ -11503,9 +11409,9 @@
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $13)
(i32.const 16)
@@ -11519,7 +11425,7 @@
(set_local $6
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(set_local $8
(get_local $2)
@@ -11529,12 +11435,12 @@
(get_local $2)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
(i32.ne
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 20)
@@ -11551,14 +11457,14 @@
(set_local $9
(get_local $7)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 16)
@@ -11568,7 +11474,7 @@
)
(i32.const 0)
)
- (br $while-out$23)
+ (br $while-out$9)
(block
(set_local $8
(get_local $2)
@@ -11578,7 +11484,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -11600,7 +11506,7 @@
(block
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load offset=8
(get_local $13)
)
@@ -11612,7 +11518,7 @@
(if
(i32.ne
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 12)
@@ -11626,7 +11532,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $2)
(i32.const 8)
@@ -11653,7 +11559,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(i32.ne
(get_local $1)
@@ -11664,11 +11570,11 @@
(i32.eq
(get_local $13)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
(get_local $13)
)
@@ -11705,7 +11611,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -11722,7 +11628,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 16)
@@ -11740,7 +11646,7 @@
(get_local $6)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eq
(get_local $6)
(i32.const 0)
@@ -11751,7 +11657,7 @@
(if
(i32.lt_u
(get_local $6)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -11765,7 +11671,7 @@
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=16
(get_local $13)
)
@@ -11792,7 +11698,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=20
(get_local $13)
)
@@ -11822,7 +11728,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $17)
@@ -11832,7 +11738,7 @@
(i32.store offset=4
(get_local $13)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $17)
(get_local $5)
@@ -11844,7 +11750,7 @@
(set_local $1
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $13)
@@ -11911,12 +11817,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -11945,9 +11851,9 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -11986,17 +11892,17 @@
(get_local $3)
(get_local $2)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $17)
(i32.const 8)
@@ -12014,20 +11920,20 @@
(block
(set_local $1
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -12050,11 +11956,11 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $2)
(get_local $1)
@@ -12107,7 +12013,7 @@
(get_local $1)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const 16)
@@ -12122,12 +12028,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $1)
@@ -12160,7 +12066,7 @@
(get_local $3)
(get_local $3)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $1
@@ -12187,7 +12093,7 @@
(get_local $2)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -12205,7 +12111,7 @@
(set_local $11
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $4
@@ -12216,9 +12122,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $2)
@@ -12247,7 +12153,7 @@
(set_local $11
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $1
@@ -12258,7 +12164,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -12300,9 +12206,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $22)
(i32.const 8)
@@ -12310,7 +12216,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -12370,7 +12276,7 @@
)
(if
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 184)
)
@@ -12385,7 +12291,7 @@
)
(if
(i32.gt_u
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -12396,7 +12302,7 @@
(block
(i32.store
(i32.const 196)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(get_local $6)
@@ -12448,7 +12354,7 @@
(set_local $2
(i32.or
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $1)
@@ -12477,7 +12383,7 @@
)
(if
(i32.gt_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 188)
)
@@ -12487,7 +12393,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -12496,9 +12402,9 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -12540,7 +12446,7 @@
(i32.eq
(i32.and
(i32.add
- (set_local $0
+ (tee_local $0
(call_import $_sysconf
(i32.const 30)
)
@@ -12600,16 +12506,16 @@
)
(if
(i32.le_u
- (set_local $10
+ (tee_local $10
(i32.and
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 656)
)
)
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $6)
(i32.const 47)
@@ -12617,7 +12523,7 @@
)
)
)
- (set_local $12
+ (tee_local $12
(i32.sub
(i32.const 0)
(get_local $0)
@@ -12633,7 +12539,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 616)
)
@@ -12643,9 +12549,9 @@
(if
(i32.or
(i32.le_u
- (set_local $3
+ (tee_local $3
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 608)
)
@@ -12667,7 +12573,7 @@
)
(if
(i32.eq
- (set_local $11
+ (tee_local $11
(block $label$break$L257
(if
(i32.eq
@@ -12683,7 +12589,7 @@
(block $label$break$L259
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -12700,7 +12606,7 @@
(loop $while-out$37 $while-in$38
(if
(i32.le_u
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $16)
)
@@ -12712,7 +12618,7 @@
(i32.add
(get_local $4)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $16)
(i32.const 4)
@@ -12735,7 +12641,7 @@
)
(if
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $16)
)
@@ -12756,7 +12662,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.and
(i32.sub
(get_local $7)
@@ -12771,7 +12677,7 @@
)
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(call_import $_sbrk
(get_local $0)
)
@@ -12806,7 +12712,7 @@
(set_local $30
(get_local $3)
)
- (set_local $20
+ (set_local $21
(get_local $0)
)
(set_local $11
@@ -12826,7 +12732,7 @@
)
(if
(i32.ne
- (set_local $7
+ (tee_local $7
(call_import $_sbrk
(i32.const 0)
)
@@ -12836,18 +12742,18 @@
(block
(set_local $4
(i32.add
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 608)
)
)
- (set_local $12
+ (tee_local $12
(if
(i32.eq
(i32.and
- (set_local $12
+ (tee_local $12
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 652)
)
@@ -12855,7 +12761,7 @@
(i32.const -1)
)
)
- (set_local $0
+ (tee_local $0
(get_local $7)
)
)
@@ -12896,7 +12802,7 @@
(block
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 616)
)
@@ -12918,7 +12824,7 @@
)
(if
(i32.eq
- (set_local $30
+ (tee_local $30
(call_import $_sbrk
(get_local $12)
)
@@ -12937,7 +12843,7 @@
)
)
(block
- (set_local $20
+ (set_local $21
(get_local $12)
)
(set_local $11
@@ -12961,18 +12867,18 @@
(set_local $4
(i32.sub
(i32.const 0)
- (get_local $20)
+ (get_local $21)
)
)
(if
(i32.and
(i32.gt_u
(get_local $5)
- (get_local $20)
+ (get_local $21)
)
(i32.and
(i32.lt_u
- (get_local $20)
+ (get_local $21)
(i32.const 2147483647)
)
(i32.ne
@@ -12983,14 +12889,14 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.and
(i32.add
(i32.sub
(get_local $15)
- (get_local $20)
+ (get_local $21)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 656)
)
@@ -13012,21 +12918,21 @@
(i32.const -1)
)
(block
- (call_import $_sbrk
- (get_local $4)
+ (drop
+ (call_import $_sbrk
+ (get_local $4)
+ )
)
(br $label$break$L279)
)
- (set_local $20
+ (set_local $21
(i32.add
(get_local $0)
- (get_local $20)
+ (get_local $21)
)
)
)
- (get_local $20)
)
- (get_local $20)
)
(if
(i32.ne
@@ -13038,7 +12944,7 @@
(get_local $30)
)
(set_local $19
- (get_local $20)
+ (get_local $21)
)
(br $label$break$L257
(i32.const 193)
@@ -13074,7 +12980,7 @@
(set_local $3
(i32.and
(i32.ne
- (set_local $0
+ (tee_local $0
(call_import $_sbrk
(get_local $10)
)
@@ -13082,7 +12988,7 @@
(i32.const -1)
)
(i32.ne
- (set_local $4
+ (tee_local $4
(call_import $_sbrk
(i32.const 0)
)
@@ -13101,7 +13007,7 @@
)
(if
(i32.gt_u
- (set_local $4
+ (tee_local $4
(i32.sub
(get_local $4)
(get_local $0)
@@ -13136,7 +13042,7 @@
(block
(i32.store
(i32.const 608)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 608)
@@ -13160,7 +13066,7 @@
(block $do-once$44
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -13171,7 +13077,7 @@
(if
(i32.or
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -13213,9 +13119,9 @@
(set_local $1
(i32.const 0)
)
- (loop $while-out$46 $while-in$47
+ (loop $while-out$77 $while-in$78
(i32.store offset=12
- (set_local $0
+ (tee_local $0
(i32.add
(i32.const 216)
(i32.shl
@@ -13235,7 +13141,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -13243,15 +13149,14 @@
)
(i32.const 32)
)
- (br $while-out$46)
- (get_local $1)
+ (br $while-out$77)
)
- (br $while-in$47)
+ (br $while-in$78)
)
(set_local $1
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $14)
(i32.const 8)
@@ -13264,10 +13169,10 @@
)
(i32.store
(i32.const 200)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $14)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
@@ -13285,7 +13190,7 @@
)
(i32.store
(i32.const 188)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.add
(get_local $19)
@@ -13320,19 +13225,19 @@
(set_local $7
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(get_local $14)
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $7)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 4)
@@ -13358,24 +13263,24 @@
(set_local $11
(i32.const 203)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(if
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load offset=8
(get_local $7)
)
)
(i32.const 0)
)
- (br $while-out$48)
+ (br $while-out$46)
(set_local $7
(get_local $4)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -13414,7 +13319,7 @@
(set_local $2
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 8)
@@ -13428,7 +13333,7 @@
(set_local $0
(i32.add
(get_local $0)
- (set_local $1
+ (tee_local $1
(select
(i32.const 0)
(i32.and
@@ -13491,7 +13396,7 @@
(if
(i32.lt_u
(get_local $14)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -13516,7 +13421,7 @@
(set_local $1
(i32.const 624)
)
- (loop $while-out$50 $while-in$51
+ (loop $while-out$48 $while-in$49
(if
(i32.eq
(i32.load
@@ -13534,12 +13439,12 @@
(set_local $11
(i32.const 211)
)
- (br $while-out$50)
+ (br $while-out$48)
)
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -13550,11 +13455,10 @@
(set_local $27
(i32.const 624)
)
- (br $while-out$50)
+ (br $while-out$48)
)
- (get_local $1)
)
- (br $while-in$51)
+ (br $while-in$49)
)
(if
(i32.eq
@@ -13579,7 +13483,7 @@
(set_local $1
(i32.add
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $38)
(i32.const 4)
@@ -13596,7 +13500,7 @@
(set_local $9
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
(i32.const 8)
@@ -13610,7 +13514,7 @@
(set_local $5
(i32.eq
(i32.and
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $3)
(i32.const 8)
@@ -13623,7 +13527,7 @@
)
(set_local $1
(i32.sub
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $3)
(select
@@ -13639,7 +13543,7 @@
)
)
)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $14)
(select
@@ -13676,7 +13580,7 @@
(i32.const 3)
)
)
- (block $do-once$52
+ (block $do-once$50
(if
(i32.eq
(get_local $3)
@@ -13685,7 +13589,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 188)
@@ -13717,7 +13621,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 184)
@@ -13744,18 +13648,18 @@
)
(get_local $0)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $0
(i32.and
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $3)
)
@@ -13789,15 +13693,15 @@
(get_local $3)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $3)
)
)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 216)
(i32.shl
@@ -13818,7 +13722,7 @@
)
(call_import $_abort)
)
- (br_if $do-once$55
+ (br_if $do-once$61
(i32.eq
(i32.load offset=12
(get_local $0)
@@ -13854,7 +13758,7 @@
(br $label$break$L331)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(i32.eq
(get_local $1)
@@ -13877,7 +13781,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 8)
@@ -13890,7 +13794,7 @@
(set_local $39
(get_local $2)
)
- (br $do-once$57)
+ (br $do-once$63)
)
)
(call_import $_abort)
@@ -13912,10 +13816,10 @@
(get_local $3)
)
)
- (block $do-once$59
+ (block $do-once$53
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $3)
)
@@ -13925,11 +13829,11 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $3)
(i32.const 16)
@@ -13944,9 +13848,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
(i32.const 0)
@@ -13955,14 +13859,14 @@
(set_local $18
(i32.const 0)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(block
(set_local $2
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
)
)
@@ -13970,12 +13874,12 @@
(get_local $1)
)
)
- (loop $while-out$61 $while-in$62
+ (loop $while-out$55 $while-in$56
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $2)
(i32.const 20)
@@ -13990,16 +13894,16 @@
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
- (br $while-in$62)
+ (br $while-in$56)
)
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $21
+ (tee_local $20
(i32.add
(get_local $2)
(i32.const 16)
@@ -14009,17 +13913,17 @@
)
(i32.const 0)
)
- (br $while-out$61)
+ (br $while-out$55)
(block
(set_local $2
(get_local $1)
)
(set_local $9
- (get_local $21)
+ (get_local $20)
)
)
)
- (br $while-in$62)
+ (br $while-in$56)
)
(if
(i32.lt_u
@@ -14041,7 +13945,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $3)
)
@@ -14053,7 +13957,7 @@
(if
(i32.ne
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const 12)
@@ -14067,7 +13971,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $1)
(i32.const 8)
@@ -14100,16 +14004,16 @@
(i32.const 0)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(i32.eq
(get_local $3)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $3)
)
@@ -14125,7 +14029,7 @@
(get_local $2)
(get_local $18)
)
- (br_if $do-once$63
+ (br_if $do-once$57
(i32.ne
(get_local $18)
(i32.const 0)
@@ -14161,7 +14065,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -14191,7 +14095,7 @@
(if
(i32.lt_u
(get_local $18)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -14205,9 +14109,9 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $3)
(i32.const 16)
@@ -14237,7 +14141,7 @@
)
(br_if $label$break$L331
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -14334,16 +14238,16 @@
)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -14373,9 +14277,9 @@
(block
(if
(i32.ge_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -14394,7 +14298,7 @@
(set_local $33
(get_local $1)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(call_import $_abort)
@@ -14417,18 +14321,18 @@
(get_local $5)
(get_local $2)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
- (block $do-once$69
+ (tee_local $1
+ (block $do-once$67
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $4)
(i32.const 8)
@@ -14438,7 +14342,7 @@
)
(i32.const 0)
(block
- (br_if $do-once$69
+ (br_if $do-once$67
(i32.const 31)
(i32.gt_u
(get_local $4)
@@ -14447,20 +14351,20 @@
)
(set_local $1
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -14483,11 +14387,11 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $2)
(get_local $1)
@@ -14540,7 +14444,7 @@
(get_local $1)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 16)
@@ -14555,12 +14459,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $1)
@@ -14593,7 +14497,7 @@
(get_local $5)
(get_local $5)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $1
@@ -14620,7 +14524,7 @@
(get_local $2)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(if
(i32.eq
(i32.and
@@ -14638,7 +14542,7 @@
(set_local $11
(i32.const 281)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
(set_local $8
@@ -14649,9 +14553,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.add
(get_local $2)
@@ -14680,7 +14584,7 @@
(set_local $11
(i32.const 278)
)
- (br $while-out$71)
+ (br $while-out$69)
)
(block
(set_local $1
@@ -14691,7 +14595,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(if
(i32.eq
@@ -14733,9 +14637,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $34)
(i32.const 8)
@@ -14743,7 +14647,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -14795,10 +14699,10 @@
)
)
)
- (loop $while-out$73 $while-in$74
+ (loop $while-out$71 $while-in$72
(if
(i32.le_u
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $27)
)
@@ -14807,7 +14711,7 @@
)
(if
(i32.gt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.load offset=4
@@ -14821,7 +14725,7 @@
(set_local $2
(get_local $1)
)
- (br $while-out$73)
+ (br $while-out$71)
)
)
)
@@ -14830,14 +14734,14 @@
(get_local $27)
)
)
- (br $while-in$74)
+ (br $while-in$72)
)
(set_local $8
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $2)
(i32.const -47)
@@ -14853,7 +14757,7 @@
)
(set_local $4
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(select
@@ -14869,7 +14773,7 @@
)
)
)
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $0)
(i32.const 16)
@@ -14879,7 +14783,7 @@
)
(set_local $4
(i32.add
- (set_local $5
+ (tee_local $5
(select
(get_local $0)
(get_local $1)
@@ -14892,7 +14796,7 @@
(set_local $3
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
(i32.const 8)
@@ -14905,10 +14809,10 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $14)
- (set_local $3
+ (tee_local $3
(select
(i32.const 0)
(i32.and
@@ -14926,7 +14830,7 @@
)
(i32.store
(i32.const 188)
- (set_local $3
+ (tee_local $3
(i32.sub
(i32.add
(get_local $19)
@@ -14957,7 +14861,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $5)
(i32.const 4)
@@ -15011,9 +14915,9 @@
(i32.const 24)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 4)
@@ -15022,17 +14926,16 @@
(i32.const 7)
)
(if
- (i32.lt_u
+ (i32.ge_u
(i32.add
(get_local $1)
(i32.const 4)
)
(get_local $2)
)
- (get_local $1)
- (br $while-out$75)
+ (br $while-out$73)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.ne
@@ -15052,7 +14955,7 @@
(i32.store offset=4
(get_local $0)
(i32.or
- (set_local $3
+ (tee_local $3
(i32.sub
(get_local $5)
(get_local $0)
@@ -15092,12 +14995,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 176)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $2)
@@ -15120,15 +15023,15 @@
(i32.const 8)
)
)
- (set_local $21
+ (set_local $20
(get_local $4)
)
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $4)
(i32.const 8)
@@ -15145,7 +15048,7 @@
(set_local $9
(get_local $1)
)
- (set_local $21
+ (set_local $20
(get_local $2)
)
)
@@ -15156,12 +15059,12 @@
(get_local $0)
)
(i32.store offset=12
- (get_local $21)
+ (get_local $20)
(get_local $0)
)
(i32.store offset=8
(get_local $0)
- (get_local $21)
+ (get_local $20)
)
(i32.store offset=12
(get_local $0)
@@ -15174,10 +15077,10 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $2
+ (tee_local $2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -15195,20 +15098,20 @@
(block
(set_local $2
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $1)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
@@ -15231,11 +15134,11 @@
)
(get_local $1)
)
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $2
+ (tee_local $2
(i32.shl
(get_local $4)
(get_local $2)
@@ -15298,12 +15201,12 @@
(if
(i32.eq
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 180)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $2)
@@ -15363,7 +15266,7 @@
(get_local $4)
)
)
- (loop $while-out$77 $while-in$78
+ (loop $while-out$75 $while-in$76
(if
(i32.eq
(i32.and
@@ -15381,7 +15284,7 @@
(set_local $11
(i32.const 307)
)
- (br $while-out$77)
+ (br $while-out$75)
)
)
(set_local $8
@@ -15392,9 +15295,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $4)
@@ -15423,7 +15326,7 @@
(set_local $11
(i32.const 304)
)
- (br $while-out$77)
+ (br $while-out$75)
)
(block
(set_local $2
@@ -15434,7 +15337,7 @@
)
)
)
- (br $while-in$78)
+ (br $while-in$76)
)
(if
(i32.eq
@@ -15476,9 +15379,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $35)
(i32.const 8)
@@ -15486,7 +15389,7 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 192)
)
@@ -15530,7 +15433,7 @@
)
(if
(i32.gt_u
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 188)
)
@@ -15540,7 +15443,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $2
+ (tee_local $2
(i32.sub
(get_local $0)
(get_local $6)
@@ -15549,9 +15452,9 @@
)
(i32.store
(i32.const 200)
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 200)
)
@@ -15609,9 +15512,6 @@
(local $16 i32)
(local $17 i32)
(local $18 i32)
- (i32.load
- (i32.const 8)
- )
(if
(i32.eq
(get_local $0)
@@ -15621,13 +15521,13 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -15637,9 +15537,9 @@
)
(if
(i32.eq
- (set_local $8
+ (tee_local $8
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(get_local $0)
@@ -15657,7 +15557,7 @@
(set_local $9
(i32.add
(get_local $2)
- (set_local $7
+ (tee_local $7
(i32.and
(get_local $0)
(i32.const -8)
@@ -15695,7 +15595,7 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $4
(i32.add
(get_local $2)
(i32.sub
@@ -15710,7 +15610,7 @@
)
(if
(i32.eq
- (get_local $6)
+ (get_local $4)
(i32.load
(i32.const 196)
)
@@ -15719,9 +15619,9 @@
(if
(i32.ne
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 4)
@@ -15735,7 +15635,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15755,7 +15655,7 @@
)
)
(i32.store offset=4
- (get_local $6)
+ (get_local $4)
(i32.or
(get_local $12)
(i32.const 1)
@@ -15763,7 +15663,7 @@
)
(i32.store
(i32.add
- (get_local $6)
+ (get_local $4)
(get_local $12)
)
(get_local $12)
@@ -15785,17 +15685,17 @@
(block
(set_local $2
(i32.load offset=12
- (get_local $6)
+ (get_local $4)
)
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
- (get_local $6)
+ (get_local $4)
)
)
- (set_local $8
+ (tee_local $8
(i32.add
(i32.const 216)
(i32.shl
@@ -15821,7 +15721,7 @@
(i32.load offset=12
(get_local $0)
)
- (get_local $6)
+ (get_local $4)
)
(call_import $_abort)
)
@@ -15849,7 +15749,7 @@
)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15879,14 +15779,14 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 8)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(set_local $13
(get_local $1)
@@ -15904,7 +15804,7 @@
(get_local $0)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -15914,29 +15814,29 @@
)
(set_local $8
(i32.load offset=24
- (get_local $6)
+ (get_local $4)
)
)
(block $do-once$2
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=12
- (get_local $6)
+ (get_local $4)
)
)
- (get_local $6)
+ (get_local $4)
)
(block
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $13
+ (tee_local $13
(i32.add
- (get_local $6)
+ (get_local $4)
(i32.const 16)
)
)
@@ -15949,7 +15849,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $13)
)
@@ -15957,7 +15857,7 @@
(i32.const 0)
)
(block
- (set_local $4
+ (set_local $5
(i32.const 0)
)
(br $do-once$2)
@@ -15978,9 +15878,9 @@
(loop $while-out$4 $while-in$5
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $2)
(i32.const 20)
@@ -16002,9 +15902,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $2)
(i32.const 16)
@@ -16037,7 +15937,7 @@
(get_local $7)
(i32.const 0)
)
- (set_local $4
+ (set_local $5
(get_local $2)
)
)
@@ -16046,9 +15946,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
- (get_local $6)
+ (get_local $4)
)
)
(get_local $1)
@@ -16058,28 +15958,28 @@
(if
(i32.ne
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 12)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(call_import $_abort)
)
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $0)
(i32.const 8)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(block
(i32.store
@@ -16090,7 +15990,7 @@
(get_local $7)
(get_local $2)
)
- (set_local $4
+ (set_local $5
(get_local $0)
)
)
@@ -16106,7 +16006,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16115,15 +16015,15 @@
(block
(if
(i32.eq
- (get_local $6)
+ (get_local $4)
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(i32.const 480)
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.load offset=28
- (get_local $6)
+ (get_local $4)
)
)
(i32.const 2)
@@ -16135,11 +16035,11 @@
(block
(i32.store
(get_local $1)
- (get_local $4)
+ (get_local $5)
)
(if
(i32.eq
- (get_local $4)
+ (get_local $5)
(i32.const 0)
)
(block
@@ -16159,7 +16059,7 @@
)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16181,32 +16081,32 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(i32.const 16)
)
)
)
- (get_local $6)
+ (get_local $4)
)
(i32.store
(get_local $0)
- (get_local $4)
+ (get_local $5)
)
(i32.store offset=20
(get_local $8)
- (get_local $4)
+ (get_local $5)
)
)
(if
(i32.eq
- (get_local $4)
+ (get_local $5)
(i32.const 0)
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16218,8 +16118,8 @@
)
(if
(i32.lt_u
- (get_local $4)
- (set_local $0
+ (get_local $5)
+ (tee_local $0
(i32.load
(i32.const 192)
)
@@ -16228,16 +16128,16 @@
(call_import $_abort)
)
(i32.store offset=24
- (get_local $4)
+ (get_local $5)
(get_local $8)
)
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
- (get_local $6)
+ (get_local $4)
(i32.const 16)
)
)
@@ -16253,19 +16153,19 @@
(call_import $_abort)
(block
(i32.store offset=16
- (get_local $4)
+ (get_local $5)
(get_local $1)
)
(i32.store offset=24
(get_local $1)
- (get_local $4)
+ (get_local $5)
)
)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -16274,7 +16174,7 @@
)
(block
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16290,15 +16190,15 @@
(call_import $_abort)
(block
(i32.store offset=20
- (get_local $4)
+ (get_local $5)
(get_local $0)
)
(i32.store offset=24
(get_local $0)
- (get_local $4)
+ (get_local $5)
)
(set_local $3
- (get_local $6)
+ (get_local $4)
)
(set_local $10
(get_local $12)
@@ -16329,9 +16229,9 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 4)
@@ -16364,7 +16264,7 @@
(block
(i32.store
(i32.const 188)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 188)
@@ -16414,7 +16314,7 @@
(block
(i32.store
(i32.const 184)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 184)
@@ -16444,7 +16344,7 @@
(return)
)
)
- (set_local $4
+ (set_local $5
(i32.add
(i32.and
(get_local $0)
@@ -16473,12 +16373,12 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=8
(get_local $9)
)
)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 216)
(i32.shl
@@ -16560,7 +16460,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 8)
@@ -16594,7 +16494,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $9)
)
@@ -16604,11 +16504,11 @@
(block
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $9)
(i32.const 16)
@@ -16623,7 +16523,7 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $7)
)
@@ -16652,9 +16552,9 @@
(loop $while-out$12 $while-in$13
(if
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $2)
(i32.const 20)
@@ -16676,9 +16576,9 @@
)
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $2)
(i32.const 16)
@@ -16722,7 +16622,7 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load offset=8
(get_local $9)
)
@@ -16736,7 +16636,7 @@
(if
(i32.ne
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $2)
(i32.const 12)
@@ -16750,7 +16650,7 @@
(if
(i32.eq
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $1)
(i32.const 8)
@@ -16787,11 +16687,11 @@
(i32.eq
(get_local $9)
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.const 480)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $9)
)
@@ -16845,7 +16745,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -16874,7 +16774,7 @@
(if
(i32.lt_u
(get_local $11)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 192)
)
@@ -16888,9 +16788,9 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $9)
(i32.const 16)
@@ -16920,7 +16820,7 @@
)
(if
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $2)
)
@@ -16955,16 +16855,16 @@
(i32.store offset=4
(get_local $3)
(i32.or
- (get_local $4)
+ (get_local $5)
(i32.const 1)
)
)
(i32.store
(i32.add
(get_local $3)
- (get_local $4)
+ (get_local $5)
)
- (get_local $4)
+ (get_local $5)
)
(if
(i32.eq
@@ -16976,11 +16876,10 @@
(block
(i32.store
(i32.const 184)
- (get_local $4)
+ (get_local $5)
)
(return)
)
- (get_local $4)
)
)
(block
@@ -17005,20 +16904,20 @@
)
(get_local $10)
)
- (set_local $4
+ (set_local $5
(get_local $10)
)
)
)
(set_local $1
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.const 3)
)
)
(if
(i32.lt_u
- (get_local $4)
+ (get_local $5)
(i32.const 256)
)
(block
@@ -17037,12 +16936,12 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 176)
)
)
- (set_local $1
+ (tee_local $1
(i32.shl
(i32.const 1)
(get_local $1)
@@ -17059,7 +16958,7 @@
(get_local $1)
)
)
- (set_local $5
+ (set_local $6
(i32.add
(get_local $2)
(i32.const 8)
@@ -17071,9 +16970,9 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $2)
(i32.const 8)
@@ -17087,7 +16986,7 @@
)
(call_import $_abort)
(block
- (set_local $5
+ (set_local $6
(get_local $0)
)
(set_local $14
@@ -17097,7 +16996,7 @@
)
)
(i32.store
- (get_local $5)
+ (get_local $6)
(get_local $3)
)
(i32.store offset=12
@@ -17119,12 +17018,12 @@
(i32.add
(i32.const 480)
(i32.shl
- (set_local $5
+ (tee_local $6
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.const 8)
)
)
@@ -17133,27 +17032,27 @@
(i32.const 0)
(if
(i32.gt_u
- (get_local $4)
+ (get_local $5)
(i32.const 16777215)
)
(i32.const 31)
(block
- (set_local $5
+ (set_local $6
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $5
+ (tee_local $6
(i32.and
(i32.shr_u
(i32.add
- (set_local $1
+ (tee_local $1
(i32.shl
(get_local $0)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
@@ -17176,14 +17075,14 @@
)
(get_local $0)
)
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $6
(i32.shl
(get_local $1)
- (get_local $5)
+ (get_local $6)
)
)
(i32.const 245760)
@@ -17197,7 +17096,7 @@
)
(i32.shr_u
(i32.shl
- (get_local $5)
+ (get_local $6)
(get_local $0)
)
(i32.const 15)
@@ -17210,7 +17109,7 @@
(i32.or
(i32.and
(i32.shr_u
- (get_local $4)
+ (get_local $5)
(i32.add
(get_local $0)
(i32.const 7)
@@ -17218,7 +17117,7 @@
)
(i32.const 1)
)
- (get_local $5)
+ (get_local $6)
)
)
)
@@ -17230,7 +17129,7 @@
)
(i32.store offset=28
(get_local $3)
- (get_local $5)
+ (get_local $6)
)
(i32.store offset=20
(get_local $3)
@@ -17243,15 +17142,15 @@
(if
(i32.eq
(i32.and
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 180)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
- (get_local $5)
+ (get_local $6)
)
)
)
@@ -17283,20 +17182,20 @@
)
)
(block
- (set_local $5
+ (set_local $6
(i32.shl
- (get_local $4)
+ (get_local $5)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
- (get_local $5)
+ (get_local $6)
(i32.const 1)
)
)
(i32.eq
- (get_local $5)
+ (get_local $6)
(i32.const 31)
)
)
@@ -17316,7 +17215,7 @@
)
(i32.const -8)
)
- (get_local $4)
+ (get_local $5)
)
(block
(set_local $15
@@ -17330,15 +17229,15 @@
)
(set_local $2
(i32.shl
- (get_local $5)
+ (get_local $6)
(i32.const 1)
)
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $6
(i32.add
(i32.add
(get_local $1)
@@ -17346,7 +17245,7 @@
)
(i32.shl
(i32.shr_u
- (get_local $5)
+ (get_local $6)
(i32.const 31)
)
(i32.const 2)
@@ -17362,7 +17261,7 @@
(get_local $1)
)
(set_local $17
- (get_local $5)
+ (get_local $6)
)
(set_local $0
(i32.const 127)
@@ -17370,7 +17269,7 @@
(br $while-out$18)
)
(block
- (set_local $5
+ (set_local $6
(get_local $2)
)
(set_local $1
@@ -17420,9 +17319,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -17430,7 +17329,7 @@
)
)
)
- (set_local $5
+ (tee_local $6
(i32.load
(i32.const 192)
)
@@ -17438,7 +17337,7 @@
)
(i32.ge_u
(get_local $15)
- (get_local $5)
+ (get_local $6)
)
)
(block
@@ -17471,7 +17370,7 @@
)
(i32.store
(i32.const 208)
- (set_local $0
+ (tee_local $0
(i32.add
(i32.load
(i32.const 208)
@@ -17485,7 +17384,7 @@
(get_local $0)
(i32.const 0)
)
- (set_local $5
+ (set_local $6
(i32.const 632)
)
(return)
@@ -17493,24 +17392,23 @@
(loop $while-out$20 $while-in$21
(set_local $0
(i32.eq
- (set_local $5
+ (tee_local $6
(i32.load
- (get_local $5)
+ (get_local $6)
)
)
(i32.const 0)
)
)
- (set_local $5
+ (set_local $6
(i32.add
- (get_local $5)
+ (get_local $6)
(i32.const 8)
)
)
(if
(get_local $0)
(br $while-out$20)
- (get_local $5)
)
(br $while-in$21)
)
@@ -17550,7 +17448,7 @@
(get_local $3)
)
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(get_local $2)
@@ -17583,7 +17481,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -17612,7 +17510,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -18014,15 +17912,15 @@
(set_local $2
(i32.add
(i32.shr_u
- (set_local $4
+ (tee_local $4
(i32.mul
- (set_local $2
+ (tee_local $2
(i32.and
(get_local $1)
(i32.const 65535)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 65535)
@@ -18034,7 +17932,7 @@
)
(i32.mul
(get_local $2)
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $0)
(i32.const 16)
@@ -18045,7 +17943,7 @@
)
(set_local $3
(i32.mul
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $1)
(i32.const 16)
@@ -18103,7 +18001,7 @@
(call $___udivmoddi4
(call $_i64Subtract
(i32.xor
- (set_local $4
+ (tee_local $4
(i32.or
(i32.shr_s
(get_local $1)
@@ -18125,7 +18023,7 @@
(get_local $0)
)
(i32.xor
- (set_local $0
+ (tee_local $0
(i32.or
(i32.shr_s
(select
@@ -18161,7 +18059,7 @@
)
(call $_i64Subtract
(i32.xor
- (set_local $1
+ (tee_local $1
(i32.or
(i32.shr_s
(get_local $3)
@@ -18183,7 +18081,7 @@
(get_local $2)
)
(i32.xor
- (set_local $2
+ (tee_local $2
(i32.or
(i32.shr_s
(select
@@ -18219,7 +18117,7 @@
)
(i32.const 0)
)
- (set_local $1
+ (tee_local $1
(i32.xor
(get_local $1)
(get_local $4)
@@ -18230,7 +18128,7 @@
(i32.load
(i32.const 168)
)
- (set_local $0
+ (tee_local $0
(i32.xor
(get_local $2)
(get_local $0)
@@ -18259,125 +18157,127 @@
(i32.const 16)
)
)
- (call $___udivmoddi4
- (call $_i64Subtract
- (i32.xor
- (set_local $4
- (i32.or
- (i32.shr_s
- (get_local $1)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (drop
+ (call $___udivmoddi4
+ (call $_i64Subtract
+ (i32.xor
+ (tee_local $4
+ (i32.or
+ (i32.shr_s
+ (get_local $1)
+ (i32.const 31)
+ )
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $0)
)
- (get_local $0)
- )
- (i32.xor
- (set_local $5
- (i32.or
- (i32.shr_s
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (i32.xor
+ (tee_local $5
+ (i32.or
+ (i32.shr_s
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $1)
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $1)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $1)
)
- (get_local $1)
+ (get_local $4)
+ (get_local $5)
)
- (get_local $4)
- (get_local $5)
- )
- (i32.load
- (i32.const 168)
- )
- (call $_i64Subtract
- (i32.xor
- (set_local $0
- (i32.or
- (i32.shr_s
- (get_local $3)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.load
+ (i32.const 168)
+ )
+ (call $_i64Subtract
+ (i32.xor
+ (tee_local $0
+ (i32.or
+ (i32.shr_s
+ (get_local $3)
+ (i32.const 31)
+ )
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $2)
)
- (get_local $2)
- )
- (i32.xor
- (set_local $1
- (i32.or
- (i32.shr_s
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.xor
+ (tee_local $1
+ (i32.or
+ (i32.shr_s
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (select
- (i32.const -1)
- (i32.const 0)
- (i32.lt_s
- (get_local $3)
+ (i32.shl
+ (select
+ (i32.const -1)
(i32.const 0)
+ (i32.lt_s
+ (get_local $3)
+ (i32.const 0)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $3)
)
- (get_local $3)
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.load
+ (i32.const 168)
+ )
+ (tee_local $0
+ (get_local $6)
)
- (get_local $0)
- (get_local $1)
- )
- (i32.load
- (i32.const 168)
- )
- (set_local $0
- (get_local $6)
)
)
(set_local $0
@@ -18435,7 +18335,7 @@
(get_local $2)
)
)
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 168)
)
@@ -18480,13 +18380,15 @@
(i32.const 16)
)
)
- (call $___udivmoddi4
- (get_local $0)
- (get_local $1)
- (get_local $2)
- (get_local $3)
- (set_local $0
- (get_local $4)
+ (drop
+ (call $___udivmoddi4
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ (get_local $3)
+ (tee_local $0
+ (get_local $4)
+ )
)
)
(i32.store
@@ -18521,14 +18423,14 @@
(get_local $2)
)
(set_local $7
- (set_local $14
+ (tee_local $14
(get_local $3)
)
)
(if
(i32.eq
- (set_local $6
- (set_local $9
+ (tee_local $6
+ (tee_local $9
(get_local $1)
)
)
@@ -18701,7 +18603,7 @@
(if
(i32.eq
(i32.and
- (set_local $5
+ (tee_local $5
(i32.sub
(get_local $7)
(i32.const 1)
@@ -18759,7 +18661,7 @@
)
(if
(i32.le_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.clz
(get_local $7)
@@ -18773,7 +18675,7 @@
)
(block
(set_local $12
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 1)
@@ -18784,7 +18686,7 @@
(i32.or
(i32.shl
(get_local $6)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 31)
(get_local $5)
@@ -18866,7 +18768,7 @@
(block
(if
(i32.le_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.clz
(get_local $7)
@@ -18880,7 +18782,7 @@
)
(block
(set_local $12
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $5)
(i32.const 1)
@@ -18894,7 +18796,7 @@
(get_local $8)
(get_local $0)
)
- (set_local $9
+ (tee_local $9
(i32.shr_s
(i32.sub
(get_local $5)
@@ -18906,7 +18808,7 @@
)
(i32.shl
(get_local $6)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.const 31)
(get_local $5)
@@ -18983,7 +18885,7 @@
(if
(i32.ne
(i32.and
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $5)
(i32.const 1)
@@ -18997,7 +18899,7 @@
(set_local $1
(i32.sub
(i32.const 64)
- (set_local $0
+ (tee_local $0
(i32.sub
(i32.add
(i32.clz
@@ -19014,7 +18916,7 @@
)
(set_local $5
(i32.shr_s
- (set_local $9
+ (tee_local $9
(i32.sub
(i32.const 32)
(get_local $0)
@@ -19025,7 +18927,7 @@
)
(set_local $10
(i32.shr_s
- (set_local $7
+ (tee_local $7
(i32.sub
(get_local $0)
(i32.const 32)
@@ -19170,7 +19072,7 @@
(i32.const 0)
(i32.shr_u
(get_local $6)
- (set_local $0
+ (tee_local $0
(i32.ctz
(get_local $5)
)
@@ -19216,7 +19118,7 @@
(block
(set_local $3
(call $_i64Add
- (set_local $1
+ (tee_local $1
(i32.or
(i32.const 0)
(i32.and
@@ -19225,7 +19127,7 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.or
(get_local $14)
(i32.and
@@ -19271,43 +19173,45 @@
)
)
)
- (call $_i64Subtract
- (get_local $3)
- (get_local $8)
- (set_local $0
- (i32.or
- (i32.const 0)
+ (drop
+ (call $_i64Subtract
+ (get_local $3)
+ (get_local $8)
+ (tee_local $0
(i32.or
- (i32.shl
- (get_local $11)
- (i32.const 1)
+ (i32.const 0)
+ (i32.or
+ (i32.shl
+ (get_local $11)
+ (i32.const 1)
+ )
+ (i32.shr_u
+ (get_local $9)
+ (i32.const 31)
+ )
)
+ )
+ )
+ (tee_local $9
+ (i32.or
(i32.shr_u
- (get_local $9)
+ (get_local $11)
(i32.const 31)
)
- )
- )
- )
- (set_local $9
- (i32.or
- (i32.shr_u
- (get_local $11)
- (i32.const 31)
- )
- (i32.shl
- (get_local $13)
- (i32.const 1)
+ (i32.shl
+ (get_local $13)
+ (i32.const 1)
+ )
)
)
)
)
(set_local $7
(i32.and
- (set_local $14
+ (tee_local $14
(i32.or
(i32.shr_s
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 168)
)
@@ -19374,7 +19278,7 @@
)
(if
(i32.eq
- (set_local $12
+ (tee_local $12
(i32.sub
(get_local $12)
(i32.const 1)
@@ -19404,7 +19308,7 @@
(set_local $3
(i32.or
(get_local $6)
- (set_local $2
+ (tee_local $2
(i32.const 0)
)
)
diff --git a/test/emcc_hello_world.fromasm.imprecise.no-opts b/test/emcc_hello_world.fromasm.imprecise.no-opts
index d8b887891..dcb3c1f15 100644
--- a/test/emcc_hello_world.fromasm.imprecise.no-opts
+++ b/test/emcc_hello_world.fromasm.imprecise.no-opts
@@ -346,9 +346,11 @@
(set_local $$retval
(i32.const 0)
)
- (call $_printf
- (i32.const 672)
- (get_local $$vararg_buffer)
+ (drop
+ (call $_printf
+ (i32.const 672)
+ (get_local $$vararg_buffer)
+ )
)
(i32.store
(i32.const 8)
@@ -2642,17 +2644,19 @@
(get_local $$write)
)
)
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (get_local $$5)
- (i32.const 7)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (get_local $$5)
+ (i32.const 7)
+ )
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $$f)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $$f)
- (i32.const 0)
- (i32.const 0)
)
(set_local $$6
(i32.load
@@ -3137,10 +3141,12 @@
)
)
)
- (call $_memcpy
- (get_local $$9)
- (get_local $$s$addr$0)
- (get_local $$l$addr$0)
+ (drop
+ (call $_memcpy
+ (get_local $$9)
+ (get_local $$s$addr$0)
+ (get_local $$l$addr$0)
+ )
)
(set_local $$10
(i32.load
@@ -4545,17 +4551,19 @@
(get_local $$write)
)
)
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (get_local $$2)
- (i32.const 7)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (get_local $$2)
+ (i32.const 7)
+ )
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $$f)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $$f)
- (i32.const 0)
- (i32.const 0)
)
(set_local $$3
(i32.load
@@ -12215,7 +12223,7 @@
(set_local $$d$5494$i
(get_local $$r$0$a$9$i)
)
- (loop $while-out$108 $while-in$109
+ (loop $while-out$114 $while-in$115
(set_local $$248
(i32.load
(get_local $$d$5494$i)
@@ -12234,7 +12242,7 @@
(get_local $$r$0$a$9$i)
)
)
- (block $do-once$110
+ (block $do-once$116
(if
(get_local $$cmp673$i)
(block
@@ -12252,7 +12260,7 @@
(set_local $$s668$1$i
(get_local $$249)
)
- (br $do-once$110)
+ (br $do-once$116)
)
)
(i32.store8
@@ -12279,10 +12287,10 @@
(set_local $$s668$1$i
(get_local $$249)
)
- (br $do-once$110)
+ (br $do-once$116)
)
)
- (loop $while-out$112 $while-in$113
+ (loop $while-out$118 $while-in$119
(set_local $$incdec$ptr681$i
(i32.add
(get_local $$s668$0492$i)
@@ -12308,10 +12316,10 @@
(set_local $$s668$1$i
(get_local $$incdec$ptr681$i)
)
- (br $while-out$112)
+ (br $while-out$118)
)
)
- (br $while-in$113)
+ (br $while-in$119)
)
)
)
@@ -12370,13 +12378,13 @@
(set_local $$incdec$ptr698$i$lcssa
(get_local $$incdec$ptr698$i)
)
- (br $while-out$108)
+ (br $while-out$114)
)
(set_local $$d$5494$i
(get_local $$incdec$ptr698$i)
)
)
- (br $while-in$109)
+ (br $while-in$115)
)
(set_local $$251
(i32.eq
@@ -12384,7 +12392,7 @@
(i32.const 0)
)
)
- (block $do-once$114
+ (block $do-once$120
(if
(i32.eqz
(get_local $$251)
@@ -12411,7 +12419,7 @@
(i32.eqz
(get_local $$tobool$i$449$i)
)
- (br $do-once$114)
+ (br $do-once$120)
)
(call $___fwritex
(i32.const 4143)
@@ -12448,7 +12456,7 @@
(set_local $$p$addr$4489$i
(get_local $$p$addr$3$i)
)
- (loop $while-out$116 $while-in$117
+ (loop $while-out$122 $while-in$123
(set_local $$254
(i32.load
(get_local $$d$6488$i)
@@ -12473,7 +12481,7 @@
(set_local $$s715$0484$i
(get_local $$255)
)
- (loop $while-out$118 $while-in$119
+ (loop $while-out$124 $while-in$125
(set_local $$incdec$ptr725$i
(i32.add
(get_local $$s715$0484$i)
@@ -12499,10 +12507,10 @@
(set_local $$s715$0$lcssa$i
(get_local $$incdec$ptr725$i)
)
- (br $while-out$118)
+ (br $while-out$124)
)
)
- (br $while-in$119)
+ (br $while-in$125)
)
)
(set_local $$s715$0$lcssa$i
@@ -12593,10 +12601,10 @@
(set_local $$p$addr$4$lcssa$i
(get_local $$sub735$i)
)
- (br $while-out$116)
+ (br $while-out$122)
)
)
- (br $while-in$117)
+ (br $while-in$123)
)
)
(set_local $$p$addr$4$lcssa$i
@@ -12652,7 +12660,7 @@
(set_local $$p$addr$5501$i
(get_local $$p$addr$3$i)
)
- (loop $while-out$120 $while-in$121
+ (loop $while-out$108 $while-in$109
(set_local $$258
(i32.load
(get_local $$d$7500$i)
@@ -12692,7 +12700,7 @@
(get_local $$a$9$ph$i)
)
)
- (block $do-once$122
+ (block $do-once$110
(if
(get_local $$cmp765$i)
(block
@@ -12745,7 +12753,7 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
(set_local $$261
@@ -12773,13 +12781,15 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (call $___fwritex
- (i32.const 4143)
- (i32.const 1)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (i32.const 4143)
+ (i32.const 1)
+ (get_local $$f)
+ )
)
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
@@ -12801,10 +12811,10 @@
(set_local $$s753$2$i
(get_local $$s753$0$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (loop $while-out$124 $while-in$125
+ (loop $while-out$112 $while-in$113
(set_local $$incdec$ptr773$i
(i32.add
(get_local $$s753$1496$i)
@@ -12830,10 +12840,10 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr773$i)
)
- (br $while-out$124)
+ (br $while-out$112)
)
)
- (br $while-in$125)
+ (br $while-in$113)
)
)
)
@@ -12931,10 +12941,10 @@
(set_local $$p$addr$5$lcssa$i
(get_local $$sub806$i)
)
- (br $while-out$120)
+ (br $while-out$108)
)
)
- (br $while-in$121)
+ (br $while-in$109)
)
)
(set_local $$p$addr$5$lcssa$i
@@ -13110,10 +13120,12 @@
(if
(get_local $$tobool$i$407$i)
(block
- (call $___fwritex
- (get_local $$prefix$0$i)
- (get_local $$pl$1$i)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (get_local $$prefix$0$i)
+ (get_local $$pl$1$i)
+ (get_local $$f)
+ )
)
(set_local $$$pre$i
(i32.load
@@ -13310,7 +13322,7 @@
(set_local $$s$addr$06$i
(get_local $$add$ptr205)
)
- (loop $while-out$129 $while-in$130
+ (loop $while-out$133 $while-in$134
(set_local $$idxprom$i
(i32.and
(get_local $$99)
@@ -13392,7 +13404,7 @@
(set_local $$incdec$ptr$i$212$lcssa
(get_local $$incdec$ptr$i$212)
)
- (br $while-out$129)
+ (br $while-out$133)
)
(block
(set_local $$101
@@ -13406,7 +13418,7 @@
)
)
)
- (br $while-in$130)
+ (br $while-in$134)
)
(set_local $$107
(get_local $$arg)
@@ -13658,7 +13670,7 @@
(set_local $$ws$0317
(get_local $$176)
)
- (loop $while-out$131 $while-in$132
+ (loop $while-out$129 $while-in$130
(set_local $$177
(i32.load
(get_local $$ws$0317)
@@ -13679,7 +13691,7 @@
(set_local $$l$2
(get_local $$l$1315)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
(set_local $$call384
@@ -13721,7 +13733,7 @@
(set_local $$l$2
(get_local $$call384)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
(set_local $$incdec$ptr383
@@ -13762,10 +13774,10 @@
(set_local $$l$2
(get_local $$call384)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
- (br $while-in$132)
+ (br $while-in$130)
)
(set_local $$cmp397
(i32.lt_s
@@ -13817,7 +13829,7 @@
(set_local $$ws$1326
(get_local $$178)
)
- (loop $while-out$133 $while-in$134
+ (loop $while-out$131 $while-in$132
(set_local $$179
(i32.load
(get_local $$ws$1326)
@@ -13925,10 +13937,10 @@
(set_local $label
(i32.const 98)
)
- (br $while-out$133)
+ (br $while-out$131)
)
)
- (br $while-in$134)
+ (br $while-in$132)
)
)
)
@@ -16202,10 +16214,12 @@
(get_local $$sub)
)
)
- (call $_memset
- (get_local $$pad)
- (get_local $$c)
- (get_local $$cond)
+ (drop
+ (call $_memset
+ (get_local $$pad)
+ (get_local $$c)
+ (get_local $$cond)
+ )
)
(set_local $$cmp3$14
(i32.gt_u
@@ -16252,10 +16266,12 @@
(if
(get_local $$tobool$i18)
(block
- (call $___fwritex
- (get_local $$pad)
- (i32.const 256)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (get_local $$pad)
+ (i32.const 256)
+ (get_local $$f)
+ )
)
(set_local $$$pre
(i32.load
@@ -17672,7 +17688,7 @@
(get_local $$3)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(get_local $$cmp10)
(block
@@ -17743,7 +17759,7 @@
(get_local $$1)
(get_local $$3)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $_abort)
)
@@ -18043,7 +18059,7 @@
(get_local $$10)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(get_local $$cmp70)
(block
@@ -18125,7 +18141,7 @@
(set_local $$13
(get_local $$$pre)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $_abort)
)
@@ -18568,7 +18584,7 @@
(set_local $$v$0$i
(get_local $$20)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $$arrayidx23$i
(i32.add
(get_local $$t$0$i)
@@ -18615,7 +18631,7 @@
(set_local $$v$0$i$lcssa
(get_local $$v$0$i)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $$cond4$i
(get_local $$23)
@@ -18678,7 +18694,7 @@
(set_local $$v$0$i
(get_local $$cond$v$0$i)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $$25
(i32.load
@@ -18741,7 +18757,7 @@
(get_local $$v$0$i$lcssa)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(get_local $$cmp40$i)
(block
@@ -18788,7 +18804,7 @@
(set_local $$R$3$i
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $$R$1$i
@@ -18809,7 +18825,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $$arrayidx71$i
(i32.add
(get_local $$R$1$i)
@@ -18838,7 +18854,7 @@
(set_local $$RP$1$i
(get_local $$arrayidx71$i)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $$arrayidx75$i
@@ -18867,7 +18883,7 @@
(set_local $$RP$1$i$lcssa
(get_local $$RP$1$i)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $$R$1$i
@@ -18878,7 +18894,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(set_local $$cmp81$i
(i32.lt_u
@@ -18897,7 +18913,7 @@
(set_local $$R$3$i
(get_local $$R$1$i$lcssa)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -18977,7 +18993,7 @@
(set_local $$R$3$i
(get_local $$27)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $_abort)
)
@@ -18990,7 +19006,7 @@
(i32.const 0)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(i32.eqz
(get_local $$cmp90$i)
@@ -19070,7 +19086,7 @@
(i32.const 180)
(get_local $$and103$i)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19134,7 +19150,7 @@
)
(if
(get_local $$cmp126$i)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19180,7 +19196,7 @@
(i32.const 0)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(i32.eqz
(get_local $$cmp138$i)
@@ -19216,7 +19232,7 @@
(get_local $$parent149$i)
(get_local $$R$3$i)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -19279,7 +19295,7 @@
(get_local $$parent166$i)
(get_local $$R$3$i)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19884,7 +19900,7 @@
(set_local $$v$0$i$153
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $$head$i$154
(i32.add
(get_local $$t$0$i$151)
@@ -20057,7 +20073,7 @@
(set_local $label
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $$rsize$0$i$152
@@ -20077,7 +20093,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -20346,7 +20362,7 @@
(get_local $label)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $label
(i32.const 0)
)
@@ -20427,7 +20443,7 @@
(set_local $label
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $$arrayidx113$i$159
@@ -20456,7 +20472,7 @@
(set_local $$v$4$lcssa$i
(get_local $$t$4$v$4$i)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $$rsize$49$i
@@ -20473,7 +20489,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $$cmp116$i
@@ -20569,7 +20585,7 @@
(get_local $$v$4$lcssa$i)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(get_local $$cmp128$i)
(block
@@ -20616,7 +20632,7 @@
(set_local $$R$3$i$171
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $$R$1$i$168
@@ -20637,7 +20653,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $$arrayidx161$i
(i32.add
(get_local $$R$1$i$168)
@@ -20666,7 +20682,7 @@
(set_local $$RP$1$i$167
(get_local $$arrayidx161$i)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $$arrayidx165$i$169
@@ -20695,7 +20711,7 @@
(set_local $$RP$1$i$167$lcssa
(get_local $$RP$1$i$167)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $$R$1$i$168
@@ -20706,7 +20722,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(set_local $$cmp171$i
(i32.lt_u
@@ -20725,7 +20741,7 @@
(set_local $$R$3$i$171
(get_local $$R$1$i$168$lcssa)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -20805,7 +20821,7 @@
(set_local $$R$3$i$171
(get_local $$64)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $_abort)
)
@@ -20818,7 +20834,7 @@
(i32.const 0)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(i32.eqz
(get_local $$cmp180$i)
@@ -20898,7 +20914,7 @@
(i32.const 180)
(get_local $$and194$i)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -20962,7 +20978,7 @@
)
(if
(get_local $$cmp217$i)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -21008,7 +21024,7 @@
(i32.const 0)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(i32.eqz
(get_local $$cmp229$i)
@@ -21044,7 +21060,7 @@
(get_local $$parent240$i)
(get_local $$R$3$i$171)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -21107,7 +21123,7 @@
(get_local $$parent257$i)
(get_local $$R$3$i$171)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -21121,7 +21137,7 @@
(i32.const 16)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(get_local $$cmp265$i)
(block
@@ -21368,7 +21384,7 @@
(get_local $$bk313$i)
(get_local $$arrayidx289$i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $$shr318$i
@@ -21649,7 +21665,7 @@
(get_local $$fd371$i)
(get_local $$add$ptr$i$161)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $$87
@@ -21694,7 +21710,7 @@
(set_local $$T$0$i
(get_local $$87)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(set_local $$head386$i
(i32.add
(get_local $$T$0$i)
@@ -21727,7 +21743,7 @@
(set_local $label
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $$shr391$i
@@ -21777,7 +21793,7 @@
(set_local $label
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $$K373$0$i
@@ -21788,7 +21804,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -21845,7 +21861,7 @@
(get_local $$fd408$i)
(get_local $$add$ptr$i$161)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
)
@@ -21936,7 +21952,7 @@
(get_local $$parent433$i)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $_abort)
)
@@ -22952,8 +22968,10 @@
(if
(get_local $$cmp108$i)
(block
- (call_import $_sbrk
- (get_local $$sub112$i)
+ (drop
+ (call_import $_sbrk
+ (get_local $$sub112$i)
+ )
)
(br $label$break$L279)
)
@@ -23245,7 +23263,7 @@
(set_local $$i$01$i$i
(i32.const 0)
)
- (loop $while-out$46 $while-in$47
+ (loop $while-out$77 $while-in$78
(set_local $$shl$i$i
(i32.shl
(get_local $$i$01$i$i)
@@ -23295,12 +23313,12 @@
)
(if
(get_local $$exitcond$i$i)
- (br $while-out$46)
+ (br $while-out$77)
(set_local $$i$01$i$i
(get_local $$inc$i$i)
)
)
- (br $while-in$47)
+ (br $while-in$78)
)
(set_local $$sub172$i
(i32.add
@@ -23414,7 +23432,7 @@
(set_local $$sp$0108$i
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(set_local $$127
(i32.load
(get_local $$sp$0108$i)
@@ -23461,7 +23479,7 @@
(set_local $label
(i32.const 203)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(set_local $$next$i
@@ -23483,12 +23501,12 @@
)
(if
(get_local $$cmp186$i)
- (br $while-out$48)
+ (br $while-out$46)
(set_local $$sp$0108$i
(get_local $$129)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -23707,7 +23725,7 @@
(set_local $$sp$1107$i
(i32.const 624)
)
- (loop $while-out$50 $while-in$51
+ (loop $while-out$48 $while-in$49
(set_local $$136
(i32.load
(get_local $$sp$1107$i)
@@ -23731,7 +23749,7 @@
(set_local $label
(i32.const 211)
)
- (br $while-out$50)
+ (br $while-out$48)
)
)
(set_local $$next231$i
@@ -23757,13 +23775,13 @@
(set_local $$sp$0$i$i$i
(i32.const 624)
)
- (br $while-out$50)
+ (br $while-out$48)
)
(set_local $$sp$1107$i
(get_local $$137)
)
)
- (br $while-in$51)
+ (br $while-in$49)
)
(if
(i32.eq
@@ -23960,7 +23978,7 @@
(get_local $$119)
)
)
- (block $do-once$52
+ (block $do-once$50
(if
(get_local $$cmp20$i$i)
(block
@@ -24060,7 +24078,7 @@
(get_local $$add$ptr30$i$i)
(get_local $$add26$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$head32$i$i
@@ -24154,7 +24172,7 @@
(get_local $$arrayidx$i$48$i)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eqz
(get_local $$cmp41$i$i)
@@ -24189,7 +24207,7 @@
)
(if
(get_local $$cmp44$i$i)
- (br $do-once$55)
+ (br $do-once$61)
)
(call_import $_abort)
)
@@ -24240,7 +24258,7 @@
(get_local $$arrayidx$i$48$i)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(get_local $$cmp54$i$i)
(block
@@ -24288,7 +24306,7 @@
(set_local $$fd68$pre$phi$i$iZ2D
(get_local $$fd59$i$i)
)
- (br $do-once$57)
+ (br $do-once$63)
)
)
(call_import $_abort)
@@ -24339,7 +24357,7 @@
(get_local $$add$ptr16$i$i)
)
)
- (block $do-once$59
+ (block $do-once$53
(if
(get_local $$cmp75$i$i)
(block
@@ -24386,7 +24404,7 @@
(set_local $$R$3$i$i
(i32.const 0)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(block
(set_local $$R$1$i$i
@@ -24407,7 +24425,7 @@
)
)
)
- (loop $while-out$61 $while-in$62
+ (loop $while-out$55 $while-in$56
(set_local $$arrayidx103$i$i
(i32.add
(get_local $$R$1$i$i)
@@ -24436,7 +24454,7 @@
(set_local $$RP$1$i$i
(get_local $$arrayidx103$i$i)
)
- (br $while-in$62)
+ (br $while-in$56)
)
)
(set_local $$arrayidx107$i$i
@@ -24465,7 +24483,7 @@
(set_local $$RP$1$i$i$lcssa
(get_local $$RP$1$i$i)
)
- (br $while-out$61)
+ (br $while-out$55)
)
(block
(set_local $$R$1$i$i
@@ -24476,7 +24494,7 @@
)
)
)
- (br $while-in$62)
+ (br $while-in$56)
)
(set_local $$cmp112$i$i
(i32.lt_u
@@ -24495,7 +24513,7 @@
(set_local $$R$3$i$i
(get_local $$R$1$i$i$lcssa)
)
- (br $do-once$59)
+ (br $do-once$53)
)
)
)
@@ -24575,7 +24593,7 @@
(set_local $$R$3$i$i
(get_local $$155)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(call_import $_abort)
)
@@ -24623,7 +24641,7 @@
(get_local $$164)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(get_local $$cmp124$i$i)
(block
@@ -24641,7 +24659,7 @@
(i32.eqz
(get_local $$cond2$i$i)
)
- (br $do-once$63)
+ (br $do-once$57)
)
(set_local $$shl131$i$i
(i32.shl
@@ -24779,7 +24797,7 @@
(i32.const 0)
)
)
- (block $do-once$65
+ (block $do-once$59
(if
(i32.eqz
(get_local $$cmp168$i$i)
@@ -24815,7 +24833,7 @@
(get_local $$parent179$i$i)
(get_local $$R$3$i$i)
)
- (br $do-once$65)
+ (br $do-once$59)
)
)
)
@@ -25011,7 +25029,7 @@
(i32.const 0)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(get_local $$tobool228$i$i)
(block
@@ -25072,7 +25090,7 @@
(set_local $$F224$0$i$i
(get_local $$175)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(call_import $_abort)
@@ -25113,7 +25131,7 @@
(get_local $$bk248$i$i)
(get_local $$arrayidx223$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$shr253$i$i
@@ -25128,7 +25146,7 @@
(i32.const 0)
)
)
- (block $do-once$69
+ (block $do-once$67
(if
(get_local $$cmp254$i$i)
(set_local $$I252$0$i$i
@@ -25147,7 +25165,7 @@
(set_local $$I252$0$i$i
(i32.const 31)
)
- (br $do-once$69)
+ (br $do-once$67)
)
)
(set_local $$sub262$i$i
@@ -25397,7 +25415,7 @@
(get_local $$fd303$i$i)
(get_local $$add$ptr17$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$178
@@ -25442,7 +25460,7 @@
(set_local $$T$0$i$58$i
(get_local $$178)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(set_local $$head317$i$i
(i32.add
(get_local $$T$0$i$58$i)
@@ -25475,7 +25493,7 @@
(set_local $label
(i32.const 281)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
(set_local $$shr322$i$i
@@ -25525,7 +25543,7 @@
(set_local $label
(i32.const 278)
)
- (br $while-out$71)
+ (br $while-out$69)
)
(block
(set_local $$K305$0$i$i
@@ -25536,7 +25554,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(if
(i32.eq
@@ -25593,7 +25611,7 @@
(get_local $$fd339$i$i)
(get_local $$add$ptr17$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
)
@@ -25684,7 +25702,7 @@
(get_local $$parent361$i$i)
(i32.const 0)
)
- (br $do-once$52)
+ (br $do-once$50)
)
(call_import $_abort)
)
@@ -25713,7 +25731,7 @@
)
)
)
- (loop $while-out$73 $while-in$74
+ (loop $while-out$71 $while-in$72
(set_local $$185
(i32.load
(get_local $$sp$0$i$i$i)
@@ -25759,7 +25777,7 @@
(set_local $$add$ptr$i$i$i$lcssa
(get_local $$add$ptr$i$i$i)
)
- (br $while-out$73)
+ (br $while-out$71)
)
)
)
@@ -25778,7 +25796,7 @@
(set_local $$sp$0$i$i$i
(get_local $$187)
)
- (br $while-in$74)
+ (br $while-in$72)
)
(set_local $$add$ptr2$i$i
(i32.add
@@ -26041,7 +26059,7 @@
(set_local $$p$0$i$i
(get_local $$add$ptr15$i$i)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(set_local $$add$ptr24$i$i
(i32.add
(get_local $$p$0$i$i)
@@ -26069,9 +26087,9 @@
(set_local $$p$0$i$i
(get_local $$add$ptr24$i$i)
)
- (br $while-out$75)
+ (br $while-out$73)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(set_local $$cmp28$i$i
(i32.eq
@@ -26601,7 +26619,7 @@
(set_local $$T$0$i$i
(get_local $$200)
)
- (loop $while-out$77 $while-in$78
+ (loop $while-out$75 $while-in$76
(set_local $$head118$i$i
(i32.add
(get_local $$T$0$i$i)
@@ -26634,7 +26652,7 @@
(set_local $label
(i32.const 307)
)
- (br $while-out$77)
+ (br $while-out$75)
)
)
(set_local $$shr123$i$i
@@ -26684,7 +26702,7 @@
(set_local $label
(i32.const 304)
)
- (br $while-out$77)
+ (br $while-out$75)
)
(block
(set_local $$K105$0$i$i
@@ -26695,7 +26713,7 @@
)
)
)
- (br $while-in$78)
+ (br $while-in$76)
)
(if
(i32.eq
@@ -31270,14 +31288,16 @@
(get_local $$2$1)
)
)
- (call $___udivmoddi4
- (get_local $$4$0)
- (get_local $$4$1)
- (get_local $$6$0)
- (i32.load
- (i32.const 168)
+ (drop
+ (call $___udivmoddi4
+ (get_local $$4$0)
+ (get_local $$4$1)
+ (get_local $$6$0)
+ (i32.load
+ (i32.const 168)
+ )
+ (get_local $$rem)
)
- (get_local $$rem)
)
(set_local $$10$0
(call $_i64Subtract
@@ -31414,12 +31434,14 @@
(set_local $$rem
(get_local $__stackBase__)
)
- (call $___udivmoddi4
- (get_local $$a$0)
- (get_local $$a$1)
- (get_local $$b$0)
- (get_local $$b$1)
- (get_local $$rem)
+ (drop
+ (call $___udivmoddi4
+ (get_local $$a$0)
+ (get_local $$a$1)
+ (get_local $$b$0)
+ (get_local $$b$1)
+ (get_local $$rem)
+ )
)
(i32.store
(i32.const 8)
@@ -32460,11 +32482,13 @@
)
)
)
- (call $_i64Subtract
- (get_local $$137$0)
- (get_local $$137$1)
- (get_local $$r_sroa_0_0_insert_insert42$0)
- (get_local $$r_sroa_0_0_insert_insert42$1)
+ (drop
+ (call $_i64Subtract
+ (get_local $$137$0)
+ (get_local $$137$1)
+ (get_local $$r_sroa_0_0_insert_insert42$0)
+ (get_local $$r_sroa_0_0_insert_insert42$1)
+ )
)
(set_local $$150$1
(i32.load
diff --git a/test/emcc_hello_world.fromasm.no-opts b/test/emcc_hello_world.fromasm.no-opts
index efa2de849..fcf34e3ec 100644
--- a/test/emcc_hello_world.fromasm.no-opts
+++ b/test/emcc_hello_world.fromasm.no-opts
@@ -352,9 +352,11 @@
(set_local $$retval
(i32.const 0)
)
- (call $_printf
- (i32.const 672)
- (get_local $$vararg_buffer)
+ (drop
+ (call $_printf
+ (i32.const 672)
+ (get_local $$vararg_buffer)
+ )
)
(i32.store
(i32.const 8)
@@ -2648,17 +2650,19 @@
(get_local $$write)
)
)
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (get_local $$5)
- (i32.const 7)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (get_local $$5)
+ (i32.const 7)
+ )
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $$f)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $$f)
- (i32.const 0)
- (i32.const 0)
)
(set_local $$6
(i32.load
@@ -3143,10 +3147,12 @@
)
)
)
- (call $_memcpy
- (get_local $$9)
- (get_local $$s$addr$0)
- (get_local $$l$addr$0)
+ (drop
+ (call $_memcpy
+ (get_local $$9)
+ (get_local $$s$addr$0)
+ (get_local $$l$addr$0)
+ )
)
(set_local $$10
(i32.load
@@ -4551,17 +4557,19 @@
(get_local $$write)
)
)
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (get_local $$2)
- (i32.const 7)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (get_local $$2)
+ (i32.const 7)
+ )
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $$f)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $$f)
- (i32.const 0)
- (i32.const 0)
)
(set_local $$3
(i32.load
@@ -12221,7 +12229,7 @@
(set_local $$d$5494$i
(get_local $$r$0$a$9$i)
)
- (loop $while-out$108 $while-in$109
+ (loop $while-out$114 $while-in$115
(set_local $$248
(i32.load
(get_local $$d$5494$i)
@@ -12240,7 +12248,7 @@
(get_local $$r$0$a$9$i)
)
)
- (block $do-once$110
+ (block $do-once$116
(if
(get_local $$cmp673$i)
(block
@@ -12258,7 +12266,7 @@
(set_local $$s668$1$i
(get_local $$249)
)
- (br $do-once$110)
+ (br $do-once$116)
)
)
(i32.store8
@@ -12285,10 +12293,10 @@
(set_local $$s668$1$i
(get_local $$249)
)
- (br $do-once$110)
+ (br $do-once$116)
)
)
- (loop $while-out$112 $while-in$113
+ (loop $while-out$118 $while-in$119
(set_local $$incdec$ptr681$i
(i32.add
(get_local $$s668$0492$i)
@@ -12314,10 +12322,10 @@
(set_local $$s668$1$i
(get_local $$incdec$ptr681$i)
)
- (br $while-out$112)
+ (br $while-out$118)
)
)
- (br $while-in$113)
+ (br $while-in$119)
)
)
)
@@ -12376,13 +12384,13 @@
(set_local $$incdec$ptr698$i$lcssa
(get_local $$incdec$ptr698$i)
)
- (br $while-out$108)
+ (br $while-out$114)
)
(set_local $$d$5494$i
(get_local $$incdec$ptr698$i)
)
)
- (br $while-in$109)
+ (br $while-in$115)
)
(set_local $$251
(i32.eq
@@ -12390,7 +12398,7 @@
(i32.const 0)
)
)
- (block $do-once$114
+ (block $do-once$120
(if
(i32.eqz
(get_local $$251)
@@ -12417,7 +12425,7 @@
(i32.eqz
(get_local $$tobool$i$449$i)
)
- (br $do-once$114)
+ (br $do-once$120)
)
(call $___fwritex
(i32.const 4143)
@@ -12454,7 +12462,7 @@
(set_local $$p$addr$4489$i
(get_local $$p$addr$3$i)
)
- (loop $while-out$116 $while-in$117
+ (loop $while-out$122 $while-in$123
(set_local $$254
(i32.load
(get_local $$d$6488$i)
@@ -12479,7 +12487,7 @@
(set_local $$s715$0484$i
(get_local $$255)
)
- (loop $while-out$118 $while-in$119
+ (loop $while-out$124 $while-in$125
(set_local $$incdec$ptr725$i
(i32.add
(get_local $$s715$0484$i)
@@ -12505,10 +12513,10 @@
(set_local $$s715$0$lcssa$i
(get_local $$incdec$ptr725$i)
)
- (br $while-out$118)
+ (br $while-out$124)
)
)
- (br $while-in$119)
+ (br $while-in$125)
)
)
(set_local $$s715$0$lcssa$i
@@ -12599,10 +12607,10 @@
(set_local $$p$addr$4$lcssa$i
(get_local $$sub735$i)
)
- (br $while-out$116)
+ (br $while-out$122)
)
)
- (br $while-in$117)
+ (br $while-in$123)
)
)
(set_local $$p$addr$4$lcssa$i
@@ -12658,7 +12666,7 @@
(set_local $$p$addr$5501$i
(get_local $$p$addr$3$i)
)
- (loop $while-out$120 $while-in$121
+ (loop $while-out$108 $while-in$109
(set_local $$258
(i32.load
(get_local $$d$7500$i)
@@ -12698,7 +12706,7 @@
(get_local $$a$9$ph$i)
)
)
- (block $do-once$122
+ (block $do-once$110
(if
(get_local $$cmp765$i)
(block
@@ -12751,7 +12759,7 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
(set_local $$261
@@ -12779,13 +12787,15 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (call $___fwritex
- (i32.const 4143)
- (i32.const 1)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (i32.const 4143)
+ (i32.const 1)
+ (get_local $$f)
+ )
)
(set_local $$s753$2$i
(get_local $$incdec$ptr776$i)
@@ -12807,10 +12817,10 @@
(set_local $$s753$2$i
(get_local $$s753$0$i)
)
- (br $do-once$122)
+ (br $do-once$110)
)
)
- (loop $while-out$124 $while-in$125
+ (loop $while-out$112 $while-in$113
(set_local $$incdec$ptr773$i
(i32.add
(get_local $$s753$1496$i)
@@ -12836,10 +12846,10 @@
(set_local $$s753$2$i
(get_local $$incdec$ptr773$i)
)
- (br $while-out$124)
+ (br $while-out$112)
)
)
- (br $while-in$125)
+ (br $while-in$113)
)
)
)
@@ -12937,10 +12947,10 @@
(set_local $$p$addr$5$lcssa$i
(get_local $$sub806$i)
)
- (br $while-out$120)
+ (br $while-out$108)
)
)
- (br $while-in$121)
+ (br $while-in$109)
)
)
(set_local $$p$addr$5$lcssa$i
@@ -13116,10 +13126,12 @@
(if
(get_local $$tobool$i$407$i)
(block
- (call $___fwritex
- (get_local $$prefix$0$i)
- (get_local $$pl$1$i)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (get_local $$prefix$0$i)
+ (get_local $$pl$1$i)
+ (get_local $$f)
+ )
)
(set_local $$$pre$i
(i32.load
@@ -13316,7 +13328,7 @@
(set_local $$s$addr$06$i
(get_local $$add$ptr205)
)
- (loop $while-out$129 $while-in$130
+ (loop $while-out$133 $while-in$134
(set_local $$idxprom$i
(i32.and
(get_local $$99)
@@ -13398,7 +13410,7 @@
(set_local $$incdec$ptr$i$212$lcssa
(get_local $$incdec$ptr$i$212)
)
- (br $while-out$129)
+ (br $while-out$133)
)
(block
(set_local $$101
@@ -13412,7 +13424,7 @@
)
)
)
- (br $while-in$130)
+ (br $while-in$134)
)
(set_local $$107
(get_local $$arg)
@@ -13664,7 +13676,7 @@
(set_local $$ws$0317
(get_local $$176)
)
- (loop $while-out$131 $while-in$132
+ (loop $while-out$129 $while-in$130
(set_local $$177
(i32.load
(get_local $$ws$0317)
@@ -13685,7 +13697,7 @@
(set_local $$l$2
(get_local $$l$1315)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
(set_local $$call384
@@ -13727,7 +13739,7 @@
(set_local $$l$2
(get_local $$call384)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
(set_local $$incdec$ptr383
@@ -13768,10 +13780,10 @@
(set_local $$l$2
(get_local $$call384)
)
- (br $while-out$131)
+ (br $while-out$129)
)
)
- (br $while-in$132)
+ (br $while-in$130)
)
(set_local $$cmp397
(i32.lt_s
@@ -13823,7 +13835,7 @@
(set_local $$ws$1326
(get_local $$178)
)
- (loop $while-out$133 $while-in$134
+ (loop $while-out$131 $while-in$132
(set_local $$179
(i32.load
(get_local $$ws$1326)
@@ -13931,10 +13943,10 @@
(set_local $label
(i32.const 98)
)
- (br $while-out$133)
+ (br $while-out$131)
)
)
- (br $while-in$134)
+ (br $while-in$132)
)
)
)
@@ -16208,10 +16220,12 @@
(get_local $$sub)
)
)
- (call $_memset
- (get_local $$pad)
- (get_local $$c)
- (get_local $$cond)
+ (drop
+ (call $_memset
+ (get_local $$pad)
+ (get_local $$c)
+ (get_local $$cond)
+ )
)
(set_local $$cmp3$14
(i32.gt_u
@@ -16258,10 +16272,12 @@
(if
(get_local $$tobool$i18)
(block
- (call $___fwritex
- (get_local $$pad)
- (i32.const 256)
- (get_local $$f)
+ (drop
+ (call $___fwritex
+ (get_local $$pad)
+ (i32.const 256)
+ (get_local $$f)
+ )
)
(set_local $$$pre
(i32.load
@@ -17678,7 +17694,7 @@
(get_local $$3)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(get_local $$cmp10)
(block
@@ -17749,7 +17765,7 @@
(get_local $$1)
(get_local $$3)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $_abort)
)
@@ -18049,7 +18065,7 @@
(get_local $$10)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(get_local $$cmp70)
(block
@@ -18131,7 +18147,7 @@
(set_local $$13
(get_local $$$pre)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $_abort)
)
@@ -18574,7 +18590,7 @@
(set_local $$v$0$i
(get_local $$20)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $$arrayidx23$i
(i32.add
(get_local $$t$0$i)
@@ -18621,7 +18637,7 @@
(set_local $$v$0$i$lcssa
(get_local $$v$0$i)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $$cond4$i
(get_local $$23)
@@ -18684,7 +18700,7 @@
(set_local $$v$0$i
(get_local $$cond$v$0$i)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $$25
(i32.load
@@ -18747,7 +18763,7 @@
(get_local $$v$0$i$lcssa)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(get_local $$cmp40$i)
(block
@@ -18794,7 +18810,7 @@
(set_local $$R$3$i
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $$R$1$i
@@ -18815,7 +18831,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $$arrayidx71$i
(i32.add
(get_local $$R$1$i)
@@ -18844,7 +18860,7 @@
(set_local $$RP$1$i
(get_local $$arrayidx71$i)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $$arrayidx75$i
@@ -18873,7 +18889,7 @@
(set_local $$RP$1$i$lcssa
(get_local $$RP$1$i)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $$R$1$i
@@ -18884,7 +18900,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(set_local $$cmp81$i
(i32.lt_u
@@ -18903,7 +18919,7 @@
(set_local $$R$3$i
(get_local $$R$1$i$lcssa)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -18983,7 +18999,7 @@
(set_local $$R$3$i
(get_local $$27)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $_abort)
)
@@ -18996,7 +19012,7 @@
(i32.const 0)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(i32.eqz
(get_local $$cmp90$i)
@@ -19076,7 +19092,7 @@
(i32.const 180)
(get_local $$and103$i)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19140,7 +19156,7 @@
)
(if
(get_local $$cmp126$i)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19186,7 +19202,7 @@
(i32.const 0)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(i32.eqz
(get_local $$cmp138$i)
@@ -19222,7 +19238,7 @@
(get_local $$parent149$i)
(get_local $$R$3$i)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -19285,7 +19301,7 @@
(get_local $$parent166$i)
(get_local $$R$3$i)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -19890,7 +19906,7 @@
(set_local $$v$0$i$153
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $$head$i$154
(i32.add
(get_local $$t$0$i$151)
@@ -20063,7 +20079,7 @@
(set_local $label
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $$rsize$0$i$152
@@ -20083,7 +20099,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -20352,7 +20368,7 @@
(get_local $label)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $label
(i32.const 0)
)
@@ -20433,7 +20449,7 @@
(set_local $label
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $$arrayidx113$i$159
@@ -20462,7 +20478,7 @@
(set_local $$v$4$lcssa$i
(get_local $$t$4$v$4$i)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $$rsize$49$i
@@ -20479,7 +20495,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $$cmp116$i
@@ -20575,7 +20591,7 @@
(get_local $$v$4$lcssa$i)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(get_local $$cmp128$i)
(block
@@ -20622,7 +20638,7 @@
(set_local $$R$3$i$171
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $$R$1$i$168
@@ -20643,7 +20659,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $$arrayidx161$i
(i32.add
(get_local $$R$1$i$168)
@@ -20672,7 +20688,7 @@
(set_local $$RP$1$i$167
(get_local $$arrayidx161$i)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $$arrayidx165$i$169
@@ -20701,7 +20717,7 @@
(set_local $$RP$1$i$167$lcssa
(get_local $$RP$1$i$167)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $$R$1$i$168
@@ -20712,7 +20728,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(set_local $$cmp171$i
(i32.lt_u
@@ -20731,7 +20747,7 @@
(set_local $$R$3$i$171
(get_local $$R$1$i$168$lcssa)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -20811,7 +20827,7 @@
(set_local $$R$3$i$171
(get_local $$64)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $_abort)
)
@@ -20824,7 +20840,7 @@
(i32.const 0)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(i32.eqz
(get_local $$cmp180$i)
@@ -20904,7 +20920,7 @@
(i32.const 180)
(get_local $$and194$i)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -20968,7 +20984,7 @@
)
(if
(get_local $$cmp217$i)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -21014,7 +21030,7 @@
(i32.const 0)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(i32.eqz
(get_local $$cmp229$i)
@@ -21050,7 +21066,7 @@
(get_local $$parent240$i)
(get_local $$R$3$i$171)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -21113,7 +21129,7 @@
(get_local $$parent257$i)
(get_local $$R$3$i$171)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -21127,7 +21143,7 @@
(i32.const 16)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(get_local $$cmp265$i)
(block
@@ -21374,7 +21390,7 @@
(get_local $$bk313$i)
(get_local $$arrayidx289$i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $$shr318$i
@@ -21655,7 +21671,7 @@
(get_local $$fd371$i)
(get_local $$add$ptr$i$161)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $$87
@@ -21700,7 +21716,7 @@
(set_local $$T$0$i
(get_local $$87)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(set_local $$head386$i
(i32.add
(get_local $$T$0$i)
@@ -21733,7 +21749,7 @@
(set_local $label
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $$shr391$i
@@ -21783,7 +21799,7 @@
(set_local $label
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $$K373$0$i
@@ -21794,7 +21810,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -21851,7 +21867,7 @@
(get_local $$fd408$i)
(get_local $$add$ptr$i$161)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
)
@@ -21942,7 +21958,7 @@
(get_local $$parent433$i)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $_abort)
)
@@ -22958,8 +22974,10 @@
(if
(get_local $$cmp108$i)
(block
- (call_import $_sbrk
- (get_local $$sub112$i)
+ (drop
+ (call_import $_sbrk
+ (get_local $$sub112$i)
+ )
)
(br $label$break$L279)
)
@@ -23251,7 +23269,7 @@
(set_local $$i$01$i$i
(i32.const 0)
)
- (loop $while-out$46 $while-in$47
+ (loop $while-out$77 $while-in$78
(set_local $$shl$i$i
(i32.shl
(get_local $$i$01$i$i)
@@ -23301,12 +23319,12 @@
)
(if
(get_local $$exitcond$i$i)
- (br $while-out$46)
+ (br $while-out$77)
(set_local $$i$01$i$i
(get_local $$inc$i$i)
)
)
- (br $while-in$47)
+ (br $while-in$78)
)
(set_local $$sub172$i
(i32.add
@@ -23420,7 +23438,7 @@
(set_local $$sp$0108$i
(i32.const 624)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(set_local $$127
(i32.load
(get_local $$sp$0108$i)
@@ -23467,7 +23485,7 @@
(set_local $label
(i32.const 203)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(set_local $$next$i
@@ -23489,12 +23507,12 @@
)
(if
(get_local $$cmp186$i)
- (br $while-out$48)
+ (br $while-out$46)
(set_local $$sp$0108$i
(get_local $$129)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -23713,7 +23731,7 @@
(set_local $$sp$1107$i
(i32.const 624)
)
- (loop $while-out$50 $while-in$51
+ (loop $while-out$48 $while-in$49
(set_local $$136
(i32.load
(get_local $$sp$1107$i)
@@ -23737,7 +23755,7 @@
(set_local $label
(i32.const 211)
)
- (br $while-out$50)
+ (br $while-out$48)
)
)
(set_local $$next231$i
@@ -23763,13 +23781,13 @@
(set_local $$sp$0$i$i$i
(i32.const 624)
)
- (br $while-out$50)
+ (br $while-out$48)
)
(set_local $$sp$1107$i
(get_local $$137)
)
)
- (br $while-in$51)
+ (br $while-in$49)
)
(if
(i32.eq
@@ -23966,7 +23984,7 @@
(get_local $$119)
)
)
- (block $do-once$52
+ (block $do-once$50
(if
(get_local $$cmp20$i$i)
(block
@@ -24066,7 +24084,7 @@
(get_local $$add$ptr30$i$i)
(get_local $$add26$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$head32$i$i
@@ -24160,7 +24178,7 @@
(get_local $$arrayidx$i$48$i)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eqz
(get_local $$cmp41$i$i)
@@ -24195,7 +24213,7 @@
)
(if
(get_local $$cmp44$i$i)
- (br $do-once$55)
+ (br $do-once$61)
)
(call_import $_abort)
)
@@ -24246,7 +24264,7 @@
(get_local $$arrayidx$i$48$i)
)
)
- (block $do-once$57
+ (block $do-once$63
(if
(get_local $$cmp54$i$i)
(block
@@ -24294,7 +24312,7 @@
(set_local $$fd68$pre$phi$i$iZ2D
(get_local $$fd59$i$i)
)
- (br $do-once$57)
+ (br $do-once$63)
)
)
(call_import $_abort)
@@ -24345,7 +24363,7 @@
(get_local $$add$ptr16$i$i)
)
)
- (block $do-once$59
+ (block $do-once$53
(if
(get_local $$cmp75$i$i)
(block
@@ -24392,7 +24410,7 @@
(set_local $$R$3$i$i
(i32.const 0)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(block
(set_local $$R$1$i$i
@@ -24413,7 +24431,7 @@
)
)
)
- (loop $while-out$61 $while-in$62
+ (loop $while-out$55 $while-in$56
(set_local $$arrayidx103$i$i
(i32.add
(get_local $$R$1$i$i)
@@ -24442,7 +24460,7 @@
(set_local $$RP$1$i$i
(get_local $$arrayidx103$i$i)
)
- (br $while-in$62)
+ (br $while-in$56)
)
)
(set_local $$arrayidx107$i$i
@@ -24471,7 +24489,7 @@
(set_local $$RP$1$i$i$lcssa
(get_local $$RP$1$i$i)
)
- (br $while-out$61)
+ (br $while-out$55)
)
(block
(set_local $$R$1$i$i
@@ -24482,7 +24500,7 @@
)
)
)
- (br $while-in$62)
+ (br $while-in$56)
)
(set_local $$cmp112$i$i
(i32.lt_u
@@ -24501,7 +24519,7 @@
(set_local $$R$3$i$i
(get_local $$R$1$i$i$lcssa)
)
- (br $do-once$59)
+ (br $do-once$53)
)
)
)
@@ -24581,7 +24599,7 @@
(set_local $$R$3$i$i
(get_local $$155)
)
- (br $do-once$59)
+ (br $do-once$53)
)
(call_import $_abort)
)
@@ -24629,7 +24647,7 @@
(get_local $$164)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(get_local $$cmp124$i$i)
(block
@@ -24647,7 +24665,7 @@
(i32.eqz
(get_local $$cond2$i$i)
)
- (br $do-once$63)
+ (br $do-once$57)
)
(set_local $$shl131$i$i
(i32.shl
@@ -24785,7 +24803,7 @@
(i32.const 0)
)
)
- (block $do-once$65
+ (block $do-once$59
(if
(i32.eqz
(get_local $$cmp168$i$i)
@@ -24821,7 +24839,7 @@
(get_local $$parent179$i$i)
(get_local $$R$3$i$i)
)
- (br $do-once$65)
+ (br $do-once$59)
)
)
)
@@ -25017,7 +25035,7 @@
(i32.const 0)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(get_local $$tobool228$i$i)
(block
@@ -25078,7 +25096,7 @@
(set_local $$F224$0$i$i
(get_local $$175)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(call_import $_abort)
@@ -25119,7 +25137,7 @@
(get_local $$bk248$i$i)
(get_local $$arrayidx223$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$shr253$i$i
@@ -25134,7 +25152,7 @@
(i32.const 0)
)
)
- (block $do-once$69
+ (block $do-once$67
(if
(get_local $$cmp254$i$i)
(set_local $$I252$0$i$i
@@ -25153,7 +25171,7 @@
(set_local $$I252$0$i$i
(i32.const 31)
)
- (br $do-once$69)
+ (br $do-once$67)
)
)
(set_local $$sub262$i$i
@@ -25403,7 +25421,7 @@
(get_local $$fd303$i$i)
(get_local $$add$ptr17$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
(set_local $$178
@@ -25448,7 +25466,7 @@
(set_local $$T$0$i$58$i
(get_local $$178)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(set_local $$head317$i$i
(i32.add
(get_local $$T$0$i$58$i)
@@ -25481,7 +25499,7 @@
(set_local $label
(i32.const 281)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
(set_local $$shr322$i$i
@@ -25531,7 +25549,7 @@
(set_local $label
(i32.const 278)
)
- (br $while-out$71)
+ (br $while-out$69)
)
(block
(set_local $$K305$0$i$i
@@ -25542,7 +25560,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(if
(i32.eq
@@ -25599,7 +25617,7 @@
(get_local $$fd339$i$i)
(get_local $$add$ptr17$i$i)
)
- (br $do-once$52)
+ (br $do-once$50)
)
)
)
@@ -25690,7 +25708,7 @@
(get_local $$parent361$i$i)
(i32.const 0)
)
- (br $do-once$52)
+ (br $do-once$50)
)
(call_import $_abort)
)
@@ -25719,7 +25737,7 @@
)
)
)
- (loop $while-out$73 $while-in$74
+ (loop $while-out$71 $while-in$72
(set_local $$185
(i32.load
(get_local $$sp$0$i$i$i)
@@ -25765,7 +25783,7 @@
(set_local $$add$ptr$i$i$i$lcssa
(get_local $$add$ptr$i$i$i)
)
- (br $while-out$73)
+ (br $while-out$71)
)
)
)
@@ -25784,7 +25802,7 @@
(set_local $$sp$0$i$i$i
(get_local $$187)
)
- (br $while-in$74)
+ (br $while-in$72)
)
(set_local $$add$ptr2$i$i
(i32.add
@@ -26047,7 +26065,7 @@
(set_local $$p$0$i$i
(get_local $$add$ptr15$i$i)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(set_local $$add$ptr24$i$i
(i32.add
(get_local $$p$0$i$i)
@@ -26075,9 +26093,9 @@
(set_local $$p$0$i$i
(get_local $$add$ptr24$i$i)
)
- (br $while-out$75)
+ (br $while-out$73)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(set_local $$cmp28$i$i
(i32.eq
@@ -26607,7 +26625,7 @@
(set_local $$T$0$i$i
(get_local $$200)
)
- (loop $while-out$77 $while-in$78
+ (loop $while-out$75 $while-in$76
(set_local $$head118$i$i
(i32.add
(get_local $$T$0$i$i)
@@ -26640,7 +26658,7 @@
(set_local $label
(i32.const 307)
)
- (br $while-out$77)
+ (br $while-out$75)
)
)
(set_local $$shr123$i$i
@@ -26690,7 +26708,7 @@
(set_local $label
(i32.const 304)
)
- (br $while-out$77)
+ (br $while-out$75)
)
(block
(set_local $$K105$0$i$i
@@ -26701,7 +26719,7 @@
)
)
)
- (br $while-in$78)
+ (br $while-in$76)
)
(if
(i32.eq
@@ -31276,14 +31294,16 @@
(get_local $$2$1)
)
)
- (call $___udivmoddi4
- (get_local $$4$0)
- (get_local $$4$1)
- (get_local $$6$0)
- (i32.load
- (i32.const 168)
+ (drop
+ (call $___udivmoddi4
+ (get_local $$4$0)
+ (get_local $$4$1)
+ (get_local $$6$0)
+ (i32.load
+ (i32.const 168)
+ )
+ (get_local $$rem)
)
- (get_local $$rem)
)
(set_local $$10$0
(call $_i64Subtract
@@ -31420,12 +31440,14 @@
(set_local $$rem
(get_local $__stackBase__)
)
- (call $___udivmoddi4
- (get_local $$a$0)
- (get_local $$a$1)
- (get_local $$b$0)
- (get_local $$b$1)
- (get_local $$rem)
+ (drop
+ (call $___udivmoddi4
+ (get_local $$a$0)
+ (get_local $$a$1)
+ (get_local $$b$0)
+ (get_local $$b$1)
+ (get_local $$rem)
+ )
)
(i32.store
(i32.const 8)
@@ -32466,11 +32488,13 @@
)
)
)
- (call $_i64Subtract
- (get_local $$137$0)
- (get_local $$137$1)
- (get_local $$r_sroa_0_0_insert_insert42$0)
- (get_local $$r_sroa_0_0_insert_insert42$1)
+ (drop
+ (call $_i64Subtract
+ (get_local $$137$0)
+ (get_local $$137$1)
+ (get_local $$r_sroa_0_0_insert_insert42$0)
+ (get_local $$r_sroa_0_0_insert_insert42$1)
+ )
)
(set_local $$150$1
(i32.load
diff --git a/test/example/c-api-kitchen-sink.c b/test/example/c-api-kitchen-sink.c
index 0aaf5ab95..d22a30e9c 100644
--- a/test/example/c-api-kitchen-sink.c
+++ b/test/example/c-api-kitchen-sink.c
@@ -64,6 +64,10 @@ BinaryenExpressionRef makeSomething(BinaryenModuleRef module) {
return makeInt32(module, 1337);
}
+BinaryenExpressionRef makeDroppedInt32(BinaryenModuleRef module, int x) {
+ return BinaryenDrop(module, BinaryenConst(module, BinaryenLiteralInt32(x)));
+}
+
// tests
void test_types() {
@@ -202,14 +206,15 @@ void test_core() {
BinaryenUnary(module, BinaryenEqZInt32(), // check the output type of the call node
BinaryenCallIndirect(module, makeInt32(module, 2449), callOperands4, 4, "iiIfF")
),
- BinaryenGetLocal(module, 0, BinaryenInt32()),
+ BinaryenDrop(module, BinaryenGetLocal(module, 0, BinaryenInt32())),
BinaryenSetLocal(module, 0, makeInt32(module, 101)),
+ BinaryenDrop(module, BinaryenTeeLocal(module, 0, makeInt32(module, 102))),
BinaryenLoad(module, 4, 0, 0, 0, BinaryenInt32(), makeInt32(module, 1)),
BinaryenLoad(module, 1, 1, 2, 4, BinaryenInt64(), makeInt32(module, 8)),
BinaryenLoad(module, 4, 0, 0, 0, BinaryenFloat32(), makeInt32(module, 2)),
BinaryenLoad(module, 8, 0, 2, 8, BinaryenFloat64(), makeInt32(module, 9)),
- BinaryenStore(module, 4, 0, 0, temp13, temp14),
- BinaryenStore(module, 8, 2, 4, temp15, temp16),
+ BinaryenStore(module, 4, 0, 0, temp13, temp14, BinaryenInt32()),
+ BinaryenStore(module, 8, 2, 4, temp15, temp16, BinaryenInt64()),
BinaryenSelect(module, temp10, temp11, temp12),
BinaryenReturn(module, makeInt32(module, 1337)),
// TODO: Host
@@ -221,7 +226,8 @@ void test_core() {
// Make the main body of the function. and one block with a return value, one without
BinaryenExpressionRef value = BinaryenBlock(module, "the-value", valueList, sizeof(valueList) / sizeof(BinaryenExpressionRef));
- BinaryenExpressionRef nothing = BinaryenBlock(module, "the-nothing", &value, 1);
+ BinaryenExpressionRef droppedValue = BinaryenDrop(module, value);
+ BinaryenExpressionRef nothing = BinaryenBlock(module, "the-nothing", &droppedValue, 1);
BinaryenExpressionRef bodyList[] = { nothing, makeInt32(module, 42) };
BinaryenExpressionRef body = BinaryenBlock(module, "the-body", bodyList, 2);
@@ -260,6 +266,9 @@ void test_core() {
BinaryenFunctionTypeRef noname = BinaryenAddFunctionType(module, NULL, BinaryenNone(), NULL, 0);
+ // A bunch of our code needs drop(), auto-add it
+ BinaryenModuleAutoDrop(module);
+
// Verify it validates
assert(BinaryenModuleValidate(module));
@@ -304,7 +313,7 @@ void test_relooper() {
RelooperRef relooper = RelooperCreate();
RelooperBlockRef block0 = RelooperAddBlock(relooper, makeCallCheck(module, 0));
RelooperBlockRef block1 = RelooperAddBlock(relooper, makeCallCheck(module, 1));
- RelooperAddBranch(block0, block1, NULL, makeInt32(module, 77)); // code on branch
+ RelooperAddBranch(block0, block1, NULL, makeDroppedInt32(module, 77)); // code on branch
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "two-blocks-plus-code", v, localTypes, 1, body);
}
@@ -321,8 +330,8 @@ void test_relooper() {
RelooperRef relooper = RelooperCreate();
RelooperBlockRef block0 = RelooperAddBlock(relooper, makeCallCheck(module, 0));
RelooperBlockRef block1 = RelooperAddBlock(relooper, makeCallCheck(module, 1));
- RelooperAddBranch(block0, block1, NULL, makeInt32(module, 33));
- RelooperAddBranch(block1, block0, NULL, makeInt32(module, -66));
+ RelooperAddBranch(block0, block1, NULL, makeDroppedInt32(module, 33));
+ RelooperAddBranch(block1, block0, NULL, makeDroppedInt32(module, -66));
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "loop-plus-code", v, localTypes, 1, body);
}
@@ -341,9 +350,9 @@ void test_relooper() {
RelooperBlockRef block0 = RelooperAddBlock(relooper, makeCallCheck(module, 0));
RelooperBlockRef block1 = RelooperAddBlock(relooper, makeCallCheck(module, 1));
RelooperBlockRef block2 = RelooperAddBlock(relooper, makeCallCheck(module, 2));
- BinaryenExpressionRef temp = makeInt32(module, 10);
+ BinaryenExpressionRef temp = makeDroppedInt32(module, 10);
RelooperAddBranch(block0, block1, makeInt32(module, 55), temp);
- RelooperAddBranch(block0, block2, NULL, makeInt32(module, 20));
+ RelooperAddBranch(block0, block2, NULL, makeDroppedInt32(module, 20));
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "split-plus-code", v, localTypes, 1, body);
}
@@ -363,10 +372,10 @@ void test_relooper() {
RelooperBlockRef block0 = RelooperAddBlock(relooper, makeCallCheck(module, 0));
RelooperBlockRef block1 = RelooperAddBlock(relooper, makeCallCheck(module, 1));
RelooperBlockRef block2 = RelooperAddBlock(relooper, makeCallCheck(module, 2));
- BinaryenExpressionRef temp = makeInt32(module, -1);
+ BinaryenExpressionRef temp = makeDroppedInt32(module, -1);
RelooperAddBranch(block0, block1, makeInt32(module, 55), temp);
- RelooperAddBranch(block0, block2, NULL, makeInt32(module, -2));
- RelooperAddBranch(block1, block2, NULL, makeInt32(module, -3));
+ RelooperAddBranch(block0, block2, NULL, makeDroppedInt32(module, -2));
+ RelooperAddBranch(block1, block2, NULL, makeDroppedInt32(module, -3));
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "if-plus-code", v, localTypes, 1, body);
}
@@ -403,15 +412,15 @@ void test_relooper() {
RelooperBlockRef block4 = RelooperAddBlock(relooper, makeCallCheck(module, 4));
RelooperBlockRef block5 = RelooperAddBlock(relooper, makeCallCheck(module, 5));
RelooperBlockRef block6 = RelooperAddBlock(relooper, makeCallCheck(module, 6));
- RelooperAddBranch(block0, block1, NULL, makeInt32(module, 10));
+ RelooperAddBranch(block0, block1, NULL, makeDroppedInt32(module, 10));
RelooperAddBranch(block1, block2, makeInt32(module, -2), NULL);
- RelooperAddBranch(block1, block6, NULL, makeInt32(module, 20));
+ RelooperAddBranch(block1, block6, NULL, makeDroppedInt32(module, 20));
RelooperAddBranch(block2, block3, makeInt32(module, -6), NULL);
- RelooperAddBranch(block2, block1, NULL, makeInt32(module, 30));
+ RelooperAddBranch(block2, block1, NULL, makeDroppedInt32(module, 30));
RelooperAddBranch(block3, block4, makeInt32(module, -10), NULL);
RelooperAddBranch(block3, block5, NULL, NULL);
RelooperAddBranch(block4, block5, NULL, NULL);
- RelooperAddBranch(block5, block6, NULL, makeInt32(module, 40));
+ RelooperAddBranch(block5, block6, NULL, makeDroppedInt32(module, 40));
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "nontrivial-loop-plus-phi-to-head", v, localTypes, 1, body);
}
@@ -425,7 +434,7 @@ void test_relooper() {
BinaryenIndex to_block1[] = { 2, 5 };
RelooperAddBranchForSwitch(block0, block1, to_block1, 2, NULL);
BinaryenIndex to_block2[] = { 4 };
- RelooperAddBranchForSwitch(block0, block2, to_block2, 1, makeInt32(module, 55));
+ RelooperAddBranchForSwitch(block0, block2, to_block2, 1, makeDroppedInt32(module, 55));
RelooperAddBranchForSwitch(block0, block3, NULL, 0, NULL);
BinaryenExpressionRef body = RelooperRenderAndDispose(relooper, block0, 0, module);
BinaryenFunctionRef sinker = BinaryenAddFunction(module, "switch", v, localTypes, 1, body);
diff --git a/test/example/c-api-kitchen-sink.txt b/test/example/c-api-kitchen-sink.txt
index 42a5bfee1..c848f0f7c 100644
--- a/test/example/c-api-kitchen-sink.txt
+++ b/test/example/c-api-kitchen-sink.txt
@@ -23,340 +23,509 @@ BinaryenFloat64: 4
(local $4 i32)
(block $the-body
(block $the-nothing
- (block $the-value
- (i32.clz
- (i32.const -10)
- )
- (i64.ctz
- (i64.const -22)
- )
- (i32.popcnt
- (i32.const -10)
- )
- (f32.neg
- (f32.const -33.61199951171875)
- )
- (f64.abs
- (f64.const -9005.841)
- )
- (f32.ceil
- (f32.const -33.61199951171875)
- )
- (f64.floor
- (f64.const -9005.841)
- )
- (f32.trunc
- (f32.const -33.61199951171875)
- )
- (f32.nearest
- (f32.const -33.61199951171875)
- )
- (f64.sqrt
- (f64.const -9005.841)
- )
- (i32.eqz
- (i32.const -10)
- )
- (i64.extend_s/i32
- (i32.const -10)
- )
- (i64.extend_u/i32
- (i32.const -10)
- )
- (i32.wrap/i64
- (i64.const -22)
- )
- (i32.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_s/f64
- (f64.const -9005.841)
- )
- (i64.trunc_s/f64
- (f64.const -9005.841)
- )
- (i32.trunc_u/f64
- (f64.const -9005.841)
- )
- (i64.trunc_u/f64
- (f64.const -9005.841)
- )
- (i32.reinterpret/f32
- (f32.const -33.61199951171875)
- )
- (i64.reinterpret/f64
- (f64.const -9005.841)
- )
- (f32.convert_s/i32
- (i32.const -10)
- )
- (f64.convert_s/i32
- (i32.const -10)
- )
- (f32.convert_u/i32
- (i32.const -10)
- )
- (f64.convert_u/i32
- (i32.const -10)
- )
- (f32.convert_s/i64
- (i64.const -22)
- )
- (f64.convert_s/i64
- (i64.const -22)
- )
- (f32.convert_u/i64
- (i64.const -22)
- )
- (f64.convert_u/i64
- (i64.const -22)
- )
- (f64.promote/f32
- (f32.const -33.61199951171875)
- )
- (f32.demote/f64
- (f64.const -9005.841)
- )
- (f32.reinterpret/i32
- (i32.const -10)
- )
- (f64.reinterpret/i64
- (i64.const -22)
- )
- (i32.add
- (i32.const -10)
- (i32.const -11)
- )
- (f64.sub
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (i32.div_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.div_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.rem_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.rem_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.and
- (i32.const -10)
- (i32.const -11)
- )
- (i64.or
- (i64.const -22)
- (i64.const -23)
- )
- (i32.xor
- (i32.const -10)
- (i32.const -11)
- )
- (i64.shl
- (i64.const -22)
- (i64.const -23)
- )
- (i64.shr_u
- (i64.const -22)
- (i64.const -23)
- )
- (i32.shr_s
- (i32.const -10)
- (i32.const -11)
- )
- (i32.rotl
- (i32.const -10)
- (i32.const -11)
- )
- (i64.rotr
- (i64.const -22)
- (i64.const -23)
- )
- (f32.div
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.copysign
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f32.min
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.max
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (i32.eq
- (i32.const -10)
- (i32.const -11)
- )
- (f32.ne
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (i32.lt_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.lt_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.le_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.le_u
- (i32.const -10)
- (i32.const -11)
- )
- (i64.gt_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.gt_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.ge_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.ge_u
- (i64.const -22)
- (i64.const -23)
- )
- (f32.lt
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.le
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f64.gt
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f32.ge
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (block
- )
- (if
- (i32.const 1)
- (i32.const 2)
- (i32.const 3)
- )
- (if
- (i32.const 4)
- (i32.const 5)
- )
- (loop $out $in
- (i32.const 0)
- )
- (loop $in2
- (i32.const 0)
- )
- (loop
- (i32.const 0)
- )
- (br_if $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_if $the-nothing
- (i32.const 2)
- )
- (br $the-value
- (i32.const 3)
- )
- (br $the-nothing)
- (br_table $the-value $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_table $the-nothing $the-nothing
- (i32.const 2)
- )
- (i32.eqz
- (call "$kitchen()sinker"
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (block $the-value
+ (drop
+ (i32.clz
+ (i32.const -10)
+ )
)
- )
- (i32.eqz
- (i32.trunc_s/f32
- (call_import $an-imported
- (i32.const 13)
- (f64.const 3.7)
+ (drop
+ (i64.ctz
+ (i64.const -22)
)
)
- )
- (i32.eqz
- (call_indirect $iiIfF
- (i32.const 2449)
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (i32.popcnt
+ (i32.const -10)
+ )
)
+ (drop
+ (f32.neg
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.abs
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.ceil
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.floor
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.trunc
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.nearest
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.sqrt
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i32.wrap/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_s/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i64.trunc_s/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.trunc_u/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i64.trunc_u/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.reinterpret/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f32.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.demote/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.reinterpret/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.reinterpret/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.add
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f64.sub
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (i32.div_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.div_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.rem_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.rem_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.and
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.or
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.xor
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.shl
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.shr_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.shr_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.rotl
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.rotr
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.div
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.copysign
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f32.min
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.max
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (i32.eq
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f32.ne
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (i32.lt_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.lt_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.le_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.le_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.gt_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.gt_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.ge_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.ge_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.lt
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.le
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f64.gt
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f32.ge
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (block
+ )
+ (drop
+ (if
+ (i32.const 1)
+ (i32.const 2)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.const 4)
+ (i32.const 5)
+ )
+ (drop
+ (loop $out $in
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop $in2
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop
+ (i32.const 0)
+ )
+ )
+ (br_if $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_if $the-nothing
+ (i32.const 2)
+ )
+ (br $the-value
+ (i32.const 3)
+ )
+ (br $the-nothing)
+ (br_table $the-value $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_table $the-nothing $the-nothing
+ (i32.const 2)
+ )
+ (drop
+ (i32.eqz
+ (call "$kitchen()sinker"
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.trunc_s/f32
+ (call_import $an-imported
+ (i32.const 13)
+ (f64.const 3.7)
+ )
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (call_indirect $iiIfF
+ (i32.const 2449)
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (set_local $0
+ (i32.const 101)
+ )
+ (drop
+ (tee_local $0
+ (i32.const 102)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i64.load8_s offset=2 align=4
+ (i32.const 8)
+ )
+ )
+ (drop
+ (f32.load
+ (i32.const 2)
+ )
+ )
+ (drop
+ (f64.load offset=2
+ (i32.const 9)
+ )
+ )
+ (i32.store
+ (i32.const 10)
+ (i32.const 11)
+ )
+ (i64.store offset=2 align=4
+ (i32.const 110)
+ (i64.const 111)
+ )
+ (drop
+ (select
+ (i32.const 3)
+ (i32.const 5)
+ (i32.const 1)
+ )
+ )
+ (return
+ (i32.const 1337)
+ )
+ (nop)
+ (unreachable)
)
- (get_local $0)
- (set_local $0
- (i32.const 101)
- )
- (i32.load
- (i32.const 1)
- )
- (i64.load8_s offset=2 align=4
- (i32.const 8)
- )
- (f32.load
- (i32.const 2)
- )
- (f64.load offset=2
- (i32.const 9)
- )
- (i32.store
- (i32.const 10)
- (i32.const 11)
- )
- (i64.store offset=2 align=4
- (i32.const 110)
- (i64.const 111)
- )
- (select
- (i32.const 3)
- (i32.const 5)
- (i32.const 1)
- )
- (return
- (i32.const 1337)
- )
- (nop)
- (unreachable)
)
)
(i32.const 42)
@@ -402,7 +571,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 77)
+ (drop
+ (i32.const 77)
+ )
(br $block$2$break)
)
)
@@ -441,7 +612,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 33)
+ (drop
+ (i32.const 33)
+ )
(br $block$2$break)
)
)
@@ -450,7 +623,9 @@ raw:
(i32.const 1)
)
(block
- (i32.const -66)
+ (drop
+ (i32.const -66)
+ )
(br $shape$0$continue)
)
)
@@ -483,7 +658,9 @@ raw:
(if
(i32.const 55)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(block
(call_import $check
(i32.const 1)
@@ -491,7 +668,9 @@ raw:
)
)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(block
(call_import $check
(i32.const 2)
@@ -534,19 +713,25 @@ raw:
(if
(i32.const 55)
(block
- (i32.const -1)
+ (drop
+ (i32.const -1)
+ )
(block
(call_import $check
(i32.const 1)
)
(block
- (i32.const -3)
+ (drop
+ (i32.const -3)
+ )
(br $block$3$break)
)
)
)
(block
- (i32.const -2)
+ (drop
+ (i32.const -2)
+ )
(br $block$3$break)
)
)
@@ -626,7 +811,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $block$2$break)
)
)
@@ -642,7 +829,9 @@ raw:
(i32.const -2)
(br $block$3$break)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(br $block$7$break)
)
)
@@ -655,7 +844,9 @@ raw:
(i32.const -6)
(br $block$4$break)
(block
- (i32.const 30)
+ (drop
+ (i32.const 30)
+ )
(br $shape$1$continue)
)
)
@@ -685,7 +876,9 @@ raw:
(i32.const 5)
)
(block
- (i32.const 40)
+ (drop
+ (i32.const 40)
+ )
(br $block$7$break)
)
)
@@ -721,7 +914,9 @@ raw:
(br $switch$1$leave)
)
(block
- (i32.const 55)
+ (drop
+ (i32.const 55)
+ )
(block
(call_import $check
(i32.const 2)
@@ -1327,43 +1522,48 @@ int main() {
}
expressions[222] = BinaryenUnary(the_module, 20, expressions[221]);
expressions[223] = BinaryenGetLocal(the_module, 0, 1);
- expressions[224] = BinaryenConst(the_module, BinaryenLiteralInt32(101));
- expressions[225] = BinaryenSetLocal(the_module, 0, expressions[224]);
- expressions[226] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- expressions[227] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[226]);
- expressions[228] = BinaryenConst(the_module, BinaryenLiteralInt32(8));
- expressions[229] = BinaryenLoad(the_module, 1, 1, 2, 4, 2, expressions[228]);
- expressions[230] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
- expressions[231] = BinaryenLoad(the_module, 4, 0, 0, 0, 3, expressions[230]);
- expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt32(9));
- expressions[233] = BinaryenLoad(the_module, 8, 0, 2, 8, 4, expressions[232]);
- expressions[234] = BinaryenStore(the_module, 4, 0, 0, expressions[25], expressions[26]);
- expressions[235] = BinaryenStore(the_module, 8, 2, 4, expressions[27], expressions[28]);
- expressions[236] = BinaryenSelect(the_module, expressions[22], expressions[23], expressions[24]);
- expressions[237] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
- expressions[238] = BinaryenReturn(the_module, expressions[237]);
- expressions[239] = BinaryenNop(the_module);
- expressions[240] = BinaryenUnreachable(the_module);
+ expressions[224] = BinaryenDrop(the_module, expressions[223]);
+ expressions[225] = BinaryenConst(the_module, BinaryenLiteralInt32(101));
+ expressions[226] = BinaryenSetLocal(the_module, 0, expressions[225]);
+ expressions[227] = BinaryenConst(the_module, BinaryenLiteralInt32(102));
+ expressions[228] = BinaryenTeeLocal(the_module, 0, expressions[227]);
+ expressions[229] = BinaryenDrop(the_module, expressions[228]);
+ expressions[230] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ expressions[231] = BinaryenLoad(the_module, 4, 0, 0, 0, 1, expressions[230]);
+ expressions[232] = BinaryenConst(the_module, BinaryenLiteralInt32(8));
+ expressions[233] = BinaryenLoad(the_module, 1, 1, 2, 4, 2, expressions[232]);
+ expressions[234] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ expressions[235] = BinaryenLoad(the_module, 4, 0, 0, 0, 3, expressions[234]);
+ expressions[236] = BinaryenConst(the_module, BinaryenLiteralInt32(9));
+ expressions[237] = BinaryenLoad(the_module, 8, 0, 2, 8, 4, expressions[236]);
+ expressions[238] = BinaryenStore(the_module, 4, 0, 0, expressions[25], expressions[26], 1);
+ expressions[239] = BinaryenStore(the_module, 8, 2, 4, expressions[27], expressions[28], 2);
+ expressions[240] = BinaryenSelect(the_module, expressions[22], expressions[23], expressions[24]);
+ expressions[241] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
+ expressions[242] = BinaryenReturn(the_module, expressions[241]);
+ expressions[243] = BinaryenNop(the_module);
+ expressions[244] = BinaryenUnreachable(the_module);
BinaryenExpressionPrint(expressions[36]);
(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[205], expressions[206], expressions[208], expressions[210], expressions[211], expressions[212], expressions[214], expressions[216], expressions[219], expressions[222], expressions[223], expressions[225], expressions[227], expressions[229], expressions[231], expressions[233], expressions[234], expressions[235], expressions[236], expressions[238], expressions[239], expressions[240] };
- expressions[241] = BinaryenBlock(the_module, "the-value", children, 95);
+ 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[205], expressions[206], expressions[208], expressions[210], expressions[211], expressions[212], expressions[214], expressions[216], expressions[219], expressions[222], expressions[224], expressions[226], expressions[229], expressions[231], expressions[233], expressions[235], expressions[237], expressions[238], expressions[239], expressions[240], expressions[242], expressions[243], expressions[244] };
+ expressions[245] = BinaryenBlock(the_module, "the-value", children, 96);
}
+ expressions[246] = BinaryenDrop(the_module, expressions[245]);
{
- BinaryenExpressionRef children[] = { expressions[241] };
- expressions[242] = BinaryenBlock(the_module, "the-nothing", children, 1);
+ BinaryenExpressionRef children[] = { expressions[246] };
+ expressions[247] = BinaryenBlock(the_module, "the-nothing", children, 1);
}
- expressions[243] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
+ expressions[248] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
{
- BinaryenExpressionRef children[] = { expressions[242], expressions[243] };
- expressions[244] = BinaryenBlock(the_module, "the-body", children, 2);
+ BinaryenExpressionRef children[] = { expressions[247], expressions[248] };
+ expressions[249] = BinaryenBlock(the_module, "the-body", children, 2);
}
{
BinaryenType varTypes[] = { 1 };
- functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[0], varTypes, 1, expressions[244]);
+ functions[0] = BinaryenAddFunction(the_module, "kitchen()sinker", functionTypes[0], varTypes, 1, expressions[249]);
}
{
BinaryenIndex paramTypes[] = { 1, 4 };
@@ -1397,6 +1597,7 @@ int main() {
BinaryenIndex paramTypes[] = { 0 };
functionTypes[3] = BinaryenAddFunctionType(the_module, NULL, 0, paramTypes, 0);
}
+ BinaryenModuleAutoDrop(the_module);
BinaryenModuleValidate(the_module);
BinaryenModulePrint(the_module);
(module
@@ -1416,340 +1617,509 @@ int main() {
(local $4 i32)
(block $the-body
(block $the-nothing
- (block $the-value
- (i32.clz
- (i32.const -10)
- )
- (i64.ctz
- (i64.const -22)
- )
- (i32.popcnt
- (i32.const -10)
- )
- (f32.neg
- (f32.const -33.61199951171875)
- )
- (f64.abs
- (f64.const -9005.841)
- )
- (f32.ceil
- (f32.const -33.61199951171875)
- )
- (f64.floor
- (f64.const -9005.841)
- )
- (f32.trunc
- (f32.const -33.61199951171875)
- )
- (f32.nearest
- (f32.const -33.61199951171875)
- )
- (f64.sqrt
- (f64.const -9005.841)
- )
- (i32.eqz
- (i32.const -10)
- )
- (i64.extend_s/i32
- (i32.const -10)
- )
- (i64.extend_u/i32
- (i32.const -10)
- )
- (i32.wrap/i64
- (i64.const -22)
- )
- (i32.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_s/f64
- (f64.const -9005.841)
- )
- (i64.trunc_s/f64
- (f64.const -9005.841)
- )
- (i32.trunc_u/f64
- (f64.const -9005.841)
- )
- (i64.trunc_u/f64
- (f64.const -9005.841)
- )
- (i32.reinterpret/f32
- (f32.const -33.61199951171875)
- )
- (i64.reinterpret/f64
- (f64.const -9005.841)
- )
- (f32.convert_s/i32
- (i32.const -10)
- )
- (f64.convert_s/i32
- (i32.const -10)
- )
- (f32.convert_u/i32
- (i32.const -10)
- )
- (f64.convert_u/i32
- (i32.const -10)
- )
- (f32.convert_s/i64
- (i64.const -22)
- )
- (f64.convert_s/i64
- (i64.const -22)
- )
- (f32.convert_u/i64
- (i64.const -22)
- )
- (f64.convert_u/i64
- (i64.const -22)
- )
- (f64.promote/f32
- (f32.const -33.61199951171875)
- )
- (f32.demote/f64
- (f64.const -9005.841)
- )
- (f32.reinterpret/i32
- (i32.const -10)
- )
- (f64.reinterpret/i64
- (i64.const -22)
- )
- (i32.add
- (i32.const -10)
- (i32.const -11)
- )
- (f64.sub
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (i32.div_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.div_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.rem_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.rem_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.and
- (i32.const -10)
- (i32.const -11)
- )
- (i64.or
- (i64.const -22)
- (i64.const -23)
- )
- (i32.xor
- (i32.const -10)
- (i32.const -11)
- )
- (i64.shl
- (i64.const -22)
- (i64.const -23)
- )
- (i64.shr_u
- (i64.const -22)
- (i64.const -23)
- )
- (i32.shr_s
- (i32.const -10)
- (i32.const -11)
- )
- (i32.rotl
- (i32.const -10)
- (i32.const -11)
- )
- (i64.rotr
- (i64.const -22)
- (i64.const -23)
- )
- (f32.div
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.copysign
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f32.min
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.max
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (i32.eq
- (i32.const -10)
- (i32.const -11)
- )
- (f32.ne
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (i32.lt_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.lt_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.le_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.le_u
- (i32.const -10)
- (i32.const -11)
- )
- (i64.gt_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.gt_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.ge_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.ge_u
- (i64.const -22)
- (i64.const -23)
- )
- (f32.lt
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.le
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f64.gt
- (f64.const -9005.841)
- (f64.const -9007.333)
- )
- (f32.ge
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (block
- )
- (if
- (i32.const 1)
- (i32.const 2)
- (i32.const 3)
- )
- (if
- (i32.const 4)
- (i32.const 5)
- )
- (loop $out $in
- (i32.const 0)
- )
- (loop $in2
- (i32.const 0)
- )
- (loop
- (i32.const 0)
- )
- (br_if $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_if $the-nothing
- (i32.const 2)
- )
- (br $the-value
- (i32.const 3)
- )
- (br $the-nothing)
- (br_table $the-value $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_table $the-nothing $the-nothing
- (i32.const 2)
- )
- (i32.eqz
- (call "$kitchen()sinker"
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (block $the-value
+ (drop
+ (i32.clz
+ (i32.const -10)
+ )
)
- )
- (i32.eqz
- (i32.trunc_s/f32
- (call_import $an-imported
- (i32.const 13)
- (f64.const 3.7)
+ (drop
+ (i64.ctz
+ (i64.const -22)
)
)
- )
- (i32.eqz
- (call_indirect $iiIfF
- (i32.const 2449)
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (i32.popcnt
+ (i32.const -10)
+ )
)
+ (drop
+ (f32.neg
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.abs
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.ceil
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.floor
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.trunc
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.nearest
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.sqrt
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i32.wrap/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_s/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i64.trunc_s/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.trunc_u/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i64.trunc_u/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.reinterpret/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f32.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.demote/f64
+ (f64.const -9005.841)
+ )
+ )
+ (drop
+ (f32.reinterpret/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.reinterpret/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.add
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f64.sub
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (i32.div_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.div_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.rem_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.rem_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.and
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.or
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.xor
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.shl
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.shr_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.shr_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.rotl
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.rotr
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.div
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.copysign
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f32.min
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.max
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (i32.eq
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f32.ne
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (i32.lt_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.lt_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.le_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.le_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.gt_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.gt_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.ge_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.ge_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.lt
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.le
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f64.gt
+ (f64.const -9005.841)
+ (f64.const -9007.333)
+ )
+ )
+ (drop
+ (f32.ge
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (block
+ )
+ (drop
+ (if
+ (i32.const 1)
+ (i32.const 2)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.const 4)
+ (i32.const 5)
+ )
+ (drop
+ (loop $out $in
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop $in2
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop
+ (i32.const 0)
+ )
+ )
+ (br_if $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_if $the-nothing
+ (i32.const 2)
+ )
+ (br $the-value
+ (i32.const 3)
+ )
+ (br $the-nothing)
+ (br_table $the-value $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_table $the-nothing $the-nothing
+ (i32.const 2)
+ )
+ (drop
+ (i32.eqz
+ (call "$kitchen()sinker"
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.trunc_s/f32
+ (call_import $an-imported
+ (i32.const 13)
+ (f64.const 3.7)
+ )
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (call_indirect $iiIfF
+ (i32.const 2449)
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (set_local $0
+ (i32.const 101)
+ )
+ (drop
+ (tee_local $0
+ (i32.const 102)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i64.load8_s offset=2 align=4
+ (i32.const 8)
+ )
+ )
+ (drop
+ (f32.load
+ (i32.const 2)
+ )
+ )
+ (drop
+ (f64.load offset=2
+ (i32.const 9)
+ )
+ )
+ (i32.store
+ (i32.const 10)
+ (i32.const 11)
+ )
+ (i64.store offset=2 align=4
+ (i32.const 110)
+ (i64.const 111)
+ )
+ (drop
+ (select
+ (i32.const 3)
+ (i32.const 5)
+ (i32.const 1)
+ )
+ )
+ (return
+ (i32.const 1337)
+ )
+ (nop)
+ (unreachable)
)
- (get_local $0)
- (set_local $0
- (i32.const 101)
- )
- (i32.load
- (i32.const 1)
- )
- (i64.load8_s offset=2 align=4
- (i32.const 8)
- )
- (f32.load
- (i32.const 2)
- )
- (f64.load offset=2
- (i32.const 9)
- )
- (i32.store
- (i32.const 10)
- (i32.const 11)
- )
- (i64.store offset=2 align=4
- (i32.const 110)
- (i64.const 111)
- )
- (select
- (i32.const 3)
- (i32.const 5)
- (i32.const 1)
- )
- (return
- (i32.const 1337)
- )
- (nop)
- (unreachable)
)
)
(i32.const 42)
@@ -1820,231 +2190,211 @@ int main() {
}
relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[12]);
expressions[13] = BinaryenConst(the_module, BinaryenLiteralInt32(77));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[13]);
- expressions[14] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[14] = BinaryenDrop(the_module, expressions[13]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[14]);
+ expressions[15] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[2] = BinaryenAddFunction(the_module, "two-blocks-plus-code", functionTypes[0], varTypes, 1, expressions[14]);
+ functions[2] = BinaryenAddFunction(the_module, "two-blocks-plus-code", functionTypes[0], varTypes, 1, expressions[15]);
}
the_relooper = RelooperCreate();
- expressions[15] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[16] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[15] };
- expressions[16] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[16] };
+ expressions[17] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[16]);
- expressions[17] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[17]);
+ expressions[18] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[17] };
- expressions[18] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[18] };
+ expressions[19] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[18]);
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[19]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[0]);
- expressions[19] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[20] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[3] = BinaryenAddFunction(the_module, "loop", functionTypes[0], varTypes, 1, expressions[19]);
+ functions[3] = BinaryenAddFunction(the_module, "loop", functionTypes[0], varTypes, 1, expressions[20]);
}
the_relooper = RelooperCreate();
- expressions[20] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[21] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[20] };
- expressions[21] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[21] };
+ expressions[22] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[21]);
- expressions[22] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[22]);
+ expressions[23] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[22] };
- expressions[23] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[23] };
+ expressions[24] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[23]);
- expressions[24] = BinaryenConst(the_module, BinaryenLiteralInt32(33));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[24]);
- expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(-66));
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[25]);
- expressions[26] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[24]);
+ expressions[25] = BinaryenConst(the_module, BinaryenLiteralInt32(33));
+ expressions[26] = BinaryenDrop(the_module, expressions[25]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[26]);
+ expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(-66));
+ expressions[28] = BinaryenDrop(the_module, expressions[27]);
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[0], expressions[28]);
+ expressions[29] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[4] = BinaryenAddFunction(the_module, "loop-plus-code", functionTypes[0], varTypes, 1, expressions[26]);
+ functions[4] = BinaryenAddFunction(the_module, "loop-plus-code", functionTypes[0], varTypes, 1, expressions[29]);
}
the_relooper = RelooperCreate();
- expressions[27] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[30] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[27] };
- expressions[28] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[30] };
+ expressions[31] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[28]);
- expressions[29] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[31]);
+ expressions[32] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[29] };
- expressions[30] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[32] };
+ expressions[33] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[30]);
- expressions[31] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[33]);
+ expressions[34] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[31] };
- expressions[32] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[34] };
+ expressions[35] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[32]);
- expressions[33] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[33], expressions[0]);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[35]);
+ expressions[36] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[36], expressions[0]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
- expressions[34] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[37] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[5] = BinaryenAddFunction(the_module, "split", functionTypes[0], varTypes, 1, expressions[34]);
+ functions[5] = BinaryenAddFunction(the_module, "split", functionTypes[0], varTypes, 1, expressions[37]);
}
the_relooper = RelooperCreate();
- expressions[35] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[38] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[35] };
- expressions[36] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[38] };
+ expressions[39] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[36]);
- expressions[37] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[39]);
+ expressions[40] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[37] };
- expressions[38] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[40] };
+ expressions[41] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[38]);
- expressions[39] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[41]);
+ expressions[42] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[39] };
- expressions[40] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[42] };
+ expressions[43] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[40]);
- expressions[41] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
- expressions[42] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[42], expressions[41]);
- expressions[43] = BinaryenConst(the_module, BinaryenLiteralInt32(20));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[43]);
- expressions[44] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[43]);
+ expressions[44] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ expressions[45] = BinaryenDrop(the_module, expressions[44]);
+ expressions[46] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[46], expressions[45]);
+ expressions[47] = BinaryenConst(the_module, BinaryenLiteralInt32(20));
+ expressions[48] = BinaryenDrop(the_module, expressions[47]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[48]);
+ expressions[49] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[6] = BinaryenAddFunction(the_module, "split-plus-code", functionTypes[0], varTypes, 1, expressions[44]);
+ functions[6] = BinaryenAddFunction(the_module, "split-plus-code", functionTypes[0], varTypes, 1, expressions[49]);
}
the_relooper = RelooperCreate();
- expressions[45] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[50] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[45] };
- expressions[46] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[50] };
+ expressions[51] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[46]);
- expressions[47] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[51]);
+ expressions[52] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[47] };
- expressions[48] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[52] };
+ expressions[53] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[48]);
- expressions[49] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[53]);
+ expressions[54] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[49] };
- expressions[50] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[54] };
+ expressions[55] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[50]);
- expressions[51] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[51], expressions[0]);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[55]);
+ expressions[56] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[56], expressions[0]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]);
- expressions[52] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[57] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[7] = BinaryenAddFunction(the_module, "if", functionTypes[0], varTypes, 1, expressions[52]);
+ functions[7] = BinaryenAddFunction(the_module, "if", functionTypes[0], varTypes, 1, expressions[57]);
}
the_relooper = RelooperCreate();
- expressions[53] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[58] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[53] };
- expressions[54] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[58] };
+ expressions[59] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[54]);
- expressions[55] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[59]);
+ expressions[60] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[55] };
- expressions[56] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[60] };
+ expressions[61] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[56]);
- expressions[57] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[61]);
+ expressions[62] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[57] };
- expressions[58] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[62] };
+ expressions[63] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[58]);
- expressions[59] = BinaryenConst(the_module, BinaryenLiteralInt32(-1));
- expressions[60] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[60], expressions[59]);
- expressions[61] = BinaryenConst(the_module, BinaryenLiteralInt32(-2));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[61]);
- expressions[62] = BinaryenConst(the_module, BinaryenLiteralInt32(-3));
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[62]);
- expressions[63] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[63]);
+ expressions[64] = BinaryenConst(the_module, BinaryenLiteralInt32(-1));
+ expressions[65] = BinaryenDrop(the_module, expressions[64]);
+ expressions[66] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[66], expressions[65]);
+ expressions[67] = BinaryenConst(the_module, BinaryenLiteralInt32(-2));
+ expressions[68] = BinaryenDrop(the_module, expressions[67]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[68]);
+ expressions[69] = BinaryenConst(the_module, BinaryenLiteralInt32(-3));
+ expressions[70] = BinaryenDrop(the_module, expressions[69]);
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[70]);
+ expressions[71] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[8] = BinaryenAddFunction(the_module, "if-plus-code", functionTypes[0], varTypes, 1, expressions[63]);
+ functions[8] = BinaryenAddFunction(the_module, "if-plus-code", functionTypes[0], varTypes, 1, expressions[71]);
}
the_relooper = RelooperCreate();
- expressions[64] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
- {
- BinaryenExpressionRef operands[] = { expressions[64] };
- expressions[65] = BinaryenCallImport(the_module, "check", operands, 1, 0);
- }
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[65]);
- expressions[66] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
- {
- BinaryenExpressionRef operands[] = { expressions[66] };
- expressions[67] = BinaryenCallImport(the_module, "check", operands, 1, 0);
- }
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[67]);
- expressions[68] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
- {
- BinaryenExpressionRef operands[] = { expressions[68] };
- expressions[69] = BinaryenCallImport(the_module, "check", operands, 1, 0);
- }
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[69]);
- expressions[70] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ expressions[72] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[70] };
- expressions[71] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[72] };
+ expressions[73] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[71]);
- expressions[72] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[72], expressions[0]);
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[3], expressions[0], expressions[0]);
- RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]);
- expressions[73] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
- {
- BinaryenType varTypes[] = { 1 };
- functions[9] = BinaryenAddFunction(the_module, "if-else", functionTypes[0], varTypes, 1, expressions[73]);
- }
- the_relooper = RelooperCreate();
- expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[73]);
+ expressions[74] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
BinaryenExpressionRef operands[] = { expressions[74] };
expressions[75] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[75]);
- expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[75]);
+ expressions[76] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
BinaryenExpressionRef operands[] = { expressions[76] };
expressions[77] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[77]);
- expressions[78] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[77]);
+ expressions[78] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
{
BinaryenExpressionRef operands[] = { expressions[78] };
expressions[79] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[79]);
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
- expressions[80] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[80], expressions[0]);
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]);
+ relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[79]);
+ expressions[80] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[80], expressions[0]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[3], expressions[0], expressions[0]);
+ RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[0], expressions[0]);
expressions[81] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[10] = BinaryenAddFunction(the_module, "loop-tail", functionTypes[0], varTypes, 1, expressions[81]);
+ functions[9] = BinaryenAddFunction(the_module, "if-else", functionTypes[0], varTypes, 1, expressions[81]);
}
the_relooper = RelooperCreate();
expressions[82] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
@@ -2065,145 +2415,178 @@ int main() {
expressions[87] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[87]);
- expressions[88] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[0]);
+ expressions[88] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[0], expressions[88], expressions[0]);
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]);
+ expressions[89] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
- BinaryenExpressionRef operands[] = { expressions[88] };
- expressions[89] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenType varTypes[] = { 1 };
+ functions[10] = BinaryenAddFunction(the_module, "loop-tail", functionTypes[0], varTypes, 1, expressions[89]);
}
- relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[89]);
- expressions[90] = BinaryenConst(the_module, BinaryenLiteralInt32(4));
+ the_relooper = RelooperCreate();
+ expressions[90] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
BinaryenExpressionRef operands[] = { expressions[90] };
expressions[91] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[91]);
- expressions[92] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[91]);
+ expressions[92] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
BinaryenExpressionRef operands[] = { expressions[92] };
expressions[93] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[93]);
- expressions[94] = BinaryenConst(the_module, BinaryenLiteralInt32(6));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[93]);
+ expressions[94] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
BinaryenExpressionRef operands[] = { expressions[94] };
expressions[95] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[95]);
- expressions[96] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[96]);
- expressions[97] = BinaryenConst(the_module, BinaryenLiteralInt32(-2));
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[97], expressions[0]);
- expressions[98] = BinaryenConst(the_module, BinaryenLiteralInt32(20));
- RelooperAddBranch(relooperBlocks[1], relooperBlocks[6], expressions[0], expressions[98]);
- expressions[99] = BinaryenConst(the_module, BinaryenLiteralInt32(-6));
- RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[99], expressions[0]);
- expressions[100] = BinaryenConst(the_module, BinaryenLiteralInt32(30));
- RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[100]);
- expressions[101] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
- RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[101], expressions[0]);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[95]);
+ expressions[96] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ {
+ BinaryenExpressionRef operands[] = { expressions[96] };
+ expressions[97] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ }
+ relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[97]);
+ expressions[98] = BinaryenConst(the_module, BinaryenLiteralInt32(4));
+ {
+ BinaryenExpressionRef operands[] = { expressions[98] };
+ expressions[99] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ }
+ relooperBlocks[4] = RelooperAddBlock(the_relooper, expressions[99]);
+ expressions[100] = BinaryenConst(the_module, BinaryenLiteralInt32(5));
+ {
+ BinaryenExpressionRef operands[] = { expressions[100] };
+ expressions[101] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ }
+ relooperBlocks[5] = RelooperAddBlock(the_relooper, expressions[101]);
+ expressions[102] = BinaryenConst(the_module, BinaryenLiteralInt32(6));
+ {
+ BinaryenExpressionRef operands[] = { expressions[102] };
+ expressions[103] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ }
+ relooperBlocks[6] = RelooperAddBlock(the_relooper, expressions[103]);
+ expressions[104] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ expressions[105] = BinaryenDrop(the_module, expressions[104]);
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[0], expressions[105]);
+ expressions[106] = BinaryenConst(the_module, BinaryenLiteralInt32(-2));
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[106], expressions[0]);
+ expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(20));
+ expressions[108] = BinaryenDrop(the_module, expressions[107]);
+ RelooperAddBranch(relooperBlocks[1], relooperBlocks[6], expressions[0], expressions[108]);
+ expressions[109] = BinaryenConst(the_module, BinaryenLiteralInt32(-6));
+ RelooperAddBranch(relooperBlocks[2], relooperBlocks[3], expressions[109], expressions[0]);
+ expressions[110] = BinaryenConst(the_module, BinaryenLiteralInt32(30));
+ expressions[111] = BinaryenDrop(the_module, expressions[110]);
+ RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[111]);
+ expressions[112] = BinaryenConst(the_module, BinaryenLiteralInt32(-10));
+ RelooperAddBranch(relooperBlocks[3], relooperBlocks[4], expressions[112], expressions[0]);
RelooperAddBranch(relooperBlocks[3], relooperBlocks[5], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[4], relooperBlocks[5], expressions[0], expressions[0]);
- expressions[102] = BinaryenConst(the_module, BinaryenLiteralInt32(40));
- RelooperAddBranch(relooperBlocks[5], relooperBlocks[6], expressions[0], expressions[102]);
- expressions[103] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt32(40));
+ expressions[114] = BinaryenDrop(the_module, expressions[113]);
+ RelooperAddBranch(relooperBlocks[5], relooperBlocks[6], expressions[0], expressions[114]);
+ expressions[115] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[11] = BinaryenAddFunction(the_module, "nontrivial-loop-plus-phi-to-head", functionTypes[0], varTypes, 1, expressions[103]);
+ functions[11] = BinaryenAddFunction(the_module, "nontrivial-loop-plus-phi-to-head", functionTypes[0], varTypes, 1, expressions[115]);
}
the_relooper = RelooperCreate();
- expressions[104] = BinaryenConst(the_module, BinaryenLiteralInt32(-99));
- expressions[105] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[116] = BinaryenConst(the_module, BinaryenLiteralInt32(-99));
+ expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[105] };
- expressions[106] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[117] };
+ expressions[118] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlockWithSwitch(the_relooper, expressions[106], expressions[104]);
- expressions[107] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlockWithSwitch(the_relooper, expressions[118], expressions[116]);
+ expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[107] };
- expressions[108] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[119] };
+ expressions[120] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[108]);
- expressions[109] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[120]);
+ expressions[121] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[109] };
- expressions[110] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[121] };
+ expressions[122] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[110]);
- expressions[111] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[122]);
+ expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt32(3));
{
- BinaryenExpressionRef operands[] = { expressions[111] };
- expressions[112] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[123] };
+ expressions[124] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[112]);
+ relooperBlocks[3] = RelooperAddBlock(the_relooper, expressions[124]);
{
BinaryenIndex indexes[] = { 2, 5 };
RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[1], indexes, 2, expressions[0]);
}
- expressions[113] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ expressions[125] = BinaryenConst(the_module, BinaryenLiteralInt32(55));
+ expressions[126] = BinaryenDrop(the_module, expressions[125]);
{
BinaryenIndex indexes[] = { 4 };
- RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[2], indexes, 1, expressions[113]);
+ RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[2], indexes, 1, expressions[126]);
}
{
BinaryenIndex indexes[] = { 0 };
RelooperAddBranchForSwitch(relooperBlocks[0], relooperBlocks[3], indexes, 0, expressions[0]);
}
- expressions[114] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ expressions[127] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[12] = BinaryenAddFunction(the_module, "switch", functionTypes[0], varTypes, 1, expressions[114]);
+ functions[12] = BinaryenAddFunction(the_module, "switch", functionTypes[0], varTypes, 1, expressions[127]);
}
the_relooper = RelooperCreate();
- expressions[115] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
+ expressions[128] = BinaryenConst(the_module, BinaryenLiteralInt32(0));
{
- BinaryenExpressionRef operands[] = { expressions[115] };
- expressions[116] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[128] };
+ expressions[129] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[116]);
- expressions[117] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[129]);
+ expressions[130] = BinaryenConst(the_module, BinaryenLiteralInt32(1));
{
- BinaryenExpressionRef operands[] = { expressions[117] };
- expressions[118] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[130] };
+ expressions[131] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[118]);
- expressions[119] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
+ relooperBlocks[1] = RelooperAddBlock(the_relooper, expressions[131]);
+ expressions[132] = BinaryenConst(the_module, BinaryenLiteralInt32(2));
{
- BinaryenExpressionRef operands[] = { expressions[119] };
- expressions[120] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[132] };
+ expressions[133] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[120]);
- expressions[121] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
- RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[121], expressions[0]);
+ relooperBlocks[2] = RelooperAddBlock(the_relooper, expressions[133]);
+ expressions[134] = BinaryenConst(the_module, BinaryenLiteralInt32(10));
+ RelooperAddBranch(relooperBlocks[0], relooperBlocks[1], expressions[134], expressions[0]);
RelooperAddBranch(relooperBlocks[0], relooperBlocks[2], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[1], relooperBlocks[2], expressions[0], expressions[0]);
RelooperAddBranch(relooperBlocks[2], relooperBlocks[1], expressions[0], expressions[0]);
- expressions[122] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 3, the_module);
+ expressions[135] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 3, the_module);
{
BinaryenType varTypes[] = { 1, 1, 2, 1, 3, 4, 1 };
- functions[13] = BinaryenAddFunction(the_module, "duffs-device", functionTypes[0], varTypes, 7, expressions[122]);
+ functions[13] = BinaryenAddFunction(the_module, "duffs-device", functionTypes[0], varTypes, 7, expressions[135]);
}
{
BinaryenIndex paramTypes[] = { 0 };
functionTypes[2] = BinaryenAddFunctionType(the_module, "i", 1, paramTypes, 0);
}
the_relooper = RelooperCreate();
- expressions[123] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
+ expressions[136] = BinaryenConst(the_module, BinaryenLiteralInt32(42));
{
- BinaryenExpressionRef operands[] = { expressions[123] };
- expressions[124] = BinaryenCallImport(the_module, "check", operands, 1, 0);
+ BinaryenExpressionRef operands[] = { expressions[136] };
+ expressions[137] = BinaryenCallImport(the_module, "check", operands, 1, 0);
}
- expressions[125] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
- expressions[126] = BinaryenReturn(the_module, expressions[125]);
+ expressions[138] = BinaryenConst(the_module, BinaryenLiteralInt32(1337));
+ expressions[139] = BinaryenReturn(the_module, expressions[138]);
{
- BinaryenExpressionRef children[] = { expressions[124], expressions[126] };
- expressions[127] = BinaryenBlock(the_module, "the-list", children, 2);
+ BinaryenExpressionRef children[] = { expressions[137], expressions[139] };
+ expressions[140] = BinaryenBlock(the_module, "the-list", children, 2);
}
- relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[127]);
- expressions[128] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
+ relooperBlocks[0] = RelooperAddBlock(the_relooper, expressions[140]);
+ expressions[141] = RelooperRenderAndDispose(the_relooper, relooperBlocks[0], 0, the_module);
{
BinaryenType varTypes[] = { 1 };
- functions[14] = BinaryenAddFunction(the_module, "return", functionTypes[2], varTypes, 1, expressions[128]);
+ functions[14] = BinaryenAddFunction(the_module, "return", functionTypes[2], varTypes, 1, expressions[141]);
}
raw:
BinaryenModulePrint(the_module);
@@ -2242,7 +2625,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 77)
+ (drop
+ (i32.const 77)
+ )
(br $block$2$break)
)
)
@@ -2281,7 +2666,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 33)
+ (drop
+ (i32.const 33)
+ )
(br $block$2$break)
)
)
@@ -2290,7 +2677,9 @@ raw:
(i32.const 1)
)
(block
- (i32.const -66)
+ (drop
+ (i32.const -66)
+ )
(br $shape$0$continue)
)
)
@@ -2323,7 +2712,9 @@ raw:
(if
(i32.const 55)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(block
(call_import $check
(i32.const 1)
@@ -2331,7 +2722,9 @@ raw:
)
)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(block
(call_import $check
(i32.const 2)
@@ -2374,19 +2767,25 @@ raw:
(if
(i32.const 55)
(block
- (i32.const -1)
+ (drop
+ (i32.const -1)
+ )
(block
(call_import $check
(i32.const 1)
)
(block
- (i32.const -3)
+ (drop
+ (i32.const -3)
+ )
(br $block$3$break)
)
)
)
(block
- (i32.const -2)
+ (drop
+ (i32.const -2)
+ )
(br $block$3$break)
)
)
@@ -2466,7 +2865,9 @@ raw:
(i32.const 0)
)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $block$2$break)
)
)
@@ -2482,7 +2883,9 @@ raw:
(i32.const -2)
(br $block$3$break)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(br $block$7$break)
)
)
@@ -2495,7 +2898,9 @@ raw:
(i32.const -6)
(br $block$4$break)
(block
- (i32.const 30)
+ (drop
+ (i32.const 30)
+ )
(br $shape$1$continue)
)
)
@@ -2525,7 +2930,9 @@ raw:
(i32.const 5)
)
(block
- (i32.const 40)
+ (drop
+ (i32.const 40)
+ )
(br $block$7$break)
)
)
@@ -2561,7 +2968,9 @@ raw:
(br $switch$1$leave)
)
(block
- (i32.const 55)
+ (drop
+ (i32.const 55)
+ )
(block
(call_import $check
(i32.const 2)
diff --git a/test/example/c-api-kitchen-sink.txt.txt b/test/example/c-api-kitchen-sink.txt.txt
index 7e32ba431..52da01f9d 100644
--- a/test/example/c-api-kitchen-sink.txt.txt
+++ b/test/example/c-api-kitchen-sink.txt.txt
@@ -18,340 +18,509 @@
(local $4 i32)
(block $the-body
(block $the-nothing
- (block $the-value
- (i32.clz
- (i32.const -10)
- )
- (i64.ctz
- (i64.const -22)
- )
- (i32.popcnt
- (i32.const -10)
- )
- (f32.neg
- (f32.const -33.61199951171875)
- )
- (f64.abs
- (f64.const -9005.84)
- )
- (f32.ceil
- (f32.const -33.61199951171875)
- )
- (f64.floor
- (f64.const -9005.84)
- )
- (f32.trunc
- (f32.const -33.61199951171875)
- )
- (f32.nearest
- (f32.const -33.61199951171875)
- )
- (f64.sqrt
- (f64.const -9005.84)
- )
- (i32.eqz
- (i32.const -10)
- )
- (i64.extend_s/i32
- (i32.const -10)
- )
- (i64.extend_u/i32
- (i32.const -10)
- )
- (i32.wrap/i64
- (i64.const -22)
- )
- (i32.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_s/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i64.trunc_u/f32
- (f32.const -33.61199951171875)
- )
- (i32.trunc_s/f64
- (f64.const -9005.84)
- )
- (i64.trunc_s/f64
- (f64.const -9005.84)
- )
- (i32.trunc_u/f64
- (f64.const -9005.84)
- )
- (i64.trunc_u/f64
- (f64.const -9005.84)
- )
- (i32.reinterpret/f32
- (f32.const -33.61199951171875)
- )
- (i64.reinterpret/f64
- (f64.const -9005.84)
- )
- (f32.convert_s/i32
- (i32.const -10)
- )
- (f64.convert_s/i32
- (i32.const -10)
- )
- (f32.convert_u/i32
- (i32.const -10)
- )
- (f64.convert_u/i32
- (i32.const -10)
- )
- (f32.convert_s/i64
- (i64.const -22)
- )
- (f64.convert_s/i64
- (i64.const -22)
- )
- (f32.convert_u/i64
- (i64.const -22)
- )
- (f64.convert_u/i64
- (i64.const -22)
- )
- (f64.promote/f32
- (f32.const -33.61199951171875)
- )
- (f32.demote/f64
- (f64.const -9005.84)
- )
- (f32.reinterpret/i32
- (i32.const -10)
- )
- (f64.reinterpret/i64
- (i64.const -22)
- )
- (i32.add
- (i32.const -10)
- (i32.const -11)
- )
- (f64.sub
- (f64.const -9005.84)
- (f64.const -9007.33)
- )
- (i32.div_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.div_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.rem_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.rem_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.and
- (i32.const -10)
- (i32.const -11)
- )
- (i64.or
- (i64.const -22)
- (i64.const -23)
- )
- (i32.xor
- (i32.const -10)
- (i32.const -11)
- )
- (i64.shl
- (i64.const -22)
- (i64.const -23)
- )
- (i64.shr_u
- (i64.const -22)
- (i64.const -23)
- )
- (i32.shr_s
- (i32.const -10)
- (i32.const -11)
- )
- (i32.rotl
- (i32.const -10)
- (i32.const -11)
- )
- (i64.rotr
- (i64.const -22)
- (i64.const -23)
- )
- (f32.div
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.copysign
- (f64.const -9005.84)
- (f64.const -9007.33)
- )
- (f32.min
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.max
- (f64.const -9005.84)
- (f64.const -9007.33)
- )
- (i32.eq
- (i32.const -10)
- (i32.const -11)
- )
- (f32.ne
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (i32.lt_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.lt_u
- (i64.const -22)
- (i64.const -23)
- )
- (i64.le_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.le_u
- (i32.const -10)
- (i32.const -11)
- )
- (i64.gt_s
- (i64.const -22)
- (i64.const -23)
- )
- (i32.gt_u
- (i32.const -10)
- (i32.const -11)
- )
- (i32.ge_s
- (i32.const -10)
- (i32.const -11)
- )
- (i64.ge_u
- (i64.const -22)
- (i64.const -23)
- )
- (f32.lt
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (f64.le
- (f64.const -9005.84)
- (f64.const -9007.33)
- )
- (f64.gt
- (f64.const -9005.84)
- (f64.const -9007.33)
- )
- (f32.ge
- (f32.const -33.61199951171875)
- (f32.const -62.5)
- )
- (block
- )
- (if
- (i32.const 1)
- (i32.const 2)
- (i32.const 3)
- )
- (if
- (i32.const 4)
- (i32.const 5)
- )
- (loop $out $in
- (i32.const 0)
- )
- (loop $in2
- (i32.const 0)
- )
- (loop
- (i32.const 0)
- )
- (br_if $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_if $the-nothing
- (i32.const 2)
- )
- (br $the-value
- (i32.const 3)
- )
- (br $the-nothing)
- (br_table $the-value $the-value
- (i32.const 1)
- (i32.const 0)
- )
- (br_table $the-nothing $the-nothing
- (i32.const 2)
- )
- (i32.eqz
- (call "$kitchen()sinker"
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (block $the-value
+ (drop
+ (i32.clz
+ (i32.const -10)
+ )
)
- )
- (i32.eqz
- (i32.trunc_s/f32
- (call_import $an-imported
- (i32.const 13)
- (f64.const 3.7)
+ (drop
+ (i64.ctz
+ (i64.const -22)
)
)
- )
- (i32.eqz
- (call_indirect $iiIfF
- (i32.const 2449)
- (i32.const 13)
- (i64.const 37)
- (f32.const 1.2999999523162842)
- (f64.const 3.7)
+ (drop
+ (i32.popcnt
+ (i32.const -10)
+ )
)
+ (drop
+ (f32.neg
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.abs
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (f32.ceil
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.floor
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (f32.trunc
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.nearest
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f64.sqrt
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i64.extend_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (i32.wrap/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_s/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.trunc_u/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i32.trunc_s/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (i64.trunc_s/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (i32.trunc_u/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (i64.trunc_u/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (i64.reinterpret/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (f32.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.convert_u/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f32.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_s/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f32.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.convert_u/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.const -33.61199951171875)
+ )
+ )
+ (drop
+ (f32.demote/f64
+ (f64.const -9005.84)
+ )
+ )
+ (drop
+ (f32.reinterpret/i32
+ (i32.const -10)
+ )
+ )
+ (drop
+ (f64.reinterpret/i64
+ (i64.const -22)
+ )
+ )
+ (drop
+ (i32.add
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f64.sub
+ (f64.const -9005.84)
+ (f64.const -9007.33)
+ )
+ )
+ (drop
+ (i32.div_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.div_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.rem_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.rem_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.and
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.or
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.xor
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.shl
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.shr_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.shr_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.rotl
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.rotr
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.div
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.copysign
+ (f64.const -9005.84)
+ (f64.const -9007.33)
+ )
+ )
+ (drop
+ (f32.min
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.max
+ (f64.const -9005.84)
+ (f64.const -9007.33)
+ )
+ )
+ (drop
+ (i32.eq
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (f32.ne
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (i32.lt_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.lt_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i64.le_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.le_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.gt_s
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (i32.gt_u
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i32.ge_s
+ (i32.const -10)
+ (i32.const -11)
+ )
+ )
+ (drop
+ (i64.ge_u
+ (i64.const -22)
+ (i64.const -23)
+ )
+ )
+ (drop
+ (f32.lt
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (drop
+ (f64.le
+ (f64.const -9005.84)
+ (f64.const -9007.33)
+ )
+ )
+ (drop
+ (f64.gt
+ (f64.const -9005.84)
+ (f64.const -9007.33)
+ )
+ )
+ (drop
+ (f32.ge
+ (f32.const -33.61199951171875)
+ (f32.const -62.5)
+ )
+ )
+ (block
+ )
+ (drop
+ (if
+ (i32.const 1)
+ (i32.const 2)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.const 4)
+ (i32.const 5)
+ )
+ (drop
+ (loop $out $in
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop $in2
+ (i32.const 0)
+ )
+ )
+ (drop
+ (loop
+ (i32.const 0)
+ )
+ )
+ (br_if $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_if $the-nothing
+ (i32.const 2)
+ )
+ (br $the-value
+ (i32.const 3)
+ )
+ (br $the-nothing)
+ (br_table $the-value $the-value
+ (i32.const 1)
+ (i32.const 0)
+ )
+ (br_table $the-nothing $the-nothing
+ (i32.const 2)
+ )
+ (drop
+ (i32.eqz
+ (call "$kitchen()sinker"
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.trunc_s/f32
+ (call_import $an-imported
+ (i32.const 13)
+ (f64.const 3.7)
+ )
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (call_indirect $iiIfF
+ (i32.const 2449)
+ (i32.const 13)
+ (i64.const 37)
+ (f32.const 1.2999999523162842)
+ (f64.const 3.7)
+ )
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (set_local $0
+ (i32.const 101)
+ )
+ (drop
+ (tee_local $0
+ (i32.const 102)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i64.load8_s offset=2 align=4
+ (i32.const 8)
+ )
+ )
+ (drop
+ (f32.load
+ (i32.const 2)
+ )
+ )
+ (drop
+ (f64.load offset=2
+ (i32.const 9)
+ )
+ )
+ (i32.store
+ (i32.const 10)
+ (i32.const 11)
+ )
+ (i64.store offset=2 align=4
+ (i32.const 110)
+ (i64.const 111)
+ )
+ (drop
+ (select
+ (i32.const 3)
+ (i32.const 5)
+ (i32.const 1)
+ )
+ )
+ (return
+ (i32.const 1337)
+ )
+ (nop)
+ (unreachable)
)
- (get_local $0)
- (set_local $0
- (i32.const 101)
- )
- (i32.load
- (i32.const 1)
- )
- (i64.load8_s offset=2 align=4
- (i32.const 8)
- )
- (f32.load
- (i32.const 2)
- )
- (f64.load offset=2
- (i32.const 9)
- )
- (i32.store
- (i32.const 10)
- (i32.const 11)
- )
- (i64.store offset=2 align=4
- (i32.const 110)
- (i64.const 111)
- )
- (select
- (i32.const 3)
- (i32.const 5)
- (i32.const 1)
- )
- (return
- (i32.const 1337)
- )
- (nop)
- (unreachable)
)
)
(i32.const 42)
@@ -396,7 +565,9 @@
(i32.const 0)
)
(block
- (i32.const 77)
+ (drop
+ (i32.const 77)
+ )
(br $block$2$break)
)
)
@@ -435,7 +606,9 @@
(i32.const 0)
)
(block
- (i32.const 33)
+ (drop
+ (i32.const 33)
+ )
(br $block$2$break)
)
)
@@ -444,7 +617,9 @@
(i32.const 1)
)
(block
- (i32.const -66)
+ (drop
+ (i32.const -66)
+ )
(br $shape$0$continue)
)
)
@@ -477,7 +652,9 @@
(if
(i32.const 55)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(block
(call_import $check
(i32.const 1)
@@ -485,7 +662,9 @@
)
)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(block
(call_import $check
(i32.const 2)
@@ -528,19 +707,25 @@
(if
(i32.const 55)
(block
- (i32.const -1)
+ (drop
+ (i32.const -1)
+ )
(block
(call_import $check
(i32.const 1)
)
(block
- (i32.const -3)
+ (drop
+ (i32.const -3)
+ )
(br $block$3$break)
)
)
)
(block
- (i32.const -2)
+ (drop
+ (i32.const -2)
+ )
(br $block$3$break)
)
)
@@ -620,7 +805,9 @@
(i32.const 0)
)
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $block$2$break)
)
)
@@ -636,7 +823,9 @@
(i32.const -2)
(br $block$3$break)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(br $block$7$break)
)
)
@@ -649,7 +838,9 @@
(i32.const -6)
(br $block$4$break)
(block
- (i32.const 30)
+ (drop
+ (i32.const 30)
+ )
(br $shape$1$continue)
)
)
@@ -679,7 +870,9 @@
(i32.const 5)
)
(block
- (i32.const 40)
+ (drop
+ (i32.const 40)
+ )
(br $block$7$break)
)
)
@@ -715,7 +908,9 @@
(br $switch$1$leave)
)
(block
- (i32.const 55)
+ (drop
+ (i32.const 55)
+ )
(block
(call_import $check
(i32.const 2)
diff --git a/test/example/relooper-fuzz.c b/test/example/relooper-fuzz.c
index 65d00aa5d..9fd11096f 100644
--- a/test/example/relooper-fuzz.c
+++ b/test/example/relooper-fuzz.c
@@ -31,7 +31,8 @@ int main() {
BinaryenAddInt32(),
BinaryenLoad(module, 4, 0, 0, 0, BinaryenInt32(), BinaryenConst(module, BinaryenLiteralInt32(4))),
BinaryenConst(module, BinaryenLiteralInt32(4))
- )
+ ),
+ BinaryenInt32()
);
// optionally, print the return value
@@ -235,7 +236,8 @@ int main() {
full[i] = BinaryenStore(module,
4, 0, 0,
BinaryenConst(module, BinaryenLiteralInt32(8 + 4 * i)),
- BinaryenConst(module, BinaryenLiteralInt32(decisions[i]))
+ BinaryenConst(module, BinaryenLiteralInt32(decisions[i])),
+ BinaryenInt32()
);
}
}
diff --git a/test/example/relooper-fuzz.txt b/test/example/relooper-fuzz.txt
index b4e6c8b57..2836a05de 100644
--- a/test/example/relooper-fuzz.txt
+++ b/test/example/relooper-fuzz.txt
@@ -463,7 +463,9 @@
(call_import $print
(i32.const 8)
)
- (call $check)
+ (drop
+ (call $check)
+ )
)
)
(loop $shape$3$continue
@@ -503,7 +505,7 @@
(if
(i32.eq
(i32.rem_u
- (set_local $1
+ (tee_local $1
(call $check)
)
(i32.const 3)
@@ -530,7 +532,9 @@
(call_import $print
(i32.const 2)
)
- (call $check)
+ (drop
+ (call $check)
+ )
(set_local $0
(i32.const 6)
)
diff --git a/test/example/relooper-fuzz1.c b/test/example/relooper-fuzz1.c
index fbbbfdd59..cca61e4f4 100644
--- a/test/example/relooper-fuzz1.c
+++ b/test/example/relooper-fuzz1.c
@@ -33,7 +33,8 @@ int main() {
BinaryenLoad(module, 4, 0, 0, 0, BinaryenInt32(),
BinaryenConst(module, BinaryenLiteralInt32(4))),
BinaryenConst(module, BinaryenLiteralInt32(4))
- )
+ ),
+ BinaryenInt32()
);
// optionally, print the return value
@@ -288,7 +289,8 @@ int main() {
full[i] = BinaryenStore(module,
4, 0, 0,
BinaryenConst(module, BinaryenLiteralInt32(8 + 4 * i)),
- BinaryenConst(module, BinaryenLiteralInt32(decisions[i]))
+ BinaryenConst(module, BinaryenLiteralInt32(decisions[i])),
+ BinaryenInt32()
);
}
}
diff --git a/test/example/relooper-fuzz1.txt b/test/example/relooper-fuzz1.txt
index 437dab062..32456c82a 100644
--- a/test/example/relooper-fuzz1.txt
+++ b/test/example/relooper-fuzz1.txt
@@ -440,7 +440,7 @@
(if
(i32.ne
(i32.rem_u
- (set_local $0
+ (tee_local $0
(call $check)
)
(i32.const 4)
@@ -489,13 +489,17 @@
(call_import $print
(i32.const 3)
)
- (call $check)
+ (drop
+ (call $check)
+ )
(br $shape$6$continue)
)
)
(call_import $print
(i32.const 9)
)
- (call $check)
+ (drop
+ (call $check)
+ )
)
)
diff --git a/test/kitchen_sink.wast b/test/kitchen_sink.wast
index 2b139a95b..01fc1e241 100644
--- a/test/kitchen_sink.wast
+++ b/test/kitchen_sink.wast
@@ -4,428 +4,662 @@
(type $0 (func (result i32)))
(func $kitchensink (type $0) (result i32)
(block $block0
- (i32.add
- (i32.const 10)
- (i32.const 10)
- )
- (i32.sub
- (i32.const 10)
- (i32.const 10)
- )
- (i32.mul
- (i32.const 10)
- (i32.const 10)
- )
- (i32.div_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.div_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.rem_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.rem_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.and
- (i32.const 10)
- (i32.const 10)
- )
- (i32.or
- (i32.const 10)
- (i32.const 10)
- )
- (i32.xor
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shl
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shr_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shr_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.eq
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ne
- (i32.const 10)
- (i32.const 10)
- )
- (i32.lt_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.le_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.lt_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.le_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.gt_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ge_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.gt_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ge_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.clz
- (i32.const 10)
- )
- (i32.ctz
- (i32.const 10)
- )
- (i32.popcnt
- (i32.const 10)
- )
- (i64.add
- (i64.const 100)
- (i64.const 100)
- )
- (i64.sub
- (i64.const 100)
- (i64.const 100)
- )
- (i64.mul
- (i64.const 100)
- (i64.const 100)
- )
- (i64.div_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.div_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.rem_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.rem_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.and
- (i64.const 100)
- (i64.const 100)
- )
- (i64.or
- (i64.const 100)
- (i64.const 100)
- )
- (i64.xor
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shl
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shr_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shr_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.eq
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ne
- (i64.const 100)
- (i64.const 100)
- )
- (i64.lt_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.le_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.lt_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.le_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.gt_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ge_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.gt_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ge_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.clz
- (i64.const 100)
- )
- (i64.ctz
- (i64.const 100)
- )
- (i64.popcnt
- (i64.const 100)
- )
- (f32.add
- (f32.const 10)
- (f32.const 10)
- )
- (f32.sub
- (f32.const 10)
- (f32.const 10)
- )
- (f32.mul
- (f32.const 10)
- (f32.const 10)
- )
- (f32.div
- (f32.const 10)
- (f32.const 10)
- )
- (f32.min
- (f32.const 10)
- (f32.const 10)
- )
- (f32.max
- (f32.const 10)
- (f32.const 10)
- )
- (f32.abs
- (f32.const 10)
- )
- (f32.neg
- (f32.const 10)
- )
- (f32.copysign
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ceil
- (f32.const 10)
- )
- (f32.floor
- (f32.const 10)
- )
- (f32.trunc
- (f32.const 10)
- )
- (f32.nearest
- (f32.const 10)
- )
- (f32.sqrt
- (f32.const 10)
- )
- (f32.eq
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ne
- (f32.const 10)
- (f32.const 10)
- )
- (f32.lt
- (f32.const 10)
- (f32.const 10)
- )
- (f32.le
- (f32.const 10)
- (f32.const 10)
- )
- (f32.gt
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ge
- (f32.const 10)
- (f32.const 10)
- )
- (f64.add
- (f64.const 10)
- (f64.const 10)
- )
- (f64.sub
- (f64.const 10)
- (f64.const 10)
- )
- (f64.mul
- (f64.const 10)
- (f64.const 10)
- )
- (f64.div
- (f64.const 10)
- (f64.const 10)
- )
- (f64.min
- (f64.const 10)
- (f64.const 10)
- )
- (f64.max
- (f64.const 10)
- (f64.const 10)
- )
- (f64.abs
- (f64.const 10)
- )
- (f64.neg
- (f64.const 10)
- )
- (f64.copysign
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ceil
- (f64.const 10)
- )
- (f64.floor
- (f64.const 10)
- )
- (f64.trunc
- (f64.const 10)
- )
- (f64.nearest
- (f64.const 10)
- )
- (f64.sqrt
- (f64.const 10)
- )
- (f64.eq
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ne
- (f64.const 10)
- (f64.const 10)
- )
- (f64.lt
- (f64.const 10)
- (f64.const 10)
- )
- (f64.le
- (f64.const 10)
- (f64.const 10)
- )
- (f64.gt
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ge
- (f64.const 10)
- (f64.const 10)
- )
- (i32.trunc_s/f32
- (f32.const 10)
- )
- (i32.trunc_s/f64
- (f64.const 10)
- )
- (i32.trunc_u/f32
- (f32.const 10)
- )
- (i32.trunc_u/f64
- (f64.const 10)
- )
- (i32.wrap/i64
- (i64.const 100)
- )
- (i64.trunc_s/f32
- (f32.const 10)
- )
- (i64.trunc_s/f64
- (f64.const 10)
- )
- (i64.trunc_u/f32
- (f32.const 10)
- )
- (i64.trunc_u/f64
- (f64.const 10)
- )
- (i64.extend_s/i32
- (i32.const 10)
- )
- (i64.extend_u/i32
- (i32.const 10)
- )
- (f32.convert_s/i32
- (i32.const 10)
- )
- (f32.convert_u/i32
- (i32.const 10)
- )
- (f32.convert_s/i64
- (i64.const 100)
- )
- (f32.convert_u/i64
- (i64.const 100)
- )
- (f32.demote/f64
- (f64.const 10)
- )
- (f32.reinterpret/i32
- (i32.const 10)
- )
- (f64.convert_s/i32
- (i32.const 10)
- )
- (f64.convert_u/i32
- (i32.const 10)
- )
- (f64.convert_s/i64
- (i64.const 100)
- )
- (f64.convert_u/i64
- (i64.const 100)
- )
- (f64.promote/f32
- (f32.const 10)
- )
- (f64.reinterpret/i64
- (i64.const 100)
- )
- (i32.reinterpret/f32
- (f32.const 10)
- )
- (i64.reinterpret/f64
- (f64.const 10)
+ (drop
+ (i32.add
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.sub
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.mul
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.div_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.div_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.rem_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.rem_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.and
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.or
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.xor
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shl
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shr_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shr_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.eq
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ne
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.lt_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.le_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.lt_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.le_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.gt_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ge_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.gt_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ge_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.clz
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ctz
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.popcnt
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i64.add
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.sub
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.mul
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.div_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.div_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.rem_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.rem_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.and
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.or
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.xor
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shl
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shr_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shr_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.eq
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ne
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.lt_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.le_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.lt_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.le_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.gt_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ge_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.gt_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ge_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.clz
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ctz
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.popcnt
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.add
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.sub
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.mul
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.div
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.min
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.max
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.abs
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.neg
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.copysign
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ceil
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.floor
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.trunc
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.nearest
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.sqrt
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.eq
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ne
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.lt
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.le
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.gt
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ge
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f64.add
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.sub
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.mul
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.div
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.min
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.max
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.abs
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.neg
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.copysign
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ceil
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.floor
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.trunc
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.nearest
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.sqrt
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.eq
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ne
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.lt
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.le
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.gt
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ge
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_s/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_s/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_u/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_u/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.wrap/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.trunc_s/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_s/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_u/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_u/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i64.extend_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i64.extend_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_s/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.convert_u/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.demote/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f32.reinterpret/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_s/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f64.convert_u/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f64.reinterpret/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.reinterpret/f64
+ (f64.const 10)
+ )
)
(i32.const 0)
)
diff --git a/test/kitchen_sink.wast.fromBinary b/test/kitchen_sink.wast.fromBinary
index dd55b5bae..4c3da110c 100644
--- a/test/kitchen_sink.wast.fromBinary
+++ b/test/kitchen_sink.wast.fromBinary
@@ -4,428 +4,662 @@
(type $0 (func (result i32)))
(func $kitchensink (type $0) (result i32)
(block $label$0
- (i32.add
- (i32.const 10)
- (i32.const 10)
- )
- (i32.sub
- (i32.const 10)
- (i32.const 10)
- )
- (i32.mul
- (i32.const 10)
- (i32.const 10)
- )
- (i32.div_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.div_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.rem_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.rem_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.and
- (i32.const 10)
- (i32.const 10)
- )
- (i32.or
- (i32.const 10)
- (i32.const 10)
- )
- (i32.xor
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shl
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shr_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.shr_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.eq
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ne
- (i32.const 10)
- (i32.const 10)
- )
- (i32.lt_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.le_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.lt_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.le_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.gt_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ge_s
- (i32.const 10)
- (i32.const 10)
- )
- (i32.gt_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.ge_u
- (i32.const 10)
- (i32.const 10)
- )
- (i32.clz
- (i32.const 10)
- )
- (i32.ctz
- (i32.const 10)
- )
- (i32.popcnt
- (i32.const 10)
- )
- (i64.add
- (i64.const 100)
- (i64.const 100)
- )
- (i64.sub
- (i64.const 100)
- (i64.const 100)
- )
- (i64.mul
- (i64.const 100)
- (i64.const 100)
- )
- (i64.div_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.div_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.rem_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.rem_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.and
- (i64.const 100)
- (i64.const 100)
- )
- (i64.or
- (i64.const 100)
- (i64.const 100)
- )
- (i64.xor
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shl
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shr_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.shr_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.eq
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ne
- (i64.const 100)
- (i64.const 100)
- )
- (i64.lt_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.le_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.lt_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.le_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.gt_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ge_s
- (i64.const 100)
- (i64.const 100)
- )
- (i64.gt_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.ge_u
- (i64.const 100)
- (i64.const 100)
- )
- (i64.clz
- (i64.const 100)
- )
- (i64.ctz
- (i64.const 100)
- )
- (i64.popcnt
- (i64.const 100)
- )
- (f32.add
- (f32.const 10)
- (f32.const 10)
- )
- (f32.sub
- (f32.const 10)
- (f32.const 10)
- )
- (f32.mul
- (f32.const 10)
- (f32.const 10)
- )
- (f32.div
- (f32.const 10)
- (f32.const 10)
- )
- (f32.min
- (f32.const 10)
- (f32.const 10)
- )
- (f32.max
- (f32.const 10)
- (f32.const 10)
- )
- (f32.abs
- (f32.const 10)
- )
- (f32.neg
- (f32.const 10)
- )
- (f32.copysign
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ceil
- (f32.const 10)
- )
- (f32.floor
- (f32.const 10)
- )
- (f32.trunc
- (f32.const 10)
- )
- (f32.nearest
- (f32.const 10)
- )
- (f32.sqrt
- (f32.const 10)
- )
- (f32.eq
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ne
- (f32.const 10)
- (f32.const 10)
- )
- (f32.lt
- (f32.const 10)
- (f32.const 10)
- )
- (f32.le
- (f32.const 10)
- (f32.const 10)
- )
- (f32.gt
- (f32.const 10)
- (f32.const 10)
- )
- (f32.ge
- (f32.const 10)
- (f32.const 10)
- )
- (f64.add
- (f64.const 10)
- (f64.const 10)
- )
- (f64.sub
- (f64.const 10)
- (f64.const 10)
- )
- (f64.mul
- (f64.const 10)
- (f64.const 10)
- )
- (f64.div
- (f64.const 10)
- (f64.const 10)
- )
- (f64.min
- (f64.const 10)
- (f64.const 10)
- )
- (f64.max
- (f64.const 10)
- (f64.const 10)
- )
- (f64.abs
- (f64.const 10)
- )
- (f64.neg
- (f64.const 10)
- )
- (f64.copysign
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ceil
- (f64.const 10)
- )
- (f64.floor
- (f64.const 10)
- )
- (f64.trunc
- (f64.const 10)
- )
- (f64.nearest
- (f64.const 10)
- )
- (f64.sqrt
- (f64.const 10)
- )
- (f64.eq
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ne
- (f64.const 10)
- (f64.const 10)
- )
- (f64.lt
- (f64.const 10)
- (f64.const 10)
- )
- (f64.le
- (f64.const 10)
- (f64.const 10)
- )
- (f64.gt
- (f64.const 10)
- (f64.const 10)
- )
- (f64.ge
- (f64.const 10)
- (f64.const 10)
- )
- (i32.trunc_s/f32
- (f32.const 10)
- )
- (i32.trunc_s/f64
- (f64.const 10)
- )
- (i32.trunc_u/f32
- (f32.const 10)
- )
- (i32.trunc_u/f64
- (f64.const 10)
- )
- (i32.wrap/i64
- (i64.const 100)
- )
- (i64.trunc_s/f32
- (f32.const 10)
- )
- (i64.trunc_s/f64
- (f64.const 10)
- )
- (i64.trunc_u/f32
- (f32.const 10)
- )
- (i64.trunc_u/f64
- (f64.const 10)
- )
- (i64.extend_s/i32
- (i32.const 10)
- )
- (i64.extend_u/i32
- (i32.const 10)
- )
- (f32.convert_s/i32
- (i32.const 10)
- )
- (f32.convert_u/i32
- (i32.const 10)
- )
- (f32.convert_s/i64
- (i64.const 100)
- )
- (f32.convert_u/i64
- (i64.const 100)
- )
- (f32.demote/f64
- (f64.const 10)
- )
- (f32.reinterpret/i32
- (i32.const 10)
- )
- (f64.convert_s/i32
- (i32.const 10)
- )
- (f64.convert_u/i32
- (i32.const 10)
- )
- (f64.convert_s/i64
- (i64.const 100)
- )
- (f64.convert_u/i64
- (i64.const 100)
- )
- (f64.promote/f32
- (f32.const 10)
- )
- (f64.reinterpret/i64
- (i64.const 100)
- )
- (i32.reinterpret/f32
- (f32.const 10)
- )
- (i64.reinterpret/f64
- (f64.const 10)
+ (drop
+ (i32.add
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.sub
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.mul
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.div_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.div_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.rem_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.rem_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.and
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.or
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.xor
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shl
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shr_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.shr_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.eq
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ne
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.lt_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.le_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.lt_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.le_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.gt_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ge_s
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.gt_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ge_u
+ (i32.const 10)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.clz
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.ctz
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.popcnt
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i64.add
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.sub
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.mul
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.div_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.div_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.rem_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.rem_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.and
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.or
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.xor
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shl
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shr_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.shr_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.eq
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ne
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.lt_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.le_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.lt_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.le_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.gt_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ge_s
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.gt_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ge_u
+ (i64.const 100)
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.clz
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.ctz
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.popcnt
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.add
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.sub
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.mul
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.div
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.min
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.max
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.abs
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.neg
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.copysign
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ceil
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.floor
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.trunc
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.nearest
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.sqrt
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.eq
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ne
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.lt
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.le
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.gt
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f32.ge
+ (f32.const 10)
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f64.add
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.sub
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.mul
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.div
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.min
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.max
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.abs
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.neg
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.copysign
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ceil
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.floor
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.trunc
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.nearest
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.sqrt
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.eq
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ne
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.lt
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.le
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.gt
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f64.ge
+ (f64.const 10)
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_s/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_s/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_u/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i32.trunc_u/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i32.wrap/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i64.trunc_s/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_s/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_u/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.trunc_u/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (i64.extend_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i64.extend_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f32.convert_s/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.convert_u/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f32.demote/f64
+ (f64.const 10)
+ )
+ )
+ (drop
+ (f32.reinterpret/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_u/i32
+ (i32.const 10)
+ )
+ )
+ (drop
+ (f64.convert_s/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f64.convert_u/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (f64.reinterpret/i64
+ (i64.const 100)
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (f32.const 10)
+ )
+ )
+ (drop
+ (i64.reinterpret/f64
+ (f64.const 10)
+ )
)
(i32.const 0)
)
diff --git a/test/llvm_autogenerated/byval.wast b/test/llvm_autogenerated/byval.wast
index c4dc678ea..9ef6f368c 100644
--- a/test/llvm_autogenerated/byval.wast
+++ b/test/llvm_autogenerated/byval.wast
@@ -19,18 +19,27 @@
(export "byval_empty_caller" $byval_empty_caller)
(export "byval_empty_callee" $byval_empty_callee)
(export "big_byval" $big_byval)
- (func $byval_arg (param $0 i32)
+ (func $byval_arg (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
+ (local $2 i32)
(i32.store offset=12
- (set_local $1
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $1
+ (block
+ (block
+ (set_local $2
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $2)
)
- (i32.const 16)
)
+ (get_local $2)
)
)
(i32.load
@@ -52,18 +61,27 @@
)
(return)
)
- (func $byval_arg_align8 (param $0 i32)
+ (func $byval_arg_align8 (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
+ (local $2 i32)
(i32.store offset=8
- (set_local $1
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $1
+ (block
+ (block
+ (set_local $2
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $2)
)
- (i32.const 16)
)
+ (get_local $2)
)
)
(i32.load
@@ -85,19 +103,28 @@
)
(return)
)
- (func $byval_arg_double (param $0 i32)
+ (func $byval_arg_double (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
+ (local $2 i32)
(i64.store
(i32.add
- (set_local $1
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $1
+ (block
+ (block
+ (set_local $2
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $2)
)
- (i32.const 16)
)
+ (get_local $2)
)
)
(i32.const 8)
@@ -127,36 +154,45 @@
)
(return)
)
- (func $byval_param (param $0 i32)
+ (func $byval_param (type $FUNCSIG$vi) (param $0 i32)
(call_import $ext_func
(get_local $0)
)
(return)
)
- (func $byval_empty_caller (param $0 i32)
+ (func $byval_empty_caller (type $FUNCSIG$vi) (param $0 i32)
(call_import $ext_byval_func_empty
(get_local $0)
)
(return)
)
- (func $byval_empty_callee (param $0 i32)
+ (func $byval_empty_callee (type $FUNCSIG$vi) (param $0 i32)
(call_import $ext_func_empty
(get_local $0)
)
(return)
)
- (func $big_byval (param $0 i32)
+ (func $big_byval (type $FUNCSIG$vi) (param $0 i32)
+ (local $1 i32)
(call_import $big_byval_callee
- (set_local $0
+ (tee_local $0
(call_import $memcpy
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 131072)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $1)
)
- (i32.const 131072)
)
+ (get_local $1)
)
(get_local $0)
(i32.const 131072)
diff --git a/test/llvm_autogenerated/cfg-stackify.wast b/test/llvm_autogenerated/cfg-stackify.wast
index 2dbdd5e93..2831cf9ab 100644
--- a/test/llvm_autogenerated/cfg-stackify.wast
+++ b/test/llvm_autogenerated/cfg-stackify.wast
@@ -4,6 +4,11 @@
(export "memory" memory)
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$v (func))
+ (type $2 (func (param i32)))
+ (type $3 (func (param i32 i32)))
+ (type $4 (func (param i32 i32 i32) (result i32)))
+ (type $5 (func (param i32 i32) (result i32)))
+ (type $6 (func (param i32) (result i32)))
(import $a "env" "a" (result i32))
(import $bar "env" "bar")
(import $something "env" "something")
@@ -34,7 +39,7 @@
(export "test13" $test13)
(export "test14" $test14)
(export "test15" $test15)
- (func $test0 (param $0 i32)
+ (func $test0 (type $2) (param $0 i32)
(local $1 i32)
(set_local $1
(i32.const 0)
@@ -43,7 +48,7 @@
(block $label$2
(br_if $label$2
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -58,7 +63,7 @@
(br $label$0)
)
)
- (func $test1 (param $0 i32)
+ (func $test1 (type $2) (param $0 i32)
(local $1 i32)
(set_local $1
(i32.const 0)
@@ -67,7 +72,7 @@
(block $label$2
(br_if $label$2
(i32.lt_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 1)
@@ -82,7 +87,7 @@
(br $label$0)
)
)
- (func $test2 (param $0 i32) (param $1 i32)
+ (func $test2 (type $3) (param $0 i32) (param $1 i32)
(block $label$0
(br_if $label$0
(i32.lt_s
@@ -107,7 +112,7 @@
)
)
(br_if $label$1
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const -1)
@@ -118,7 +123,7 @@
)
(return)
)
- (func $doublediamond (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $doublediamond (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(i32.store
(get_local $2)
(i32.const 0)
@@ -161,12 +166,21 @@
(i32.const 0)
)
)
- (func $triangle (param $0 i32) (param $1 i32) (result i32)
+ (func $triangle (type $5) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
+ (local $3 i32)
(set_local $2
- (i32.store
- (get_local $0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $3
+ (i32.const 0)
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $3)
+ )
+ )
+ (get_local $3)
)
)
(block $label$0
@@ -186,7 +200,7 @@
(get_local $2)
)
)
- (func $diamond (param $0 i32) (param $1 i32) (result i32)
+ (func $diamond (type $5) (param $0 i32) (param $1 i32) (result i32)
(i32.store
(get_local $0)
(i32.const 0)
@@ -215,15 +229,24 @@
(i32.const 0)
)
)
- (func $single_block (param $0 i32) (result i32)
+ (func $single_block (type $6) (param $0 i32) (result i32)
+ (local $1 i32)
(return
- (i32.store
- (get_local $0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $1
+ (i32.const 0)
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ (get_local $1)
)
)
)
- (func $minimal_loop (param $0 i32) (result i32)
+ (func $minimal_loop (type $6) (param $0 i32) (result i32)
(i32.store
(get_local $0)
(i32.const 0)
@@ -236,7 +259,7 @@
(br $label$0)
)
)
- (func $simple_loop (param $0 i32) (param $1 i32) (result i32)
+ (func $simple_loop (type $5) (param $0 i32) (param $1 i32) (result i32)
(i32.store
(get_local $0)
(i32.const 0)
@@ -260,12 +283,21 @@
(i32.const 0)
)
)
- (func $doubletriangle (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $doubletriangle (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
+ (local $4 i32)
(set_local $3
- (i32.store
- (get_local $2)
- (i32.const 0)
+ (block
+ (block
+ (set_local $4
+ (i32.const 0)
+ )
+ (i32.store
+ (get_local $2)
+ (get_local $4)
+ )
+ )
+ (get_local $4)
)
)
(block $label$0
@@ -298,7 +330,7 @@
(get_local $3)
)
)
- (func $ifelse_earlyexits (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $ifelse_earlyexits (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(i32.store
(get_local $2)
(i32.const 0)
@@ -334,7 +366,7 @@
(i32.const 0)
)
)
- (func $doublediamond_in_a_loop (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $doublediamond_in_a_loop (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(loop $label$1 $label$0
(i32.store
(get_local $2)
@@ -383,7 +415,7 @@
(br $label$0)
)
)
- (func $test3 (param $0 i32)
+ (func $test3 (type $2) (param $0 i32)
(block $label$0
(br_if $label$0
(i32.const 0)
@@ -412,7 +444,7 @@
)
(return)
)
- (func $test4 (param $0 i32)
+ (func $test4 (type $2) (param $0 i32)
(block $label$0
(block $label$1
(br_if $label$1
@@ -426,9 +458,11 @@
(get_local $0)
)
)
- (i32.eq
- (get_local $0)
- (i32.const 2)
+ (drop
+ (i32.eq
+ (get_local $0)
+ (i32.const 2)
+ )
)
(br $label$0)
)
@@ -450,8 +484,9 @@
)
(return)
)
- (func $test5 (param $0 i32) (param $1 i32)
+ (func $test5 (type $3) (param $0 i32) (param $1 i32)
(local $2 i32)
+ (local $3 i32)
(set_local $2
(i32.and
(get_local $0)
@@ -467,9 +502,17 @@
(block $label$0
(loop $label$2 $label$1
(set_local $0
- (i32.store
- (i32.const 0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $3
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 0)
+ (get_local $3)
+ )
+ )
+ (get_local $3)
)
)
(br_if $label$0
@@ -497,10 +540,12 @@
)
(return)
)
- (func $test6 (param $0 i32) (param $1 i32)
+ (func $test6 (type $3) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
(set_local $3
(i32.and
(get_local $0)
@@ -511,9 +556,17 @@
(block $label$1
(loop $label$3 $label$2
(set_local $0
- (i32.store
- (i32.const 0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $5
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 0)
+ (get_local $5)
+ )
+ )
+ (get_local $5)
)
)
(br_if $label$0
@@ -523,13 +576,21 @@
)
(br_if $label$1
(i32.eqz
- (set_local $4
+ (tee_local $4
(i32.and
(get_local $1)
- (set_local $2
- (i32.store
- (get_local $0)
- (i32.const 1)
+ (tee_local $2
+ (block
+ (block
+ (set_local $6
+ (i32.const 1)
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $6)
+ )
+ )
+ (get_local $6)
)
)
)
@@ -561,13 +622,23 @@
)
(return)
)
- (func $test7 (param $0 i32) (param $1 i32)
+ (func $test7 (type $3) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
(set_local $2
- (i32.store
- (i32.const 0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $4
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 0)
+ (get_local $4)
+ )
+ )
+ (get_local $4)
)
)
(set_local $3
@@ -578,9 +649,17 @@
)
(loop $label$1 $label$0
(set_local $0
- (i32.store
- (get_local $2)
- (i32.const 1)
+ (block
+ (block
+ (set_local $5
+ (i32.const 1)
+ )
+ (i32.store
+ (get_local $2)
+ (get_local $5)
+ )
+ )
+ (get_local $5)
)
)
(block $label$2
@@ -620,7 +699,7 @@
)
(unreachable)
)
- (func $test8 (result i32)
+ (func $test8 (type $FUNCSIG$i) (result i32)
(loop $label$1 $label$0
(br_if $label$0
(i32.const 0)
@@ -628,23 +707,41 @@
(br $label$0)
)
)
- (func $test9
+ (func $test9 (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
(set_local $0
- (i32.store
- (i32.const 0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $2
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 0)
+ (get_local $2)
+ )
+ )
+ (get_local $2)
)
)
(loop $label$1 $label$0
(br_if $label$1
(i32.eqz
(i32.and
- (set_local $1
- (i32.store
- (get_local $0)
- (i32.const 1)
+ (tee_local $1
+ (block
+ (block
+ (set_local $3
+ (i32.const 1)
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $3)
+ )
+ )
+ (get_local $3)
)
)
(call_import $a)
@@ -700,7 +797,7 @@
)
(return)
)
- (func $test10
+ (func $test10 (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(local $2 i32)
@@ -739,7 +836,7 @@
(loop $label$6 $label$5
(br_if $label$0
(i32.gt_u
- (set_local $2
+ (tee_local $2
(get_local $4)
)
(i32.const 4)
@@ -761,17 +858,26 @@
(br $label$0)
)
)
- (func $test11
+ (func $test11 (type $FUNCSIG$v)
(local $0 i32)
+ (local $1 i32)
(block $label$0
(block $label$1
(block $label$2
(block $label$3
(br_if $label$3
- (set_local $0
- (i32.store
- (i32.const 0)
- (i32.const 0)
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 0)
+ (get_local $1)
+ )
+ )
+ (get_local $1)
)
)
)
@@ -832,14 +938,14 @@
)
(return)
)
- (func $test12 (param $0 i32)
+ (func $test12 (type $2) (param $0 i32)
(local $1 i32)
(loop $label$1 $label$0
(block $label$2
(block $label$3
(br_if $label$3
(i32.gt_s
- (set_local $1
+ (tee_local $1
(i32.load8_u
(get_local $0)
)
@@ -884,7 +990,7 @@
)
(return)
)
- (func $test13
+ (func $test13 (type $FUNCSIG$v)
(local $0 i32)
(block $label$0
(block $label$1
@@ -914,7 +1020,7 @@
)
(unreachable)
)
- (func $test14
+ (func $test14 (type $FUNCSIG$v)
(loop $label$1 $label$0
(br_if $label$0
(i32.const 0)
@@ -927,7 +1033,7 @@
)
(return)
)
- (func $test15
+ (func $test15 (type $FUNCSIG$v)
(local $0 i32)
(local $1 i32)
(block $label$0
@@ -947,7 +1053,7 @@
(i32.const 0)
)
(br_if $label$3
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $0)
(i32.const -4)
diff --git a/test/llvm_autogenerated/dead-vreg.wast b/test/llvm_autogenerated/dead-vreg.wast
index be6e82cfd..171f3c388 100644
--- a/test/llvm_autogenerated/dead-vreg.wast
+++ b/test/llvm_autogenerated/dead-vreg.wast
@@ -2,14 +2,16 @@
(memory 1)
(data (i32.const 4) "\10\04\00\00")
(export "memory" memory)
+ (type $0 (func (param i32 i32 i32)))
(export "foo" $foo)
- (func $foo (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $foo (type $0) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
+ (local $9 i32)
(block $label$0
(br_if $label$0
(i32.lt_s
@@ -49,9 +51,17 @@
(loop $label$5 $label$4
(set_local $6
(i32.add
- (i32.store
- (get_local $7)
- (get_local $6)
+ (block
+ (block
+ (set_local $9
+ (get_local $6)
+ )
+ (i32.store
+ (get_local $7)
+ (get_local $9)
+ )
+ )
+ (get_local $9)
)
(get_local $5)
)
@@ -63,7 +73,7 @@
)
)
(br_if $label$4
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $8)
(i32.const -1)
@@ -80,7 +90,7 @@
)
(br_if $label$1
(i32.ne
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $5)
(i32.const 1)
diff --git a/test/llvm_autogenerated/i128.wast b/test/llvm_autogenerated/i128.wast
index 830c1433c..d76ae4df8 100644
--- a/test/llvm_autogenerated/i128.wast
+++ b/test/llvm_autogenerated/i128.wast
@@ -4,6 +4,8 @@
(export "memory" memory)
(type $FUNCSIG$vijji (func (param i32 i64 i64 i32)))
(type $FUNCSIG$vijjjj (func (param i32 i64 i64 i64 i64)))
+ (type $2 (func (param i32 i64 i64)))
+ (type $3 (func (param i64 i64) (result i32)))
(import $__ashlti3 "env" "__ashlti3" (param i32 i64 i64 i32))
(import $__ashrti3 "env" "__ashrti3" (param i32 i64 i64 i32))
(import $__divti3 "env" "__divti3" (param i32 i64 i64 i64 i64))
@@ -35,7 +37,8 @@
(export "masked_rotl" $masked_rotl)
(export "rotr" $rotr)
(export "masked_rotr" $masked_rotr)
- (func $add128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $add128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (local $5 i64)
(i64.store
(i32.add
(get_local $0)
@@ -50,13 +53,21 @@
(i64.const 1)
(i64.extend_u/i32
(i64.lt_u
- (set_local $2
- (i64.store
- (get_local $0)
- (i64.add
- (get_local $1)
- (get_local $3)
+ (tee_local $2
+ (block
+ (block
+ (set_local $5
+ (i64.add
+ (get_local $1)
+ (get_local $3)
+ )
+ )
+ (i64.store
+ (get_local $0)
+ (get_local $5)
+ )
)
+ (get_local $5)
)
)
(get_local $1)
@@ -71,7 +82,7 @@
)
(return)
)
- (func $sub128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $sub128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(i64.store
(get_local $0)
(i64.sub
@@ -99,18 +110,27 @@
)
(return)
)
- (func $mul128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $mul128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__multi3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -145,18 +165,27 @@
)
(return)
)
- (func $sdiv128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $sdiv128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__divti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -191,18 +220,27 @@
)
(return)
)
- (func $udiv128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $udiv128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__udivti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -237,18 +275,27 @@
)
(return)
)
- (func $srem128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $srem128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__modti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -283,18 +330,27 @@
)
(return)
)
- (func $urem128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $urem128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__umodti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -329,7 +385,7 @@
)
(return)
)
- (func $and128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $and128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(i64.store
(i32.add
(get_local $0)
@@ -349,7 +405,7 @@
)
(return)
)
- (func $or128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $or128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(i64.store
(i32.add
(get_local $0)
@@ -369,7 +425,7 @@
)
(return)
)
- (func $xor128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $xor128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(i64.store
(i32.add
(get_local $0)
@@ -389,18 +445,27 @@
)
(return)
)
- (func $shl128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $shl128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__ashlti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -436,18 +501,27 @@
)
(return)
)
- (func $shr128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $shr128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__lshrti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -483,18 +557,27 @@
)
(return)
)
- (func $sar128 (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $sar128 (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__ashrti3
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 16)
)
+ (get_local $6)
)
)
(get_local $1)
@@ -530,7 +613,8 @@
)
(return)
)
- (func $clz128 (param $0 i32) (param $1 i64) (param $2 i64)
+ (func $clz128 (type $2) (param $0 i32) (param $1 i64) (param $2 i64)
+ (local $3 i64)
(i64.store
(get_local $0)
(select
@@ -545,19 +629,28 @@
)
(i64.ne
(get_local $2)
- (i64.store
- (i32.add
- (get_local $0)
- (i32.const 8)
+ (block
+ (block
+ (set_local $3
+ (i64.const 0)
+ )
+ (i64.store
+ (i32.add
+ (get_local $0)
+ (i32.const 8)
+ )
+ (get_local $3)
+ )
)
- (i64.const 0)
+ (get_local $3)
)
)
)
)
(return)
)
- (func $clz128_zero_undef (param $0 i32) (param $1 i64) (param $2 i64)
+ (func $clz128_zero_undef (type $2) (param $0 i32) (param $1 i64) (param $2 i64)
+ (local $3 i64)
(i64.store
(get_local $0)
(select
@@ -572,19 +665,28 @@
)
(i64.ne
(get_local $2)
- (i64.store
- (i32.add
- (get_local $0)
- (i32.const 8)
+ (block
+ (block
+ (set_local $3
+ (i64.const 0)
+ )
+ (i64.store
+ (i32.add
+ (get_local $0)
+ (i32.const 8)
+ )
+ (get_local $3)
+ )
)
- (i64.const 0)
+ (get_local $3)
)
)
)
)
(return)
)
- (func $ctz128 (param $0 i32) (param $1 i64) (param $2 i64)
+ (func $ctz128 (type $2) (param $0 i32) (param $1 i64) (param $2 i64)
+ (local $3 i64)
(i64.store
(get_local $0)
(select
@@ -599,19 +701,28 @@
)
(i64.ne
(get_local $1)
- (i64.store
- (i32.add
- (get_local $0)
- (i32.const 8)
+ (block
+ (block
+ (set_local $3
+ (i64.const 0)
+ )
+ (i64.store
+ (i32.add
+ (get_local $0)
+ (i32.const 8)
+ )
+ (get_local $3)
+ )
)
- (i64.const 0)
+ (get_local $3)
)
)
)
)
(return)
)
- (func $ctz128_zero_undef (param $0 i32) (param $1 i64) (param $2 i64)
+ (func $ctz128_zero_undef (type $2) (param $0 i32) (param $1 i64) (param $2 i64)
+ (local $3 i64)
(i64.store
(get_local $0)
(select
@@ -626,19 +737,27 @@
)
(i64.ne
(get_local $1)
- (i64.store
- (i32.add
- (get_local $0)
- (i32.const 8)
+ (block
+ (block
+ (set_local $3
+ (i64.const 0)
+ )
+ (i64.store
+ (i32.add
+ (get_local $0)
+ (i32.const 8)
+ )
+ (get_local $3)
+ )
)
- (i64.const 0)
+ (get_local $3)
)
)
)
)
(return)
)
- (func $popcnt128 (param $0 i32) (param $1 i64) (param $2 i64)
+ (func $popcnt128 (type $2) (param $0 i32) (param $1 i64) (param $2 i64)
(i64.store
(i32.add
(get_local $0)
@@ -659,7 +778,7 @@
)
(return)
)
- (func $eqz128 (param $0 i64) (param $1 i64) (result i32)
+ (func $eqz128 (type $3) (param $0 i64) (param $1 i64) (result i32)
(return
(i64.eqz
(i64.or
@@ -669,19 +788,28 @@
)
)
)
- (func $rotl (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $rotl (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__ashlti3
(i32.add
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 32)
)
+ (get_local $6)
)
)
(i32.const 16)
@@ -746,19 +874,28 @@
)
(return)
)
- (func $masked_rotl (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $masked_rotl (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__ashlti3
(i32.add
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 32)
)
+ (get_local $6)
)
)
(i32.const 16)
@@ -766,7 +903,7 @@
(get_local $1)
(get_local $2)
(i32.wrap/i64
- (set_local $3
+ (tee_local $3
(i64.and
(get_local $3)
(i64.const 127)
@@ -828,19 +965,28 @@
)
(return)
)
- (func $rotr (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $rotr (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__lshrti3
(i32.add
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 32)
)
+ (get_local $6)
)
)
(i32.const 16)
@@ -905,19 +1051,28 @@
)
(return)
)
- (func $masked_rotr (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
+ (func $masked_rotr (type $FUNCSIG$vijjjj) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64)
(local $5 i32)
+ (local $6 i32)
(call_import $__lshrti3
(i32.add
- (set_local $5
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $5
+ (block
+ (block
+ (set_local $6
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $6)
)
- (i32.const 32)
)
+ (get_local $6)
)
)
(i32.const 16)
@@ -925,7 +1080,7 @@
(get_local $1)
(get_local $2)
(i32.wrap/i64
- (set_local $3
+ (tee_local $3
(i64.and
(get_local $3)
(i64.const 127)
diff --git a/test/llvm_autogenerated/i64-load-store-alignment.wast b/test/llvm_autogenerated/i64-load-store-alignment.wast
index 33362acfc..981e552c9 100644
--- a/test/llvm_autogenerated/i64-load-store-alignment.wast
+++ b/test/llvm_autogenerated/i64-load-store-alignment.wast
@@ -215,28 +215,28 @@
(return)
)
(func $sti32_a1 (param $0 i32) (param $1 i64)
- (i64.store32 align=1
+ (i64.store align=1
(get_local $0)
(get_local $1)
)
(return)
)
(func $sti32_a2 (param $0 i32) (param $1 i64)
- (i64.store32 align=2
+ (i64.store align=2
(get_local $0)
(get_local $1)
)
(return)
)
(func $sti32_a4 (param $0 i32) (param $1 i64)
- (i64.store32
+ (i64.store
(get_local $0)
(get_local $1)
)
(return)
)
(func $sti32_a8 (param $0 i32) (param $1 i64)
- (i64.store32
+ (i64.store
(get_local $0)
(get_local $1)
)
diff --git a/test/llvm_autogenerated/legalize.wast b/test/llvm_autogenerated/legalize.wast
index 912efce02..37c487a3e 100644
--- a/test/llvm_autogenerated/legalize.wast
+++ b/test/llvm_autogenerated/legalize.wast
@@ -3,6 +3,12 @@
(data (i32.const 4) "\10\04\00\00")
(export "memory" memory)
(type $FUNCSIG$vijji (func (param i32 i64 i64 i32)))
+ (type $1 (func (param i32 i32 i32) (result i32)))
+ (type $2 (func (param i64 i64 i32) (result i64)))
+ (type $3 (func (param i64) (result i64)))
+ (type $4 (func (param i32) (result f64)))
+ (type $5 (func (param i32) (result f32)))
+ (type $6 (func (param i32 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64)))
(import $__ashlti3 "env" "__ashlti3" (param i32 i64 i64 i32))
(import $__lshrti3 "env" "__lshrti3" (param i32 i64 i64 i32))
(export "shl_i3" $shl_i3)
@@ -11,7 +17,7 @@
(export "fpext_f32_f64" $fpext_f32_f64)
(export "fpconv_f64_f32" $fpconv_f64_f32)
(export "bigshift" $bigshift)
- (func $shl_i3 (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $shl_i3 (type $1) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(return
(i32.shl
(get_local $0)
@@ -22,7 +28,7 @@
)
)
)
- (func $shl_i53 (param $0 i64) (param $1 i64) (param $2 i32) (result i64)
+ (func $shl_i53 (type $2) (param $0 i64) (param $1 i64) (param $2 i32) (result i64)
(return
(i64.shl
(get_local $0)
@@ -33,7 +39,7 @@
)
)
)
- (func $sext_in_reg_i32_i64 (param $0 i64) (result i64)
+ (func $sext_in_reg_i32_i64 (type $3) (param $0 i64) (result i64)
(return
(i64.shr_s
(i64.shl
@@ -44,7 +50,7 @@
)
)
)
- (func $fpext_f32_f64 (param $0 i32) (result f64)
+ (func $fpext_f32_f64 (type $4) (param $0 i32) (result f64)
(return
(f64.promote/f32
(f32.load
@@ -53,7 +59,7 @@
)
)
)
- (func $fpconv_f64_f32 (param $0 i32) (result f32)
+ (func $fpconv_f64_f32 (type $5) (param $0 i32) (result f32)
(return
(f32.demote/f64
(f64.load
@@ -62,7 +68,7 @@
)
)
)
- (func $bigshift (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (param $16 i64) (param $17 i64) (param $18 i64) (param $19 i64) (param $20 i64) (param $21 i64) (param $22 i64) (param $23 i64) (param $24 i64) (param $25 i64) (param $26 i64) (param $27 i64) (param $28 i64) (param $29 i64) (param $30 i64) (param $31 i64) (param $32 i64)
+ (func $bigshift (type $6) (param $0 i32) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (param $16 i64) (param $17 i64) (param $18 i64) (param $19 i64) (param $20 i64) (param $21 i64) (param $22 i64) (param $23 i64) (param $24 i64) (param $25 i64) (param $26 i64) (param $27 i64) (param $28 i64) (param $29 i64) (param $30 i64) (param $31 i64) (param $32 i64)
(local $33 i32)
(local $34 i32)
(local $35 i32)
@@ -83,24 +89,33 @@
(local $50 i32)
(local $51 i32)
(local $52 i32)
+ (local $53 i32)
(call_import $__ashlti3
(i32.add
- (set_local $33
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $33
+ (block
+ (block
+ (set_local $53
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 1024)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $53)
)
- (i32.const 1024)
)
+ (get_local $53)
)
)
(i32.const 512)
)
(get_local $1)
(get_local $2)
- (set_local $34
+ (tee_local $34
(i32.wrap/i64
(get_local $17)
)
@@ -122,7 +137,7 @@
)
(get_local $1)
(get_local $2)
- (set_local $42
+ (tee_local $42
(i32.sub
(i32.const 128)
(get_local $34)
@@ -136,7 +151,7 @@
)
(get_local $1)
(get_local $2)
- (set_local $43
+ (tee_local $43
(i32.add
(get_local $34)
(i32.const -128)
@@ -150,7 +165,7 @@
)
(get_local $1)
(get_local $2)
- (set_local $44
+ (tee_local $44
(i32.sub
(i32.const 384)
(get_local $34)
@@ -164,7 +179,7 @@
)
(get_local $3)
(get_local $4)
- (set_local $35
+ (tee_local $35
(i32.add
(get_local $34)
(i32.const -256)
@@ -178,7 +193,7 @@
)
(get_local $1)
(get_local $2)
- (set_local $40
+ (tee_local $40
(i32.add
(get_local $34)
(i32.const -384)
@@ -219,7 +234,7 @@
)
(get_local $3)
(get_local $4)
- (set_local $36
+ (tee_local $36
(i32.sub
(i32.const 256)
(get_local $34)
@@ -242,7 +257,7 @@
)
(get_local $3)
(get_local $4)
- (set_local $51
+ (tee_local $51
(i32.sub
(i32.const 128)
(get_local $36)
@@ -295,7 +310,7 @@
)
(get_local $3)
(get_local $4)
- (set_local $37
+ (tee_local $37
(i32.add
(get_local $34)
(i32.const -768)
@@ -321,7 +336,7 @@
)
(get_local $5)
(get_local $6)
- (set_local $46
+ (tee_local $46
(i32.sub
(i32.const 640)
(get_local $34)
@@ -335,7 +350,7 @@
)
(get_local $7)
(get_local $8)
- (set_local $38
+ (tee_local $38
(i32.add
(get_local $34)
(i32.const -512)
@@ -349,7 +364,7 @@
)
(get_local $5)
(get_local $6)
- (set_local $52
+ (tee_local $52
(i32.add
(get_local $34)
(i32.const -640)
@@ -363,7 +378,7 @@
)
(get_local $3)
(get_local $4)
- (set_local $39
+ (tee_local $39
(i32.sub
(i32.const 768)
(get_local $34)
@@ -440,7 +455,7 @@
)
(get_local $7)
(get_local $8)
- (set_local $40
+ (tee_local $40
(i32.sub
(i32.const 512)
(get_local $34)
@@ -463,7 +478,7 @@
)
(get_local $7)
(get_local $8)
- (set_local $45
+ (tee_local $45
(i32.sub
(i32.const 128)
(get_local $40)
@@ -633,7 +648,7 @@
)
(get_local $5)
(get_local $6)
- (set_local $41
+ (tee_local $41
(i32.sub
(i32.const 256)
(get_local $40)
@@ -778,7 +793,7 @@
)
)
(i64.const 0)
- (set_local $42
+ (tee_local $42
(i32.lt_u
(get_local $34)
(i32.const 128)
@@ -786,7 +801,7 @@
)
)
(i64.const 0)
- (set_local $43
+ (tee_local $43
(i32.lt_u
(get_local $34)
(i32.const 256)
@@ -794,7 +809,7 @@
)
)
(i64.const 0)
- (set_local $44
+ (tee_local $44
(i32.lt_u
(get_local $34)
(i32.const 512)
@@ -958,7 +973,7 @@
)
)
(i64.const 0)
- (set_local $46
+ (tee_local $46
(i32.lt_u
(get_local $36)
(i32.const 128)
@@ -997,7 +1012,7 @@
(i32.const 8)
)
)
- (set_local $45
+ (tee_local $45
(i32.lt_u
(get_local $35)
(i32.const 128)
@@ -1324,7 +1339,7 @@
)
)
(i64.const 0)
- (set_local $51
+ (tee_local $51
(i32.lt_u
(get_local $40)
(i32.const 128)
@@ -1332,7 +1347,7 @@
)
)
(i64.const 0)
- (set_local $52
+ (tee_local $52
(i32.lt_u
(get_local $40)
(i32.const 256)
@@ -1374,7 +1389,7 @@
(i32.const 8)
)
)
- (set_local $48
+ (tee_local $48
(i32.lt_u
(get_local $38)
(i32.const 128)
@@ -1395,7 +1410,7 @@
)
)
(i64.const 0)
- (set_local $49
+ (tee_local $49
(i32.lt_u
(get_local $39)
(i32.const 128)
@@ -1434,7 +1449,7 @@
(i32.const 8)
)
)
- (set_local $47
+ (tee_local $47
(i32.lt_u
(get_local $37)
(i32.const 128)
@@ -1444,7 +1459,7 @@
(get_local $4)
(get_local $37)
)
- (set_local $50
+ (tee_local $50
(i32.lt_u
(get_local $38)
(i32.const 256)
@@ -1978,7 +1993,7 @@
)
)
(i64.const 0)
- (set_local $35
+ (tee_local $35
(i32.lt_u
(get_local $41)
(i32.const 128)
diff --git a/test/llvm_autogenerated/mem-intrinsics.wast b/test/llvm_autogenerated/mem-intrinsics.wast
index 62d586ad9..52d52c13a 100644
--- a/test/llvm_autogenerated/mem-intrinsics.wast
+++ b/test/llvm_autogenerated/mem-intrinsics.wast
@@ -5,6 +5,8 @@
(type $FUNCSIG$v (func))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
+ (type $3 (func (param i32 i32 i32)))
+ (type $4 (func (param i32 i32 i32 i32 i32) (result i32)))
(import $block_tail_dup "env" "block_tail_dup")
(import $def "env" "def" (result i32))
(import $memcpy "env" "memcpy" (param i32 i32 i32) (result i32))
@@ -19,7 +21,7 @@
(export "frame_index" $frame_index)
(export "drop_result" $drop_result)
(export "tail_dup_to_reuse_result" $tail_dup_to_reuse_result)
- (func $copy_yes (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $copy_yes (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(return
(call_import $memcpy
(get_local $0)
@@ -28,15 +30,17 @@
)
)
)
- (func $copy_no (param $0 i32) (param $1 i32) (param $2 i32)
- (call_import $memcpy
- (get_local $0)
- (get_local $1)
- (get_local $2)
+ (func $copy_no (type $3) (param $0 i32) (param $1 i32) (param $2 i32)
+ (drop
+ (call_import $memcpy
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ )
)
(return)
)
- (func $move_yes (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $move_yes (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(return
(call_import $memmove
(get_local $0)
@@ -45,15 +49,17 @@
)
)
)
- (func $move_no (param $0 i32) (param $1 i32) (param $2 i32)
- (call_import $memmove
- (get_local $0)
- (get_local $1)
- (get_local $2)
+ (func $move_no (type $3) (param $0 i32) (param $1 i32) (param $2 i32)
+ (drop
+ (call_import $memmove
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ )
)
(return)
)
- (func $set_yes (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $set_yes (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(return
(call_import $memset
(get_local $0)
@@ -62,33 +68,46 @@
)
)
)
- (func $set_no (param $0 i32) (param $1 i32) (param $2 i32)
- (call_import $memset
- (get_local $0)
- (get_local $1)
- (get_local $2)
+ (func $set_no (type $3) (param $0 i32) (param $1 i32) (param $2 i32)
+ (drop
+ (call_import $memset
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ )
)
(return)
)
- (func $frame_index
+ (func $frame_index (type $FUNCSIG$v)
(local $0 i32)
- (call_import $memset
- (i32.add
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
- (i32.const 4)
+ (local $1 i32)
+ (drop
+ (call_import $memset
+ (i32.add
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 4096)
+ )
+ )
+ (i32.store
+ (i32.const 4)
+ (get_local $1)
+ )
)
- (i32.const 4096)
+ (get_local $1)
)
)
+ (i32.const 2048)
)
- (i32.const 2048)
+ (i32.const 0)
+ (i32.const 1024)
)
- (i32.const 0)
- (i32.const 1024)
)
(i32.store
(i32.const 4)
@@ -103,7 +122,7 @@
)
(return)
)
- (func $drop_result (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
+ (func $drop_result (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(block $label$0
(block $label$1
(block $label$2
@@ -128,17 +147,19 @@
(get_local $0)
)
)
- (call_import $memset
- (get_local $0)
- (get_local $1)
- (get_local $2)
+ (drop
+ (call_import $memset
+ (get_local $0)
+ (get_local $1)
+ (get_local $2)
+ )
)
(call_import $block_tail_dup)
(return
(get_local $0)
)
)
- (func $tail_dup_to_reuse_result (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
+ (func $tail_dup_to_reuse_result (type $4) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(block $label$0
(block $label$1
(block $label$2
diff --git a/test/llvm_autogenerated/offset.wast b/test/llvm_autogenerated/offset.wast
index a24a055e3..b86e801f2 100644
--- a/test/llvm_autogenerated/offset.wast
+++ b/test/llvm_autogenerated/offset.wast
@@ -3,6 +3,12 @@
(data (i32.const 4) "\10\04\00\00")
(data (i32.const 12) "\00\00\00\00")
(export "memory" memory)
+ (type $0 (func (param i32) (result i32)))
+ (type $1 (func (param i32) (result i64)))
+ (type $2 (func (param i32)))
+ (type $3 (func (result i32)))
+ (type $4 (func))
+ (type $5 (func (param i32 i32)))
(export "load_i32_with_folded_offset" $load_i32_with_folded_offset)
(export "load_i32_with_folded_gep_offset" $load_i32_with_folded_gep_offset)
(export "load_i32_with_unfolded_gep_negative_offset" $load_i32_with_unfolded_gep_negative_offset)
@@ -38,17 +44,17 @@
(export "aggregate_load_store" $aggregate_load_store)
(export "aggregate_return" $aggregate_return)
(export "aggregate_return_without_merge" $aggregate_return_without_merge)
- (func $load_i32_with_folded_offset (param $0 i32) (result i32)
+ (func $load_i32_with_folded_offset (type $0) (param $0 i32) (result i32)
(i32.load offset=24
(get_local $0)
)
)
- (func $load_i32_with_folded_gep_offset (param $0 i32) (result i32)
+ (func $load_i32_with_folded_gep_offset (type $0) (param $0 i32) (result i32)
(i32.load offset=24
(get_local $0)
)
)
- (func $load_i32_with_unfolded_gep_negative_offset (param $0 i32) (result i32)
+ (func $load_i32_with_unfolded_gep_negative_offset (type $0) (param $0 i32) (result i32)
(i32.load
(i32.add
(get_local $0)
@@ -56,7 +62,7 @@
)
)
)
- (func $load_i32_with_unfolded_offset (param $0 i32) (result i32)
+ (func $load_i32_with_unfolded_offset (type $0) (param $0 i32) (result i32)
(i32.load
(i32.add
(get_local $0)
@@ -64,7 +70,7 @@
)
)
)
- (func $load_i32_with_unfolded_gep_offset (param $0 i32) (result i32)
+ (func $load_i32_with_unfolded_gep_offset (type $0) (param $0 i32) (result i32)
(i32.load
(i32.add
(get_local $0)
@@ -72,17 +78,17 @@
)
)
)
- (func $load_i64_with_folded_offset (param $0 i32) (result i64)
+ (func $load_i64_with_folded_offset (type $1) (param $0 i32) (result i64)
(i64.load offset=24
(get_local $0)
)
)
- (func $load_i64_with_folded_gep_offset (param $0 i32) (result i64)
+ (func $load_i64_with_folded_gep_offset (type $1) (param $0 i32) (result i64)
(i64.load offset=24
(get_local $0)
)
)
- (func $load_i64_with_unfolded_gep_negative_offset (param $0 i32) (result i64)
+ (func $load_i64_with_unfolded_gep_negative_offset (type $1) (param $0 i32) (result i64)
(i64.load
(i32.add
(get_local $0)
@@ -90,7 +96,7 @@
)
)
)
- (func $load_i64_with_unfolded_offset (param $0 i32) (result i64)
+ (func $load_i64_with_unfolded_offset (type $1) (param $0 i32) (result i64)
(i64.load
(i32.add
(get_local $0)
@@ -98,7 +104,7 @@
)
)
)
- (func $load_i64_with_unfolded_gep_offset (param $0 i32) (result i64)
+ (func $load_i64_with_unfolded_gep_offset (type $1) (param $0 i32) (result i64)
(i64.load
(i32.add
(get_local $0)
@@ -106,7 +112,7 @@
)
)
)
- (func $load_i32_with_folded_or_offset (param $0 i32) (result i32)
+ (func $load_i32_with_folded_or_offset (type $0) (param $0 i32) (result i32)
(i32.load8_s offset=2
(i32.and
(get_local $0)
@@ -114,19 +120,19 @@
)
)
)
- (func $store_i32_with_folded_offset (param $0 i32)
+ (func $store_i32_with_folded_offset (type $2) (param $0 i32)
(i32.store offset=24
(get_local $0)
(i32.const 0)
)
)
- (func $store_i32_with_folded_gep_offset (param $0 i32)
+ (func $store_i32_with_folded_gep_offset (type $2) (param $0 i32)
(i32.store offset=24
(get_local $0)
(i32.const 0)
)
)
- (func $store_i32_with_unfolded_gep_negative_offset (param $0 i32)
+ (func $store_i32_with_unfolded_gep_negative_offset (type $2) (param $0 i32)
(i32.store
(i32.add
(get_local $0)
@@ -135,7 +141,7 @@
(i32.const 0)
)
)
- (func $store_i32_with_unfolded_offset (param $0 i32)
+ (func $store_i32_with_unfolded_offset (type $2) (param $0 i32)
(i32.store
(i32.add
(get_local $0)
@@ -144,7 +150,7 @@
(i32.const 0)
)
)
- (func $store_i32_with_unfolded_gep_offset (param $0 i32)
+ (func $store_i32_with_unfolded_gep_offset (type $2) (param $0 i32)
(i32.store
(i32.add
(get_local $0)
@@ -153,19 +159,19 @@
(i32.const 0)
)
)
- (func $store_i64_with_folded_offset (param $0 i32)
+ (func $store_i64_with_folded_offset (type $2) (param $0 i32)
(i64.store offset=24
(get_local $0)
(i64.const 0)
)
)
- (func $store_i64_with_folded_gep_offset (param $0 i32)
+ (func $store_i64_with_folded_gep_offset (type $2) (param $0 i32)
(i64.store offset=24
(get_local $0)
(i64.const 0)
)
)
- (func $store_i64_with_unfolded_gep_negative_offset (param $0 i32)
+ (func $store_i64_with_unfolded_gep_negative_offset (type $2) (param $0 i32)
(i64.store
(i32.add
(get_local $0)
@@ -174,7 +180,7 @@
(i64.const 0)
)
)
- (func $store_i64_with_unfolded_offset (param $0 i32)
+ (func $store_i64_with_unfolded_offset (type $2) (param $0 i32)
(i64.store
(i32.add
(get_local $0)
@@ -183,7 +189,7 @@
(i64.const 0)
)
)
- (func $store_i64_with_unfolded_gep_offset (param $0 i32)
+ (func $store_i64_with_unfolded_gep_offset (type $2) (param $0 i32)
(i64.store
(i32.add
(get_local $0)
@@ -192,7 +198,7 @@
(i64.const 0)
)
)
- (func $store_i32_with_folded_or_offset (param $0 i32)
+ (func $store_i32_with_folded_or_offset (type $2) (param $0 i32)
(i32.store8 offset=2
(i32.and
(get_local $0)
@@ -201,61 +207,61 @@
(i32.const 0)
)
)
- (func $load_i32_from_numeric_address (result i32)
+ (func $load_i32_from_numeric_address (type $3) (result i32)
(i32.load offset=42
(i32.const 0)
)
)
- (func $load_i32_from_global_address (result i32)
+ (func $load_i32_from_global_address (type $3) (result i32)
(i32.load offset=12
(i32.const 0)
)
)
- (func $store_i32_to_numeric_address
+ (func $store_i32_to_numeric_address (type $4)
(i32.store offset=42
(i32.const 0)
(i32.const 0)
)
)
- (func $store_i32_to_global_address
+ (func $store_i32_to_global_address (type $4)
(i32.store offset=12
(i32.const 0)
(i32.const 0)
)
)
- (func $load_i8_s_with_folded_offset (param $0 i32) (result i32)
+ (func $load_i8_s_with_folded_offset (type $0) (param $0 i32) (result i32)
(i32.load8_s offset=24
(get_local $0)
)
)
- (func $load_i8_s_with_folded_gep_offset (param $0 i32) (result i32)
+ (func $load_i8_s_with_folded_gep_offset (type $0) (param $0 i32) (result i32)
(i32.load8_s offset=24
(get_local $0)
)
)
- (func $load_i8_u_with_folded_offset (param $0 i32) (result i32)
+ (func $load_i8_u_with_folded_offset (type $0) (param $0 i32) (result i32)
(i32.load8_u offset=24
(get_local $0)
)
)
- (func $load_i8_u_with_folded_gep_offset (param $0 i32) (result i32)
+ (func $load_i8_u_with_folded_gep_offset (type $0) (param $0 i32) (result i32)
(i32.load8_u offset=24
(get_local $0)
)
)
- (func $store_i8_with_folded_offset (param $0 i32)
+ (func $store_i8_with_folded_offset (type $2) (param $0 i32)
(i32.store8 offset=24
(get_local $0)
(i32.const 0)
)
)
- (func $store_i8_with_folded_gep_offset (param $0 i32)
+ (func $store_i8_with_folded_gep_offset (type $2) (param $0 i32)
(i32.store8 offset=24
(get_local $0)
(i32.const 0)
)
)
- (func $aggregate_load_store (param $0 i32) (param $1 i32)
+ (func $aggregate_load_store (type $5) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@@ -293,24 +299,51 @@
(get_local $2)
)
)
- (func $aggregate_return (param $0 i32)
+ (func $aggregate_return (type $2) (param $0 i32)
+ (local $1 i64)
(i64.store align=4
(get_local $0)
- (i64.store offset=8 align=4
- (get_local $0)
- (i64.const 0)
+ (block
+ (block
+ (set_local $1
+ (i64.const 0)
+ )
+ (i64.store offset=8 align=4
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ (get_local $1)
)
)
)
- (func $aggregate_return_without_merge (param $0 i32)
+ (func $aggregate_return_without_merge (type $2) (param $0 i32)
+ (local $1 i32)
+ (local $2 i32)
(i32.store offset=8
(get_local $0)
- (i32.store16 offset=12
- (get_local $0)
- (i32.store8 offset=14
- (get_local $0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $2
+ (block
+ (block
+ (set_local $1
+ (i32.const 0)
+ )
+ (i32.store8 offset=14
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ (get_local $1)
+ )
+ )
+ (i32.store16 offset=12
+ (get_local $0)
+ (get_local $2)
+ )
)
+ (get_local $2)
)
)
(i64.store
diff --git a/test/llvm_autogenerated/phi.wast b/test/llvm_autogenerated/phi.wast
index 3bd742e8d..6975b7197 100644
--- a/test/llvm_autogenerated/phi.wast
+++ b/test/llvm_autogenerated/phi.wast
@@ -49,7 +49,7 @@
)
(br_if $label$0
(i32.lt_s
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const 1)
diff --git a/test/llvm_autogenerated/reg-stackify.wast b/test/llvm_autogenerated/reg-stackify.wast
index b9526b566..fa4225900 100644
--- a/test/llvm_autogenerated/reg-stackify.wast
+++ b/test/llvm_autogenerated/reg-stackify.wast
@@ -9,6 +9,11 @@
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$vi (func (param i32)))
+ (type $6 (func (param i32 i32 i32) (result i32)))
+ (type $7 (func (param i32 i32 i32 i32) (result i32)))
+ (type $8 (func (param i32 i32 i32)))
+ (type $9 (func (param i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32 i32) (result i32)))
+ (type $10 (func (param i32 i32 i32 i32 i32)))
(import $blue "env" "blue" (result i32))
(import $callee "env" "callee" (param i32) (result i32))
(import $evoke_side_effects "env" "evoke_side_effects")
@@ -45,7 +50,7 @@
(export "no_stackify_past_epilogue" $no_stackify_past_epilogue)
(export "stackify_indvar" $stackify_indvar)
(export "stackpointer_dependency" $stackpointer_dependency)
- (func $no0 (param $0 i32) (param $1 i32) (result i32)
+ (func $no0 (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(set_local $1
(i32.load
(get_local $1)
@@ -59,7 +64,7 @@
(get_local $1)
)
)
- (func $no1 (param $0 i32) (param $1 i32) (result i32)
+ (func $no1 (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(set_local $1
(i32.load
(get_local $1)
@@ -73,7 +78,7 @@
(get_local $1)
)
)
- (func $yes0 (param $0 i32) (param $1 i32) (result i32)
+ (func $yes0 (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(i32.store
(get_local $0)
(i32.const 0)
@@ -84,14 +89,14 @@
)
)
)
- (func $yes1 (param $0 i32) (result i32)
+ (func $yes1 (type $FUNCSIG$ii) (param $0 i32) (result i32)
(return
(i32.load
(get_local $0)
)
)
)
- (func $sink_trap (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $sink_trap (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(i32.store
(get_local $2)
(i32.const 0)
@@ -103,7 +108,7 @@
)
)
)
- (func $sink_readnone_call (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $sink_readnone_call (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(i32.store
(get_local $2)
(i32.const 0)
@@ -112,7 +117,7 @@
(call_import $readnone_callee)
)
)
- (func $no_sink_readonly_call (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $no_sink_readonly_call (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(set_local $3
(call_import $readonly_callee)
@@ -125,7 +130,7 @@
(get_local $3)
)
)
- (func $stack_uses (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $stack_uses (type $7) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(block $label$0
(br_if $label$0
(i32.ne
@@ -162,12 +167,12 @@
(i32.const 1)
)
)
- (func $multiple_uses (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $multiple_uses (type $8) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(block $label$0
(br_if $label$0
(i32.ge_u
- (set_local $3
+ (tee_local $3
(i32.load
(get_local $2)
)
@@ -188,12 +193,21 @@
)
(return)
)
- (func $stackify_store_across_side_effects (param $0 i32)
+ (func $stackify_store_across_side_effects (type $FUNCSIG$vi) (param $0 i32)
(local $1 i64)
+ (local $2 i64)
(set_local $1
- (i64.store
- (get_local $0)
- (i64.const 4611686018427387904)
+ (block
+ (block
+ (set_local $2
+ (i64.const 4611686018427387904)
+ )
+ (i64.store
+ (get_local $0)
+ (get_local $2)
+ )
+ )
+ (get_local $2)
)
)
(call_import $evoke_side_effects)
@@ -204,7 +218,7 @@
(call_import $evoke_side_effects)
(return)
)
- (func $div_tree (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result i32)
+ (func $div_tree (type $9) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (param $7 i32) (param $8 i32) (param $9 i32) (param $10 i32) (param $11 i32) (param $12 i32) (param $13 i32) (param $14 i32) (param $15 i32) (result i32)
(return
(i32.div_s
(i32.div_s
@@ -254,9 +268,9 @@
)
)
)
- (func $simple_multiple_use (param $0 i32) (param $1 i32)
+ (func $simple_multiple_use (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(call_import $use_a
- (set_local $1
+ (tee_local $1
(i32.mul
(get_local $1)
(get_local $0)
@@ -268,9 +282,9 @@
)
(return)
)
- (func $multiple_uses_in_same_insn (param $0 i32) (param $1 i32)
+ (func $multiple_uses_in_same_insn (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(call_import $use_2
- (set_local $1
+ (tee_local $1
(i32.mul
(get_local $1)
(get_local $0)
@@ -280,7 +294,7 @@
)
(return)
)
- (func $commute (result i32)
+ (func $commute (type $FUNCSIG$i) (result i32)
(return
(i32.add
(i32.add
@@ -291,7 +305,7 @@
)
)
)
- (func $no_stackify_past_use (param $0 i32) (result i32)
+ (func $no_stackify_past_use (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(set_local $1
(call_import $callee
@@ -313,11 +327,11 @@
)
)
)
- (func $commute_to_fix_ordering (param $0 i32) (result i32)
+ (func $commute_to_fix_ordering (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(return
(i32.mul
- (set_local $1
+ (tee_local $1
(call_import $callee
(get_local $0)
)
@@ -334,7 +348,7 @@
)
)
)
- (func $multiple_defs (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
+ (func $multiple_defs (type $10) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
(local $5 f64)
(local $6 f64)
(local $7 f64)
@@ -393,7 +407,7 @@
(f64.add
(select
(f64.const -11353.57)
- (set_local $9
+ (tee_local $9
(f64.add
(get_local $7)
(f64.const -1)
@@ -401,7 +415,7 @@
)
(get_local $2)
)
- (set_local $6
+ (tee_local $6
(get_local $8)
)
)
@@ -437,7 +451,7 @@
(br $label$0)
)
)
- (func $no_stackify_call_past_load (result i32)
+ (func $no_stackify_call_past_load (type $FUNCSIG$i) (result i32)
(local $0 i32)
(local $1 i32)
(set_local $0
@@ -448,18 +462,29 @@
(i32.const 0)
)
)
- (call_import $callee
- (get_local $0)
+ (drop
+ (call_import $callee
+ (get_local $0)
+ )
)
(return
(get_local $1)
)
)
- (func $no_stackify_store_past_load (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $no_stackify_store_past_load (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (local $3 i32)
(set_local $1
- (i32.store
- (get_local $1)
- (get_local $0)
+ (block
+ (block
+ (set_local $3
+ (get_local $0)
+ )
+ (i32.store
+ (get_local $1)
+ (get_local $3)
+ )
+ )
+ (get_local $3)
)
)
(set_local $2
@@ -467,18 +492,31 @@
(get_local $2)
)
)
- (call_import $callee
- (get_local $1)
+ (drop
+ (call_import $callee
+ (get_local $1)
+ )
)
(return
(get_local $2)
)
)
- (func $store_past_invar_load (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (call_import $callee
- (i32.store
- (get_local $1)
- (get_local $0)
+ (func $store_past_invar_load (type $6) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (local $3 i32)
+ (drop
+ (call_import $callee
+ (block
+ (block
+ (set_local $3
+ (get_local $0)
+ )
+ (i32.store
+ (get_local $1)
+ (get_local $3)
+ )
+ )
+ (get_local $3)
+ )
)
)
(return
@@ -487,24 +525,33 @@
)
)
)
- (func $ignore_dbg_value
+ (func $ignore_dbg_value (type $FUNCSIG$v)
(unreachable)
)
- (func $no_stackify_past_epilogue (result i32)
+ (func $no_stackify_past_epilogue (type $FUNCSIG$i) (result i32)
(local $0 i32)
(local $1 i32)
+ (local $2 i32)
(set_local $1
(call_import $use_memory
(i32.add
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $0
+ (block
+ (block
+ (set_local $2
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $2)
)
- (i32.const 16)
)
+ (get_local $2)
)
)
(i32.const 12)
@@ -522,7 +569,7 @@
(get_local $1)
)
)
- (func $stackify_indvar (param $0 i32) (param $1 i32)
+ (func $stackify_indvar (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
(i32.const 0)
@@ -540,7 +587,7 @@
(br_if $label$0
(i32.ne
(get_local $0)
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $2)
(i32.const 1)
@@ -551,12 +598,12 @@
)
(return)
)
- (func $stackpointer_dependency (param $0 i32) (result i32)
+ (func $stackpointer_dependency (type $FUNCSIG$ii) (param $0 i32) (result i32)
(local $1 i32)
(set_local $0
(call_import $stackpointer_callee
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 4)
)
diff --git a/test/llvm_autogenerated/store-results.wast b/test/llvm_autogenerated/store-results.wast
index c0969bf5f..1f2cd9c98 100644
--- a/test/llvm_autogenerated/store-results.wast
+++ b/test/llvm_autogenerated/store-results.wast
@@ -2,19 +2,30 @@
(memory 1)
(data (i32.const 4) " \04\00\00")
(export "memory" memory)
+ (type $0 (func (param i32) (result i32)))
+ (type $1 (func))
(export "single_block" $single_block)
(export "foo" $foo)
(export "bar" $bar)
(export "fi_ret" $fi_ret)
- (func $single_block (param $0 i32) (result i32)
+ (func $single_block (type $0) (param $0 i32) (result i32)
+ (local $1 i32)
(return
- (i32.store
- (get_local $0)
- (i32.const 0)
+ (block
+ (block
+ (set_local $1
+ (i32.const 0)
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $1)
+ )
+ )
+ (get_local $1)
)
)
)
- (func $foo
+ (func $foo (type $1)
(local $0 i32)
(set_local $0
(i32.const 0)
@@ -26,7 +37,7 @@
)
(br_if $label$0
(i32.ne
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $0)
(i32.const 1)
@@ -38,7 +49,7 @@
)
(return)
)
- (func $bar
+ (func $bar (type $1)
(local $0 f32)
(set_local $0
(f32.const 0)
@@ -50,7 +61,7 @@
)
(br_if $label$0
(f32.ne
- (set_local $0
+ (tee_local $0
(f32.add
(get_local $0)
(f32.const 1)
@@ -62,16 +73,25 @@
)
(return)
)
- (func $fi_ret (param $0 i32) (result i32)
+ (func $fi_ret (type $0) (param $0 i32) (result i32)
+ (local $1 i32)
(return
- (i32.store
- (get_local $0)
- (i32.sub
- (i32.load
- (i32.const 4)
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
+ (get_local $0)
+ (get_local $1)
)
- (i32.const 32)
)
+ (get_local $1)
)
)
)
diff --git a/test/llvm_autogenerated/store-trunc.wast b/test/llvm_autogenerated/store-trunc.wast
index cf20bcd00..d37c3b5c0 100644
--- a/test/llvm_autogenerated/store-trunc.wast
+++ b/test/llvm_autogenerated/store-trunc.wast
@@ -32,7 +32,7 @@
)
)
(func $trunc_i32_i64 (param $0 i32) (param $1 i64)
- (i64.store32
+ (i64.store
(get_local $0)
(get_local $1)
)
diff --git a/test/llvm_autogenerated/userstack.wast b/test/llvm_autogenerated/userstack.wast
index 216930a03..d9ccc83e5 100644
--- a/test/llvm_autogenerated/userstack.wast
+++ b/test/llvm_autogenerated/userstack.wast
@@ -3,6 +3,8 @@
(data (i32.const 4) "\10\04\00\00")
(export "memory" memory)
(type $FUNCSIG$vi (func (param i32)))
+ (type $1 (func))
+ (type $2 (func (param i32 i32)))
(import $ext_func "env" "ext_func" (param i32))
(import $ext_func_i32 "env" "ext_func_i32" (param i32))
(import $use_i8_star "env" "use_i8_star" (param i32))
@@ -18,18 +20,27 @@
(export "frameaddress_0" $frameaddress_0)
(export "frameaddress_1" $frameaddress_1)
(export "inline_asm" $inline_asm)
- (func $alloca32
+ (func $alloca32 (type $1)
(local $0 i32)
+ (local $1 i32)
(i32.store offset=12
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $1)
)
- (i32.const 16)
)
+ (get_local $1)
)
)
(i32.const 0)
@@ -43,10 +54,10 @@
)
(return)
)
- (func $alloca3264
+ (func $alloca3264 (type $1)
(local $0 i32)
(i32.store offset=12
- (set_local $0
+ (tee_local $0
(i32.sub
(i32.load
(i32.const 4)
@@ -62,26 +73,44 @@
)
(return)
)
- (func $allocarray
+ (func $allocarray (type $1)
(local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
(i32.store offset=12
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 144)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $1)
)
- (i32.const 144)
)
+ (get_local $1)
)
)
- (i32.store
- (i32.add
- (get_local $0)
- (i32.const 24)
+ (block
+ (block
+ (set_local $2
+ (i32.const 1)
+ )
+ (i32.store
+ (i32.add
+ (get_local $0)
+ (i32.const 24)
+ )
+ (get_local $2)
+ )
)
- (i32.const 1)
+ (get_local $2)
)
)
(i32.store
@@ -93,19 +122,28 @@
)
(return)
)
- (func $non_mem_use (param $0 i32)
+ (func $non_mem_use (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
+ (local $2 i32)
(call_import $ext_func
(i32.add
- (set_local $1
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $1
+ (block
+ (block
+ (set_local $2
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 48)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $2)
)
- (i32.const 48)
)
+ (get_local $2)
)
)
(i32.const 8)
@@ -130,23 +168,41 @@
)
(return)
)
- (func $allocarray_inbounds
+ (func $allocarray_inbounds (type $1)
(local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
(i32.store offset=12
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 32)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $1)
)
- (i32.const 32)
)
+ (get_local $1)
)
)
- (i32.store offset=24
- (get_local $0)
- (i32.const 1)
+ (block
+ (block
+ (set_local $2
+ (i32.const 1)
+ )
+ (i32.store offset=24
+ (get_local $0)
+ (get_local $2)
+ )
+ )
+ (get_local $2)
)
)
(call_import $ext_func
@@ -161,13 +217,13 @@
)
(return)
)
- (func $dynamic_alloca (param $0 i32)
+ (func $dynamic_alloca (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(i32.store
(i32.const 4)
- (set_local $0
+ (tee_local $0
(i32.sub
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 4)
)
@@ -194,7 +250,7 @@
)
(return)
)
- (func $dynamic_alloca_redzone (param $0 i32)
+ (func $dynamic_alloca_redzone (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
(set_local $1
(i32.load
@@ -222,22 +278,31 @@
)
(return)
)
- (func $dynamic_static_alloca (param $0 i32)
+ (func $dynamic_static_alloca (type $FUNCSIG$vi) (param $0 i32)
(local $1 i32)
+ (local $2 i32)
(i32.store
(i32.const 4)
- (set_local $0
+ (tee_local $0
(i32.sub
- (i32.store
- (i32.const 4)
- (set_local $1
- (i32.sub
- (i32.load
- (i32.const 4)
+ (block
+ (block
+ (set_local $2
+ (tee_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
)
- (i32.const 16)
+ )
+ (i32.store
+ (i32.const 4)
+ (get_local $2)
)
)
+ (get_local $2)
)
(i32.and
(i32.add
@@ -265,7 +330,7 @@
)
(return)
)
- (func $copytoreg_fi (param $0 i32) (param $1 i32)
+ (func $copytoreg_fi (type $2) (param $0 i32) (param $1 i32)
(local $2 i32)
(set_local $2
(i32.add
@@ -298,10 +363,10 @@
)
(return)
)
- (func $frameaddress_0
+ (func $frameaddress_0 (type $1)
(local $0 i32)
(call_import $use_i8_star
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 4)
)
@@ -313,13 +378,13 @@
)
(return)
)
- (func $frameaddress_1
+ (func $frameaddress_1 (type $1)
(call_import $use_i8_star
(i32.const 0)
)
(return)
)
- (func $inline_asm
+ (func $inline_asm (type $1)
(local $0 i32)
(set_local $0
(i32.add
diff --git a/test/llvm_autogenerated/varargs.wast b/test/llvm_autogenerated/varargs.wast
index 02b3f2202..17d93d1ae 100644
--- a/test/llvm_autogenerated/varargs.wast
+++ b/test/llvm_autogenerated/varargs.wast
@@ -3,6 +3,10 @@
(data (i32.const 4) "\10\04\00\00")
(export "memory" memory)
(type $FUNCSIG$vi (func (param i32)))
+ (type $1 (func (param i32 i32)))
+ (type $2 (func (param i32) (result i32)))
+ (type $3 (func))
+ (type $4 (func (param i32 i32 i32)))
(import $callee "env" "callee" (param i32))
(export "start" $start)
(export "end" $end)
@@ -13,17 +17,17 @@
(export "caller_none" $caller_none)
(export "caller_some" $caller_some)
(export "startbb" $startbb)
- (func $start (param $0 i32) (param $1 i32)
+ (func $start (type $1) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(get_local $1)
)
(return)
)
- (func $end (param $0 i32)
+ (func $end (type $FUNCSIG$vi) (param $0 i32)
(return)
)
- (func $copy (param $0 i32) (param $1 i32)
+ (func $copy (type $1) (param $0 i32) (param $1 i32)
(i32.store
(get_local $0)
(i32.load
@@ -32,12 +36,12 @@
)
(return)
)
- (func $arg_i8 (param $0 i32) (result i32)
+ (func $arg_i8 (type $2) (param $0 i32) (result i32)
(local $1 i32)
(i32.store
(get_local $0)
(i32.add
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $0)
)
@@ -51,12 +55,12 @@
)
)
)
- (func $arg_i32 (param $0 i32) (result i32)
+ (func $arg_i32 (type $2) (param $0 i32) (result i32)
(local $1 i32)
(i32.store
(get_local $0)
(i32.add
- (set_local $1
+ (tee_local $1
(i32.and
(i32.add
(i32.load
@@ -76,27 +80,36 @@
)
)
)
- (func $arg_i128 (param $0 i32) (param $1 i32)
+ (func $arg_i128 (type $1) (param $0 i32) (param $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i64)
+ (local $5 i32)
(set_local $2
- (i32.store
- (get_local $1)
- (i32.add
- (set_local $3
- (i32.and
- (i32.add
- (i32.load
- (get_local $1)
+ (block
+ (block
+ (set_local $5
+ (i32.add
+ (tee_local $3
+ (i32.and
+ (i32.add
+ (i32.load
+ (get_local $1)
+ )
+ (i32.const 7)
+ )
+ (i32.const -8)
)
- (i32.const 7)
)
- (i32.const -8)
+ (i32.const 8)
)
)
- (i32.const 8)
+ (i32.store
+ (get_local $1)
+ (get_local $5)
+ )
)
+ (get_local $5)
)
)
(set_local $4
@@ -126,24 +139,33 @@
)
(return)
)
- (func $caller_none
+ (func $caller_none (type $3)
(call_import $callee
(i32.const 0)
)
(return)
)
- (func $caller_some
+ (func $caller_some (type $3)
(local $0 i32)
+ (local $1 i32)
(i64.store offset=8
- (set_local $0
- (i32.store
- (i32.const 4)
- (i32.sub
- (i32.load
+ (tee_local $0
+ (block
+ (block
+ (set_local $1
+ (i32.sub
+ (i32.load
+ (i32.const 4)
+ )
+ (i32.const 16)
+ )
+ )
+ (i32.store
(i32.const 4)
+ (get_local $1)
)
- (i32.const 16)
)
+ (get_local $1)
)
)
(i64.const 4611686018427387904)
@@ -164,7 +186,7 @@
)
(return)
)
- (func $startbb (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $startbb (type $4) (param $0 i32) (param $1 i32) (param $2 i32)
(block $label$0
(br_if $label$0
(i32.eqz
diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm
index c07cc247e..d39786018 100644
--- a/test/memorygrowth.fromasm
+++ b/test/memorygrowth.fromasm
@@ -123,16 +123,16 @@
(block
(if
(i32.and
- (set_local $12
+ (tee_local $12
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.load
(i32.const 1208)
)
)
- (set_local $2
+ (tee_local $2
(i32.shr_u
- (set_local $14
+ (tee_local $14
(select
(i32.const 16)
(i32.and
@@ -158,18 +158,18 @@
(block
(set_local $11
(i32.load
- (set_local $27
+ (tee_local $27
(i32.add
- (set_local $29
+ (tee_local $29
(i32.load
- (set_local $25
+ (tee_local $25
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.xor
(i32.and
@@ -228,7 +228,7 @@
(if
(i32.eq
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $11)
(i32.const 12)
@@ -254,7 +254,7 @@
(i32.store offset=4
(get_local $29)
(i32.or
- (set_local $11
+ (tee_local $11
(i32.shl
(get_local $0)
(i32.const 3)
@@ -264,7 +264,7 @@
)
)
(i32.store
- (set_local $25
+ (tee_local $25
(i32.add
(i32.add
(get_local $29)
@@ -292,7 +292,7 @@
(if
(i32.gt_u
(get_local $14)
- (set_local $25
+ (tee_local $25
(i32.load
(i32.const 1216)
)
@@ -305,17 +305,17 @@
(set_local $5
(i32.and
(i32.shr_u
- (set_local $11
+ (tee_local $11
(i32.add
(i32.and
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shl
(get_local $12)
(get_local $2)
)
(i32.or
- (set_local $11
+ (tee_local $11
(i32.shl
(i32.const 2)
(get_local $2)
@@ -343,27 +343,27 @@
)
(set_local $5
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $7
+ (tee_local $7
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $11
+ (tee_local $11
(i32.and
(i32.shr_u
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $11)
(get_local $5)
@@ -376,10 +376,10 @@
)
(get_local $5)
)
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
- (set_local $8
+ (tee_local $8
(i32.shr_u
(get_local $19)
(get_local $11)
@@ -391,10 +391,10 @@
)
)
)
- (set_local $8
+ (tee_local $8
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $8)
(get_local $19)
@@ -406,10 +406,10 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $3)
(get_local $8)
@@ -479,7 +479,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $5)
(i32.const 12)
@@ -515,14 +515,14 @@
)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(get_local $14)
)
)
(i32.or
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.shl
(get_local $7)
@@ -554,7 +554,7 @@
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $25
+ (tee_local $25
(i32.shr_u
(get_local $39)
(i32.const 3)
@@ -568,12 +568,12 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1208)
)
)
- (set_local $12
+ (tee_local $12
(i32.shl
(i32.const 1)
(get_local $25)
@@ -582,9 +582,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $16)
(i32.const 8)
@@ -661,7 +661,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 1212)
)
@@ -670,7 +670,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.add
(i32.and
(get_local $0)
@@ -691,7 +691,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $25
+ (tee_local $25
(i32.load
(i32.add
(i32.shl
@@ -700,10 +700,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.shr_u
(get_local $5)
(get_local $0)
@@ -716,10 +716,10 @@
)
(get_local $0)
)
- (set_local $16
+ (tee_local $16
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $16)
(get_local $5)
@@ -731,10 +731,10 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $3)
(get_local $16)
@@ -746,10 +746,10 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $2)
(get_local $3)
@@ -784,9 +784,9 @@
(set_local $3
(get_local $25)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
- (set_local $25
+ (tee_local $25
(i32.load offset=16
(get_local $12)
)
@@ -795,7 +795,7 @@
(get_local $25)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load offset=20
(get_local $12)
)
@@ -810,13 +810,13 @@
(set_local $26
(get_local $3)
)
- (br $while-out$6)
+ (br $while-out$23)
)
)
)
(set_local $16
(i32.lt_u
- (set_local $25
+ (tee_local $25
(i32.sub
(i32.and
(i32.load offset=4
@@ -847,12 +847,12 @@
(get_local $16)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $26)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -863,7 +863,7 @@
(if
(i32.ge_u
(get_local $26)
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $26)
(get_local $14)
@@ -877,10 +877,10 @@
(get_local $26)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $19
+ (tee_local $19
(i32.load offset=12
(get_local $26)
)
@@ -889,9 +889,9 @@
)
(block
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $26)
(i32.const 20)
@@ -908,9 +908,9 @@
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $26)
(i32.const 16)
@@ -930,15 +930,15 @@
(set_local $27
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $11)
(i32.const 20)
@@ -953,13 +953,13 @@
(set_local $0
(get_local $8)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $11)
(i32.const 16)
@@ -975,9 +975,9 @@
(get_local $8)
)
)
- (br $while-out$10)
+ (br $while-out$27)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -999,7 +999,7 @@
(block
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load offset=8
(get_local $26)
)
@@ -1011,7 +1011,7 @@
(if
(i32.ne
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 12)
@@ -1025,7 +1025,7 @@
(if
(i32.eq
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $19)
(i32.const 8)
@@ -1052,7 +1052,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $2)
(block
@@ -1060,11 +1060,11 @@
(i32.eq
(get_local $26)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.load offset=28
(get_local $26)
)
@@ -1100,7 +1100,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1117,7 +1117,7 @@
(if
(i32.eq
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $2)
(i32.const 16)
@@ -1135,7 +1135,7 @@
(get_local $27)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eqz
(get_local $27)
)
@@ -1145,7 +1145,7 @@
(if
(i32.lt_u
(get_local $27)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.const 1224)
)
@@ -1158,7 +1158,7 @@
(get_local $2)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=16
(get_local $26)
)
@@ -1182,7 +1182,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=20
(get_local $26)
)
@@ -1219,7 +1219,7 @@
(i32.store offset=4
(get_local $26)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $32)
(get_local $14)
@@ -1229,7 +1229,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(i32.add
(get_local $26)
@@ -1269,7 +1269,7 @@
(get_local $32)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1216)
)
@@ -1285,7 +1285,7 @@
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $3)
(i32.const 3)
@@ -1299,12 +1299,12 @@
)
(if
(i32.and
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1208)
)
)
- (set_local $16
+ (tee_local $16
(i32.shl
(i32.const 1)
(get_local $19)
@@ -1313,9 +1313,9 @@
)
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $3)
(i32.const 8)
@@ -1416,7 +1416,7 @@
(block
(set_local $2
(i32.and
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 11)
@@ -1426,7 +1426,7 @@
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1212)
)
@@ -1440,13 +1440,13 @@
)
(block $label$break$a
(if
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(i32.shl
- (set_local $34
+ (tee_local $34
(if
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -1463,20 +1463,20 @@
(i32.shr_u
(get_local $2)
(i32.add
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $19)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -1499,11 +1499,11 @@
)
(get_local $3)
)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $25
+ (tee_local $25
(i32.shl
(get_local $7)
(get_local $19)
@@ -1579,12 +1579,12 @@
(set_local $5
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $29
+ (tee_local $29
(i32.sub
- (set_local $27
+ (tee_local $27
(i32.and
(i32.load offset=4
(get_local $19)
@@ -1638,7 +1638,7 @@
(set_local $27
(select
(get_local $25)
- (set_local $29
+ (tee_local $29
(i32.load offset=20
(get_local $19)
)
@@ -1650,7 +1650,7 @@
)
(i32.eq
(get_local $29)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.add
(i32.add
@@ -1672,7 +1672,7 @@
)
)
(if
- (set_local $29
+ (tee_local $29
(i32.eq
(get_local $19)
(i32.const 0)
@@ -1691,7 +1691,7 @@
(set_local $7
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $7
@@ -1717,7 +1717,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
(block
@@ -1742,7 +1742,7 @@
(i32.const 86)
)
(if
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -1757,11 +1757,11 @@
(block
(if
(i32.eqz
- (set_local $16
+ (tee_local $16
(i32.and
(get_local $8)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 2)
(get_local $34)
@@ -1785,7 +1785,7 @@
(set_local $16
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.add
(i32.and
(get_local $16)
@@ -1810,10 +1810,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $14
+ (tee_local $14
(i32.shr_u
(get_local $0)
(get_local $16)
@@ -1826,10 +1826,10 @@
)
(get_local $16)
)
- (set_local $14
+ (tee_local $14
(i32.and
(i32.shr_u
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $14)
(get_local $0)
@@ -1841,10 +1841,10 @@
)
)
)
- (set_local $12
+ (tee_local $12
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $12)
(get_local $14)
@@ -1856,10 +1856,10 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $5)
(get_local $12)
@@ -1914,13 +1914,13 @@
(get_local $7)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $7
(i32.const 0)
)
(set_local $3
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.and
(i32.load offset=4
@@ -1949,7 +1949,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=16
(get_local $18)
)
@@ -1964,11 +1964,11 @@
(set_local $17
(get_local $5)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
- (set_local $18
+ (tee_local $18
(i32.load offset=20
(get_local $18)
)
@@ -1988,10 +1988,10 @@
(set_local $9
(get_local $5)
)
- (br $while-out$19)
+ (br $while-out$5)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2010,7 +2010,7 @@
(if
(i32.lt_u
(get_local $9)
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1224)
)
@@ -2021,7 +2021,7 @@
(if
(i32.ge_u
(get_local $9)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $9)
(get_local $2)
@@ -2035,10 +2035,10 @@
(get_local $9)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=12
(get_local $9)
)
@@ -2047,9 +2047,9 @@
)
(block
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $9)
(i32.const 20)
@@ -2066,9 +2066,9 @@
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $9)
(i32.const 16)
@@ -2083,15 +2083,15 @@
(set_local $20
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $11)
(i32.const 20)
@@ -2106,13 +2106,13 @@
(set_local $0
(get_local $14)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $11)
(i32.const 16)
@@ -2128,9 +2128,9 @@
(get_local $14)
)
)
- (br $while-out$23)
+ (br $while-out$9)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2152,7 +2152,7 @@
(block
(if
(i32.lt_u
- (set_local $14
+ (tee_local $14
(i32.load offset=8
(get_local $9)
)
@@ -2164,7 +2164,7 @@
(if
(i32.ne
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $14)
(i32.const 12)
@@ -2178,7 +2178,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const 8)
@@ -2205,7 +2205,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $12)
(block
@@ -2213,11 +2213,11 @@
(i32.eq
(get_local $9)
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $3
+ (tee_local $3
(i32.load offset=28
(get_local $9)
)
@@ -2253,7 +2253,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2270,7 +2270,7 @@
(if
(i32.eq
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $12)
(i32.const 16)
@@ -2288,7 +2288,7 @@
(get_local $20)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eqz
(get_local $20)
)
@@ -2298,7 +2298,7 @@
(if
(i32.lt_u
(get_local $20)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -2311,7 +2311,7 @@
(get_local $12)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=16
(get_local $9)
)
@@ -2335,7 +2335,7 @@
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=20
(get_local $9)
)
@@ -2363,7 +2363,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $22)
@@ -2373,7 +2373,7 @@
(i32.store offset=4
(get_local $9)
(i32.or
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $22)
(get_local $2)
@@ -2383,7 +2383,7 @@
)
)
(i32.store
- (set_local $8
+ (tee_local $8
(i32.add
(i32.add
(get_local $9)
@@ -2448,12 +2448,12 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1208)
)
)
- (set_local $14
+ (tee_local $14
(i32.shl
(i32.const 1)
(get_local $8)
@@ -2462,9 +2462,9 @@
)
(if
(i32.lt_u
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $12)
(i32.const 8)
@@ -2521,16 +2521,16 @@
(get_local $5)
(get_local $12)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $0
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $20
+ (tee_local $20
(if
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $22)
(i32.const 8)
@@ -2547,20 +2547,20 @@
(i32.shr_u
(get_local $22)
(i32.add
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $12
+ (tee_local $12
(i32.and
(i32.shr_u
(i32.add
- (set_local $14
+ (tee_local $14
(i32.shl
(get_local $12)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -2583,11 +2583,11 @@
)
(get_local $3)
)
- (set_local $14
+ (tee_local $14
(i32.and
(i32.shr_u
(i32.add
- (set_local $8
+ (tee_local $8
(i32.shl
(get_local $14)
(get_local $12)
@@ -2634,7 +2634,7 @@
(get_local $20)
)
(i32.store offset=4
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $5)
(i32.const 16)
@@ -2649,12 +2649,12 @@
(if
(i32.eqz
(i32.and
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 1212)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $20)
@@ -2686,7 +2686,7 @@
(get_local $5)
(get_local $5)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $8
@@ -2713,7 +2713,7 @@
(get_local $0)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -2731,13 +2731,13 @@
(set_local $7
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $14)
@@ -2775,10 +2775,10 @@
(set_local $7
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -2820,9 +2820,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $21)
(i32.const 8)
@@ -2830,7 +2830,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -2900,7 +2900,7 @@
)
(if
(i32.ge_u
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 1216)
)
@@ -2915,7 +2915,7 @@
)
(if
(i32.gt_u
- (set_local $21
+ (tee_local $21
(i32.sub
(get_local $9)
(get_local $18)
@@ -2926,7 +2926,7 @@
(block
(i32.store
(i32.const 1228)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $24)
(get_local $18)
@@ -2976,7 +2976,7 @@
)
)
(i32.store
- (set_local $21
+ (tee_local $21
(i32.add
(i32.add
(get_local $24)
@@ -3008,7 +3008,7 @@
)
(if
(i32.gt_u
- (set_local $24
+ (tee_local $24
(i32.load
(i32.const 1220)
)
@@ -3018,7 +3018,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $21
+ (tee_local $21
(i32.sub
(get_local $24)
(get_local $18)
@@ -3027,9 +3027,9 @@
)
(i32.store
(i32.const 1232)
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $24
+ (tee_local $24
(i32.load
(i32.const 1232)
)
@@ -3097,7 +3097,7 @@
)
(i32.store
(get_local $15)
- (set_local $24
+ (tee_local $24
(i32.xor
(i32.and
(get_local $15)
@@ -3121,16 +3121,16 @@
)
(if
(i32.le_u
- (set_local $15
+ (tee_local $15
(i32.and
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1688)
)
)
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $18)
(i32.const 47)
@@ -3138,7 +3138,7 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.sub
(i32.const 0)
(get_local $15)
@@ -3159,7 +3159,7 @@
)
)
(if
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1648)
)
@@ -3167,9 +3167,9 @@
(if
(i32.or
(i32.le_u
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $20
+ (tee_local $20
(i32.load
(i32.const 1640)
)
@@ -3197,7 +3197,7 @@
)
(if
(i32.eq
- (set_local $7
+ (tee_local $7
(block $label$break$b
(if
(i32.and
@@ -3210,7 +3210,7 @@
(block
(block $label$break$c
(if
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1232)
)
@@ -3222,7 +3222,7 @@
(loop $while-out$35 $while-in$36
(if
(i32.le_u
- (set_local $20
+ (tee_local $20
(i32.load
(get_local $13)
)
@@ -3234,7 +3234,7 @@
(i32.add
(get_local $20)
(i32.load
- (set_local $23
+ (tee_local $23
(i32.add
(get_local $13)
(i32.const 4)
@@ -3257,7 +3257,7 @@
)
(if
(i32.eqz
- (set_local $13
+ (tee_local $13
(i32.load offset=8
(get_local $13)
)
@@ -3274,7 +3274,7 @@
)
(if
(i32.lt_u
- (set_local $13
+ (tee_local $13
(i32.and
(i32.sub
(get_local $9)
@@ -3289,7 +3289,7 @@
)
(if
(i32.eq
- (set_local $23
+ (tee_local $23
(call_import $ta
(get_local $13)
)
@@ -3347,7 +3347,7 @@
)
(if
(i32.ne
- (set_local $22
+ (tee_local $22
(call_import $ta
(i32.const 0)
)
@@ -3358,9 +3358,9 @@
(set_local $6
(if
(i32.and
- (set_local $23
+ (tee_local $23
(i32.add
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 1684)
)
@@ -3368,7 +3368,7 @@
(i32.const -1)
)
)
- (set_local $2
+ (tee_local $2
(get_local $22)
)
)
@@ -3393,7 +3393,7 @@
)
(set_local $2
(i32.add
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 1640)
)
@@ -3414,7 +3414,7 @@
)
(block
(if
- (set_local $23
+ (tee_local $23
(i32.load
(i32.const 1648)
)
@@ -3434,7 +3434,7 @@
)
(if
(i32.eq
- (set_local $23
+ (tee_local $23
(call_import $ta
(get_local $6)
)
@@ -3502,14 +3502,14 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.and
(i32.add
(i32.sub
(get_local $21)
(get_local $1)
)
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1688)
)
@@ -3531,8 +3531,10 @@
(i32.const -1)
)
(block
- (call_import $ta
- (get_local $23)
+ (drop
+ (call_import $ta
+ (get_local $23)
+ )
)
(br $label$break$d)
)
@@ -3595,12 +3597,12 @@
(if
(i32.and
(i32.lt_u
- (set_local $4
+ (tee_local $4
(call_import $ta
(get_local $15)
)
)
- (set_local $15
+ (tee_local $15
(call_import $ta
(i32.const 0)
)
@@ -3619,7 +3621,7 @@
)
(if
(i32.gt_u
- (set_local $10
+ (tee_local $10
(i32.sub
(get_local $15)
(get_local $4)
@@ -3653,7 +3655,7 @@
(block
(i32.store
(i32.const 1640)
- (set_local $10
+ (tee_local $10
(i32.add
(i32.load
(i32.const 1640)
@@ -3676,7 +3678,7 @@
)
(block $do-once$42
(if
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1232)
)
@@ -3685,19 +3687,19 @@
(set_local $1
(i32.const 1656)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$44 $do-in$45
(if
(i32.eq
(get_local $28)
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $1)
)
)
- (set_local $21
+ (tee_local $21
(i32.load
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $1)
(i32.const 4)
@@ -3723,12 +3725,12 @@
(set_local $7
(i32.const 201)
)
- (br $do-out$46)
+ (br $do-out$44)
)
)
- (br_if $do-in$47
+ (br_if $do-in$45
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -3773,13 +3775,13 @@
(set_local $1
(i32.add
(get_local $10)
- (set_local $21
+ (tee_local $21
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $10)
(i32.const 8)
@@ -3847,7 +3849,7 @@
(if
(i32.lt_u
(get_local $28)
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1224)
)
@@ -3872,7 +3874,7 @@
(set_local $1
(i32.const 1656)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(i32.load
@@ -3890,12 +3892,12 @@
(set_local $7
(i32.const 209)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -3905,10 +3907,10 @@
(set_local $37
(i32.const 1656)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -3931,7 +3933,7 @@
(get_local $28)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $45)
(i32.const 4)
@@ -3952,7 +3954,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $28)
(i32.const 8)
@@ -3979,7 +3981,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -4020,7 +4022,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$48
(if
(i32.eq
(get_local $4)
@@ -4029,7 +4031,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.load
(i32.const 1220)
@@ -4061,7 +4063,7 @@
(block
(i32.store
(i32.const 1216)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.load
(i32.const 1216)
@@ -4088,16 +4090,16 @@
)
(get_local $6)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(i32.store
- (set_local $0
+ (tee_local $0
(i32.add
(if
(i32.eq
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load offset=4
(get_local $4)
)
@@ -4131,15 +4133,15 @@
(get_local $4)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.ne
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $4)
)
)
- (set_local $23
+ (tee_local $23
(i32.add
(i32.const 1248)
(i32.shl
@@ -4160,7 +4162,7 @@
)
(call_import $qa)
)
- (br_if $do-once$53
+ (br_if $do-once$59
(i32.eq
(i32.load offset=12
(get_local $6)
@@ -4196,7 +4198,7 @@
(br $label$break$e)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eq
(get_local $9)
@@ -4219,7 +4221,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $9)
(i32.const 8)
@@ -4232,7 +4234,7 @@
(set_local $46
(get_local $2)
)
- (br $do-once$55)
+ (br $do-once$61)
)
)
(call_import $qa)
@@ -4254,10 +4256,10 @@
(get_local $4)
)
)
- (block $do-once$57
+ (block $do-once$51
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $4)
)
@@ -4266,11 +4268,11 @@
)
(block
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $22
+ (tee_local $22
(i32.add
(get_local $4)
(i32.const 16)
@@ -4290,7 +4292,7 @@
)
)
(if
- (set_local $20
+ (tee_local $20
(i32.load
(get_local $22)
)
@@ -4307,15 +4309,15 @@
(set_local $30
(i32.const 0)
)
- (br $do-once$57)
+ (br $do-once$51)
)
)
)
- (loop $while-out$59 $while-in$60
+ (loop $while-out$53 $while-in$54
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $11)
(i32.const 20)
@@ -4330,13 +4332,13 @@
(set_local $0
(get_local $13)
)
- (br $while-in$60)
+ (br $while-in$54)
)
)
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $11)
(i32.const 16)
@@ -4352,9 +4354,9 @@
(get_local $13)
)
)
- (br $while-out$59)
+ (br $while-out$53)
)
- (br $while-in$60)
+ (br $while-in$54)
)
(if
(i32.lt_u
@@ -4376,7 +4378,7 @@
(block
(if
(i32.lt_u
- (set_local $13
+ (tee_local $13
(i32.load offset=8
(get_local $4)
)
@@ -4388,7 +4390,7 @@
(if
(i32.ne
(i32.load
- (set_local $20
+ (tee_local $20
(i32.add
(get_local $13)
(i32.const 12)
@@ -4402,7 +4404,7 @@
(if
(i32.eq
(i32.load
- (set_local $22
+ (tee_local $22
(i32.add
(get_local $2)
(i32.const 8)
@@ -4434,16 +4436,16 @@
(get_local $23)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.eq
(get_local $4)
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.load offset=28
(get_local $4)
)
@@ -4459,7 +4461,7 @@
(get_local $6)
(get_local $30)
)
- (br_if $do-once$61
+ (br_if $do-once$55
(get_local $30)
)
(i32.store
@@ -4492,7 +4494,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $23)
(i32.const 16)
@@ -4521,7 +4523,7 @@
(if
(i32.lt_u
(get_local $30)
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1224)
)
@@ -4534,9 +4536,9 @@
(get_local $23)
)
(if
- (set_local $9
+ (tee_local $9
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $4)
(i32.const 16)
@@ -4564,7 +4566,7 @@
)
(br_if $label$break$e
(i32.eqz
- (set_local $9
+ (tee_local $9
(i32.load offset=4
(get_local $6)
)
@@ -4659,15 +4661,15 @@
)
)
)
- (block $do-once$65
+ (block $do-once$63
(if
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 1208)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4677,9 +4679,9 @@
(block
(if
(i32.ge_u
- (set_local $23
+ (tee_local $23
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $6)
(i32.const 8)
@@ -4698,7 +4700,7 @@
(set_local $41
(get_local $23)
)
- (br $do-once$65)
+ (br $do-once$63)
)
)
(call_import $qa)
@@ -4739,24 +4741,24 @@
(get_local $1)
(get_local $6)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $2
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $0
- (block $do-once$67
+ (tee_local $0
+ (block $do-once$65
(if
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $11)
(i32.const 8)
)
)
(block
- (br_if $do-once$67
+ (br_if $do-once$65
(i32.const 31)
(i32.gt_u
(get_local $11)
@@ -4768,20 +4770,20 @@
(i32.shr_u
(get_local $11)
(i32.add
- (set_local $13
+ (tee_local $13
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $23
+ (tee_local $23
(i32.and
(i32.shr_u
(i32.add
- (set_local $17
+ (tee_local $17
(i32.shl
(get_local $2)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
(i32.add
@@ -4804,11 +4806,11 @@
)
(get_local $9)
)
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $0
+ (tee_local $0
(i32.shl
(get_local $17)
(get_local $23)
@@ -4856,7 +4858,7 @@
(get_local $0)
)
(i32.store offset=4
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 16)
@@ -4871,12 +4873,12 @@
(if
(i32.eqz
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 1212)
)
)
- (set_local $13
+ (tee_local $13
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4908,7 +4910,7 @@
(get_local $1)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $13
@@ -4935,7 +4937,7 @@
(get_local $2)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$67 $while-in$68
(if
(i32.eq
(i32.and
@@ -4953,13 +4955,13 @@
(set_local $7
(i32.const 279)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
(if
- (set_local $17
+ (tee_local $17
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $6)
@@ -4997,10 +4999,10 @@
(set_local $7
(i32.const 276)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
- (br $while-in$70)
+ (br $while-in$68)
)
(if
(i32.eq
@@ -5042,9 +5044,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $42)
(i32.const 8)
@@ -5052,7 +5054,7 @@
)
)
)
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 1224)
)
@@ -5105,10 +5107,10 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(if
(i32.le_u
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $37)
)
@@ -5117,7 +5119,7 @@
)
(if
(i32.gt_u
- (set_local $24
+ (tee_local $24
(i32.add
(get_local $1)
(i32.load offset=4
@@ -5131,7 +5133,7 @@
(set_local $0
(get_local $24)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
)
@@ -5140,11 +5142,11 @@
(get_local $37)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(set_local $24
(i32.add
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $0)
(i32.const -47)
@@ -5155,10 +5157,10 @@
)
(set_local $1
(i32.add
- (set_local $21
+ (tee_local $21
(select
(get_local $10)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $21)
(select
@@ -5182,7 +5184,7 @@
)
(i32.lt_u
(get_local $1)
- (set_local $24
+ (tee_local $24
(i32.add
(get_local $10)
(i32.const 16)
@@ -5196,16 +5198,16 @@
)
(i32.store
(i32.const 1232)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
- (set_local $15
+ (tee_local $15
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
(i32.const 8)
@@ -5228,7 +5230,7 @@
)
(i32.store
(i32.const 1220)
- (set_local $13
+ (tee_local $13
(i32.sub
(i32.add
(get_local $33)
@@ -5259,7 +5261,7 @@
)
)
(i32.store
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $21)
(i32.const 4)
@@ -5313,9 +5315,9 @@
(i32.const 24)
)
)
- (loop $do-in$74
+ (loop $do-in$72
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 4)
@@ -5323,7 +5325,7 @@
)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$72
(i32.lt_u
(i32.add
(get_local $1)
@@ -5351,7 +5353,7 @@
(i32.store offset=4
(get_local $10)
(i32.or
- (set_local $1
+ (tee_local $1
(i32.sub
(get_local $21)
(get_local $10)
@@ -5390,12 +5392,12 @@
)
(if
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 1208)
)
)
- (set_local $17
+ (tee_local $17
(i32.shl
(i32.const 1)
(get_local $4)
@@ -5404,9 +5406,9 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $15)
(i32.const 8)
@@ -5470,9 +5472,9 @@
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $0
+ (tee_local $0
(if
- (set_local $15
+ (tee_local $15
(i32.shr_u
(get_local $1)
(i32.const 8)
@@ -5489,20 +5491,20 @@
(i32.shr_u
(get_local $1)
(i32.add
- (set_local $2
+ (tee_local $2
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $17
+ (tee_local $17
(i32.shl
(get_local $15)
- (set_local $6
+ (tee_local $6
(i32.and
(i32.shr_u
(i32.add
@@ -5525,11 +5527,11 @@
)
(get_local $6)
)
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $17)
(get_local $15)
@@ -5586,12 +5588,12 @@
(if
(i32.eqz
(i32.and
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 1212)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $0)
@@ -5650,7 +5652,7 @@
(get_local $2)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(if
(i32.eq
(i32.and
@@ -5668,13 +5670,13 @@
(set_local $7
(i32.const 305)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $17)
@@ -5712,10 +5714,10 @@
(set_local $7
(i32.const 302)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.eq
@@ -5757,9 +5759,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $32)
(i32.const 8)
@@ -5767,7 +5769,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1224)
)
@@ -5811,7 +5813,7 @@
(if
(i32.or
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 1224)
)
@@ -5853,9 +5855,9 @@
(set_local $4
(i32.const 0)
)
- (loop $do-in$45
+ (loop $do-in$76
(i32.store offset=12
- (set_local $15
+ (tee_local $15
(i32.add
(i32.const 1248)
(i32.shl
@@ -5873,9 +5875,9 @@
(get_local $15)
(get_local $15)
)
- (br_if $do-in$45
+ (br_if $do-in$76
(i32.ne
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const 1)
@@ -5887,16 +5889,16 @@
)
(i32.store
(i32.const 1232)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
- (set_local $15
+ (tee_local $15
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
(i32.const 8)
@@ -5919,7 +5921,7 @@
)
(i32.store
(i32.const 1220)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.add
(get_local $33)
@@ -5954,7 +5956,7 @@
)
(if
(i32.gt_u
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1220)
)
@@ -5964,7 +5966,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $32
+ (tee_local $32
(i32.sub
(get_local $10)
(get_local $18)
@@ -5973,9 +5975,9 @@
)
(i32.store
(i32.const 1232)
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1232)
)
@@ -6050,13 +6052,13 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 1224)
)
@@ -6066,9 +6068,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.add
(get_local $0)
@@ -6086,7 +6088,7 @@
(set_local $7
(i32.add
(get_local $1)
- (set_local $5
+ (tee_local $5
(i32.and
(get_local $9)
(i32.const -8)
@@ -6128,7 +6130,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.sub
@@ -6152,9 +6154,9 @@
(if
(i32.ne
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $7)
(i32.const 4)
@@ -6223,12 +6225,12 @@
)
(if
(i32.ne
- (set_local $9
+ (tee_local $9
(i32.load offset=8
(get_local $0)
)
)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.const 1248)
(i32.shl
@@ -6312,7 +6314,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 8)
@@ -6353,7 +6355,7 @@
(block $do-once$2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $0)
)
@@ -6362,11 +6364,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 16)
@@ -6387,7 +6389,7 @@
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $4)
)
@@ -6403,9 +6405,9 @@
)
(loop $while-out$4 $while-in$5
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 20)
@@ -6424,9 +6426,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 16)
@@ -6474,7 +6476,7 @@
(block
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $0)
)
@@ -6486,7 +6488,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $6)
(i32.const 12)
@@ -6500,7 +6502,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 8)
@@ -6534,11 +6536,11 @@
(i32.eq
(get_local $0)
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $0)
)
@@ -6597,7 +6599,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 16)
@@ -6634,7 +6636,7 @@
(if
(i32.lt_u
(get_local $3)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1224)
)
@@ -6647,9 +6649,9 @@
(get_local $9)
)
(if
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 16)
@@ -6676,7 +6678,7 @@
)
)
(if
- (set_local $4
+ (tee_local $4
(i32.load offset=4
(get_local $6)
)
@@ -6738,9 +6740,9 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 4)
@@ -6795,7 +6797,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $3
+ (tee_local $3
(i32.add
(i32.load
(i32.const 1220)
@@ -6845,7 +6847,7 @@
(block
(i32.store
(i32.const 1216)
- (set_local $3
+ (tee_local $3
(i32.add
(i32.load
(i32.const 1216)
@@ -6904,12 +6906,12 @@
)
(if
(i32.ne
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $7)
)
)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.const 1248)
(i32.shl
@@ -6991,7 +6993,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $10)
(i32.const 8)
@@ -7025,7 +7027,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $10
+ (tee_local $10
(i32.load offset=12
(get_local $7)
)
@@ -7034,11 +7036,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $7)
(i32.const 16)
@@ -7059,7 +7061,7 @@
)
(if
(i32.eqz
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $4)
)
@@ -7075,9 +7077,9 @@
)
(loop $while-out$12 $while-in$13
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -7096,9 +7098,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -7140,7 +7142,7 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $7)
)
@@ -7154,7 +7156,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $1)
(i32.const 12)
@@ -7168,7 +7170,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $10)
(i32.const 8)
@@ -7202,11 +7204,11 @@
(i32.eq
(get_local $7)
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $10
+ (tee_local $10
(i32.load offset=28
(get_local $7)
)
@@ -7259,7 +7261,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $6)
(i32.const 16)
@@ -7287,7 +7289,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1224)
)
@@ -7300,9 +7302,9 @@
(get_local $6)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 16)
@@ -7329,7 +7331,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $5)
)
@@ -7419,12 +7421,12 @@
)
(if
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 1208)
)
)
- (set_local $3
+ (tee_local $3
(i32.shl
(i32.const 1)
(get_local $8)
@@ -7433,9 +7435,9 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $1)
(i32.const 8)
@@ -7499,9 +7501,9 @@
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $0)
(i32.const 8)
@@ -7518,20 +7520,20 @@
(i32.shr_u
(get_local $0)
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $15
+ (tee_local $15
(i32.shl
(get_local $1)
- (set_local $13
+ (tee_local $13
(i32.and
(i32.shr_u
(i32.add
@@ -7554,11 +7556,11 @@
)
(get_local $13)
)
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.shl
(get_local $15)
(get_local $1)
@@ -7614,12 +7616,12 @@
)
(if
(i32.and
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1212)
)
)
- (set_local $5
+ (tee_local $5
(i32.shl
(i32.const 1)
(get_local $1)
@@ -7673,9 +7675,9 @@
)
)
(if
- (set_local $12
+ (tee_local $12
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(i32.add
(get_local $1)
@@ -7758,9 +7760,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $16)
(i32.const 8)
@@ -7768,7 +7770,7 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 1224)
)
@@ -7834,7 +7836,7 @@
)
(i32.store
(i32.const 1240)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.load
(i32.const 1240)
@@ -7852,7 +7854,7 @@
)
(loop $while-out$20 $while-in$21
(if
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -7913,15 +7915,15 @@
(get_local $11)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $11)
(i32.const 32)
)
)
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $0)
(i32.const 28)
@@ -7932,10 +7934,10 @@
)
(i32.store offset=4
(get_local $3)
- (set_local $10
+ (tee_local $10
(i32.sub
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 20)
@@ -7982,7 +7984,7 @@
(if
(i32.eq
(get_local $5)
- (set_local $6
+ (tee_local $6
(if
(i32.load
(i32.const 1160)
@@ -8079,7 +8081,7 @@
(if
(i32.gt_u
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.load offset=4
(get_local $4)
)
@@ -8088,7 +8090,7 @@
(block
(i32.store
(get_local $9)
- (set_local $7
+ (tee_local $7
(i32.load
(get_local $8)
)
@@ -8191,7 +8193,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $8)
)
@@ -8203,7 +8205,7 @@
)
(i32.store
(get_local $9)
- (set_local $8
+ (tee_local $8
(get_local $5)
)
)
@@ -8273,9 +8275,9 @@
(local $6 i32)
(local $7 i32)
(if
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $2)
(i32.const 16)
@@ -8318,9 +8320,9 @@
)
(block
(set_local $6
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -8392,7 +8394,7 @@
(i32.load8_s
(i32.add
(get_local $0)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $3)
(i32.const -1)
@@ -8465,10 +8467,12 @@
)
)
)
- (call $jb
- (get_local $6)
- (get_local $2)
- (get_local $0)
+ (drop
+ (call $jb
+ (get_local $6)
+ (get_local $2)
+ (get_local $0)
+ )
)
(i32.store
(get_local $5)
@@ -8499,7 +8503,7 @@
(block $label$break$a
(if
(i32.and
- (set_local $3
+ (tee_local $3
(get_local $0)
)
(i32.const 3)
@@ -8523,18 +8527,19 @@
)
)
(if
- (i32.and
- (set_local $4
- (set_local $0
- (i32.add
- (get_local $0)
- (i32.const 1)
+ (i32.eqz
+ (i32.and
+ (tee_local $4
+ (tee_local $0
+ (i32.add
+ (get_local $0)
+ (i32.const 1)
+ )
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -8572,7 +8577,7 @@
(i32.and
(i32.xor
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $1)
)
@@ -8614,7 +8619,7 @@
(loop $while-out$5 $while-in$6
(if
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 1)
@@ -8629,7 +8634,6 @@
(br $while-in$6)
)
)
- (get_local $1)
)
(set_local $5
(get_local $1)
@@ -8703,7 +8707,7 @@
(i32.const 1188)
)
(if
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1184)
)
@@ -8756,12 +8760,13 @@
)
)
(if
- (set_local $1
- (i32.load offset=56
- (get_local $1)
+ (i32.eqz
+ (tee_local $1
+ (i32.load offset=56
+ (get_local $1)
+ )
)
)
- (get_local $2)
(block
(set_local $0
(get_local $2)
@@ -8772,7 +8777,6 @@
(br $while-in$3)
)
)
- (get_local $0)
)
(call_import $xa
(i32.const 1188)
@@ -8806,10 +8810,10 @@
)
)
(i32.store8
- (set_local $6
+ (tee_local $6
(get_local $5)
)
- (set_local $9
+ (tee_local $9
(i32.and
(get_local $1)
(i32.const 255)
@@ -8817,9 +8821,9 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 16)
@@ -8863,9 +8867,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8877,7 +8881,7 @@
)
(if
(i32.ne
- (set_local $4
+ (tee_local $4
(i32.and
(get_local $1)
(i32.const 255)
@@ -8947,7 +8951,7 @@
(if
(i32.gt_u
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8955,7 +8959,7 @@
)
)
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 28)
@@ -8964,19 +8968,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 3)
)
- (i32.const 3)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.load
@@ -9002,9 +9008,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 4)
@@ -9012,9 +9018,9 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 8)
@@ -9235,7 +9241,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -9264,7 +9270,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -9354,7 +9360,7 @@
(if
(i32.gt_s
(i32.load offset=76
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1024)
)
@@ -9389,9 +9395,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 20)
@@ -9451,7 +9457,7 @@
(local $2 i32)
(set_local $2
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 74)
@@ -9471,7 +9477,7 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -9499,7 +9505,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -9533,7 +9539,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.gt_s
(i32.load offset=76
@@ -9602,7 +9608,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -9619,7 +9625,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -9819,7 +9825,7 @@
)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -10039,8 +10045,10 @@
(i32.const 0)
)
(func $Na (result i32)
- (call $db
- (i32.const 1144)
+ (drop
+ (call $db
+ (i32.const 1144)
+ )
)
(i32.const 0)
)
@@ -10080,7 +10088,7 @@
(func $ib (result i32)
(i32.const 0)
)
- (func $__growWasmMemory (param $newSize i32)
+ (func $__growWasmMemory (param $newSize i32) (result i32)
(grow_memory
(get_local $newSize)
)
diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise
index 5482b08f6..b876bc869 100644
--- a/test/memorygrowth.fromasm.imprecise
+++ b/test/memorygrowth.fromasm.imprecise
@@ -122,16 +122,16 @@
(block
(if
(i32.and
- (set_local $12
+ (tee_local $12
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.load
(i32.const 1208)
)
)
- (set_local $2
+ (tee_local $2
(i32.shr_u
- (set_local $14
+ (tee_local $14
(select
(i32.const 16)
(i32.and
@@ -157,18 +157,18 @@
(block
(set_local $11
(i32.load
- (set_local $27
+ (tee_local $27
(i32.add
- (set_local $29
+ (tee_local $29
(i32.load
- (set_local $25
+ (tee_local $25
(i32.add
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $0
+ (tee_local $0
(i32.add
(i32.xor
(i32.and
@@ -227,7 +227,7 @@
(if
(i32.eq
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $11)
(i32.const 12)
@@ -253,7 +253,7 @@
(i32.store offset=4
(get_local $29)
(i32.or
- (set_local $11
+ (tee_local $11
(i32.shl
(get_local $0)
(i32.const 3)
@@ -263,7 +263,7 @@
)
)
(i32.store
- (set_local $25
+ (tee_local $25
(i32.add
(i32.add
(get_local $29)
@@ -291,7 +291,7 @@
(if
(i32.gt_u
(get_local $14)
- (set_local $25
+ (tee_local $25
(i32.load
(i32.const 1216)
)
@@ -304,17 +304,17 @@
(set_local $5
(i32.and
(i32.shr_u
- (set_local $11
+ (tee_local $11
(i32.add
(i32.and
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shl
(get_local $12)
(get_local $2)
)
(i32.or
- (set_local $11
+ (tee_local $11
(i32.shl
(i32.const 2)
(get_local $2)
@@ -342,27 +342,27 @@
)
(set_local $5
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $7
+ (tee_local $7
(i32.add
(i32.or
(i32.or
(i32.or
(i32.or
- (set_local $11
+ (tee_local $11
(i32.and
(i32.shr_u
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $11)
(get_local $5)
@@ -375,10 +375,10 @@
)
(get_local $5)
)
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
- (set_local $8
+ (tee_local $8
(i32.shr_u
(get_local $19)
(get_local $11)
@@ -390,10 +390,10 @@
)
)
)
- (set_local $8
+ (tee_local $8
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $8)
(get_local $19)
@@ -405,10 +405,10 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.shr_u
(get_local $3)
(get_local $8)
@@ -478,7 +478,7 @@
(if
(i32.eq
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $5)
(i32.const 12)
@@ -514,14 +514,14 @@
)
)
(i32.store offset=4
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $8)
(get_local $14)
)
)
(i32.or
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.shl
(get_local $7)
@@ -553,7 +553,7 @@
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $25
+ (tee_local $25
(i32.shr_u
(get_local $39)
(i32.const 3)
@@ -567,12 +567,12 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1208)
)
)
- (set_local $12
+ (tee_local $12
(i32.shl
(i32.const 1)
(get_local $25)
@@ -581,9 +581,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $16)
(i32.const 8)
@@ -660,7 +660,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
(i32.const 1212)
)
@@ -669,7 +669,7 @@
(set_local $0
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.add
(i32.and
(get_local $0)
@@ -690,7 +690,7 @@
(i32.sub
(i32.and
(i32.load offset=4
- (set_local $25
+ (tee_local $25
(i32.load
(i32.add
(i32.shl
@@ -699,10 +699,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $16
+ (tee_local $16
(i32.shr_u
(get_local $5)
(get_local $0)
@@ -715,10 +715,10 @@
)
(get_local $0)
)
- (set_local $16
+ (tee_local $16
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $16)
(get_local $5)
@@ -730,10 +730,10 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $3)
(get_local $16)
@@ -745,10 +745,10 @@
)
)
)
- (set_local $2
+ (tee_local $2
(i32.and
(i32.shr_u
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $2)
(get_local $3)
@@ -783,9 +783,9 @@
(set_local $3
(get_local $25)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(if
- (set_local $25
+ (tee_local $25
(i32.load offset=16
(get_local $12)
)
@@ -794,7 +794,7 @@
(get_local $25)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load offset=20
(get_local $12)
)
@@ -809,13 +809,13 @@
(set_local $26
(get_local $3)
)
- (br $while-out$6)
+ (br $while-out$23)
)
)
)
(set_local $16
(i32.lt_u
- (set_local $25
+ (tee_local $25
(i32.sub
(i32.and
(i32.load offset=4
@@ -846,12 +846,12 @@
(get_local $16)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(if
(i32.lt_u
(get_local $26)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -862,7 +862,7 @@
(if
(i32.ge_u
(get_local $26)
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $26)
(get_local $14)
@@ -876,10 +876,10 @@
(get_local $26)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
- (set_local $19
+ (tee_local $19
(i32.load offset=12
(get_local $26)
)
@@ -888,9 +888,9 @@
)
(block
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $26)
(i32.const 20)
@@ -907,9 +907,9 @@
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $26)
(i32.const 16)
@@ -929,15 +929,15 @@
(set_local $27
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $11)
(i32.const 20)
@@ -952,13 +952,13 @@
(set_local $0
(get_local $8)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(if
- (set_local $7
+ (tee_local $7
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(get_local $11)
(i32.const 16)
@@ -974,9 +974,9 @@
(get_local $8)
)
)
- (br $while-out$10)
+ (br $while-out$27)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -998,7 +998,7 @@
(block
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load offset=8
(get_local $26)
)
@@ -1010,7 +1010,7 @@
(if
(i32.ne
(i32.load
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $8)
(i32.const 12)
@@ -1024,7 +1024,7 @@
(if
(i32.eq
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $19)
(i32.const 8)
@@ -1051,7 +1051,7 @@
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $2)
(block
@@ -1059,11 +1059,11 @@
(i32.eq
(get_local $26)
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.load offset=28
(get_local $26)
)
@@ -1099,7 +1099,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1116,7 +1116,7 @@
(if
(i32.eq
(i32.load
- (set_local $19
+ (tee_local $19
(i32.add
(get_local $2)
(i32.const 16)
@@ -1134,7 +1134,7 @@
(get_local $27)
)
)
- (br_if $do-once$12
+ (br_if $do-once$29
(i32.eqz
(get_local $27)
)
@@ -1144,7 +1144,7 @@
(if
(i32.lt_u
(get_local $27)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.const 1224)
)
@@ -1157,7 +1157,7 @@
(get_local $2)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=16
(get_local $26)
)
@@ -1181,7 +1181,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=20
(get_local $26)
)
@@ -1218,7 +1218,7 @@
(i32.store offset=4
(get_local $26)
(i32.or
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $32)
(get_local $14)
@@ -1228,7 +1228,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(i32.add
(get_local $26)
@@ -1268,7 +1268,7 @@
(get_local $32)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1216)
)
@@ -1284,7 +1284,7 @@
(i32.const 1248)
(i32.shl
(i32.shl
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $3)
(i32.const 3)
@@ -1298,12 +1298,12 @@
)
(if
(i32.and
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1208)
)
)
- (set_local $16
+ (tee_local $16
(i32.shl
(i32.const 1)
(get_local $19)
@@ -1312,9 +1312,9 @@
)
(if
(i32.lt_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $3)
(i32.const 8)
@@ -1415,7 +1415,7 @@
(block
(set_local $2
(i32.and
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 11)
@@ -1425,7 +1425,7 @@
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1212)
)
@@ -1439,13 +1439,13 @@
)
(block $label$break$a
(if
- (set_local $0
+ (tee_local $0
(i32.load
(i32.add
(i32.shl
- (set_local $34
+ (tee_local $34
(if
- (set_local $19
+ (tee_local $19
(i32.shr_u
(get_local $3)
(i32.const 8)
@@ -1462,20 +1462,20 @@
(i32.shr_u
(get_local $2)
(i32.add
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $19
+ (tee_local $19
(i32.and
(i32.shr_u
(i32.add
- (set_local $7
+ (tee_local $7
(i32.shl
(get_local $19)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -1498,11 +1498,11 @@
)
(get_local $3)
)
- (set_local $7
+ (tee_local $7
(i32.and
(i32.shr_u
(i32.add
- (set_local $25
+ (tee_local $25
(i32.shl
(get_local $7)
(get_local $19)
@@ -1578,12 +1578,12 @@
(set_local $5
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(if
(i32.lt_u
- (set_local $29
+ (tee_local $29
(i32.sub
- (set_local $27
+ (tee_local $27
(i32.and
(i32.load offset=4
(get_local $19)
@@ -1637,7 +1637,7 @@
(set_local $27
(select
(get_local $25)
- (set_local $29
+ (tee_local $29
(i32.load offset=20
(get_local $19)
)
@@ -1649,7 +1649,7 @@
)
(i32.eq
(get_local $29)
- (set_local $19
+ (tee_local $19
(i32.load
(i32.add
(i32.add
@@ -1671,7 +1671,7 @@
)
)
(if
- (set_local $29
+ (tee_local $29
(i32.eq
(get_local $19)
(i32.const 0)
@@ -1690,7 +1690,7 @@
(set_local $7
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $7
@@ -1716,7 +1716,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
(block
@@ -1741,7 +1741,7 @@
(i32.const 86)
)
(if
- (set_local $0
+ (tee_local $0
(if
(i32.and
(i32.eq
@@ -1756,11 +1756,11 @@
(block
(if
(i32.eqz
- (set_local $16
+ (tee_local $16
(i32.and
(get_local $8)
(i32.or
- (set_local $0
+ (tee_local $0
(i32.shl
(i32.const 2)
(get_local $34)
@@ -1784,7 +1784,7 @@
(set_local $16
(i32.and
(i32.shr_u
- (set_local $0
+ (tee_local $0
(i32.add
(i32.and
(get_local $16)
@@ -1809,10 +1809,10 @@
(i32.or
(i32.or
(i32.or
- (set_local $0
+ (tee_local $0
(i32.and
(i32.shr_u
- (set_local $14
+ (tee_local $14
(i32.shr_u
(get_local $0)
(get_local $16)
@@ -1825,10 +1825,10 @@
)
(get_local $16)
)
- (set_local $14
+ (tee_local $14
(i32.and
(i32.shr_u
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $14)
(get_local $0)
@@ -1840,10 +1840,10 @@
)
)
)
- (set_local $12
+ (tee_local $12
(i32.and
(i32.shr_u
- (set_local $5
+ (tee_local $5
(i32.shr_u
(get_local $12)
(get_local $14)
@@ -1855,10 +1855,10 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.and
(i32.shr_u
- (set_local $3
+ (tee_local $3
(i32.shr_u
(get_local $5)
(get_local $12)
@@ -1913,13 +1913,13 @@
(get_local $7)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $7
(i32.const 0)
)
(set_local $3
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.sub
(i32.and
(i32.load offset=4
@@ -1948,7 +1948,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load offset=16
(get_local $18)
)
@@ -1963,11 +1963,11 @@
(set_local $17
(get_local $5)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
- (set_local $18
+ (tee_local $18
(i32.load offset=20
(get_local $18)
)
@@ -1987,10 +1987,10 @@
(set_local $9
(get_local $5)
)
- (br $while-out$19)
+ (br $while-out$5)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2009,7 +2009,7 @@
(if
(i32.lt_u
(get_local $9)
- (set_local $8
+ (tee_local $8
(i32.load
(i32.const 1224)
)
@@ -2020,7 +2020,7 @@
(if
(i32.ge_u
(get_local $9)
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $9)
(get_local $2)
@@ -2034,10 +2034,10 @@
(get_local $9)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
- (set_local $3
+ (tee_local $3
(i32.load offset=12
(get_local $9)
)
@@ -2046,9 +2046,9 @@
)
(block
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $9)
(i32.const 20)
@@ -2065,9 +2065,9 @@
)
)
(if
- (set_local $25
+ (tee_local $25
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $9)
(i32.const 16)
@@ -2082,15 +2082,15 @@
(set_local $20
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $11)
(i32.const 20)
@@ -2105,13 +2105,13 @@
(set_local $0
(get_local $14)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(if
- (set_local $16
+ (tee_local $16
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $11)
(i32.const 16)
@@ -2127,9 +2127,9 @@
(get_local $14)
)
)
- (br $while-out$23)
+ (br $while-out$9)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2151,7 +2151,7 @@
(block
(if
(i32.lt_u
- (set_local $14
+ (tee_local $14
(i32.load offset=8
(get_local $9)
)
@@ -2163,7 +2163,7 @@
(if
(i32.ne
(i32.load
- (set_local $16
+ (tee_local $16
(i32.add
(get_local $14)
(i32.const 12)
@@ -2177,7 +2177,7 @@
(if
(i32.eq
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $3)
(i32.const 8)
@@ -2204,7 +2204,7 @@
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $12)
(block
@@ -2212,11 +2212,11 @@
(i32.eq
(get_local $9)
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $3
+ (tee_local $3
(i32.load offset=28
(get_local $9)
)
@@ -2252,7 +2252,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2269,7 +2269,7 @@
(if
(i32.eq
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $12)
(i32.const 16)
@@ -2287,7 +2287,7 @@
(get_local $20)
)
)
- (br_if $do-once$25
+ (br_if $do-once$11
(i32.eqz
(get_local $20)
)
@@ -2297,7 +2297,7 @@
(if
(i32.lt_u
(get_local $20)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -2310,7 +2310,7 @@
(get_local $12)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=16
(get_local $9)
)
@@ -2334,7 +2334,7 @@
)
)
(if
- (set_local $8
+ (tee_local $8
(i32.load offset=20
(get_local $9)
)
@@ -2362,7 +2362,7 @@
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $22)
@@ -2372,7 +2372,7 @@
(i32.store offset=4
(get_local $9)
(i32.or
- (set_local $12
+ (tee_local $12
(i32.add
(get_local $22)
(get_local $2)
@@ -2382,7 +2382,7 @@
)
)
(i32.store
- (set_local $8
+ (tee_local $8
(i32.add
(i32.add
(get_local $9)
@@ -2447,12 +2447,12 @@
)
(if
(i32.and
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1208)
)
)
- (set_local $14
+ (tee_local $14
(i32.shl
(i32.const 1)
(get_local $8)
@@ -2461,9 +2461,9 @@
)
(if
(i32.lt_u
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $12)
(i32.const 8)
@@ -2520,16 +2520,16 @@
(get_local $5)
(get_local $12)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $0
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $20
+ (tee_local $20
(if
- (set_local $12
+ (tee_local $12
(i32.shr_u
(get_local $22)
(i32.const 8)
@@ -2546,20 +2546,20 @@
(i32.shr_u
(get_local $22)
(i32.add
- (set_local $0
+ (tee_local $0
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $12
+ (tee_local $12
(i32.and
(i32.shr_u
(i32.add
- (set_local $14
+ (tee_local $14
(i32.shl
(get_local $12)
- (set_local $3
+ (tee_local $3
(i32.and
(i32.shr_u
(i32.add
@@ -2582,11 +2582,11 @@
)
(get_local $3)
)
- (set_local $14
+ (tee_local $14
(i32.and
(i32.shr_u
(i32.add
- (set_local $8
+ (tee_local $8
(i32.shl
(get_local $14)
(get_local $12)
@@ -2633,7 +2633,7 @@
(get_local $20)
)
(i32.store offset=4
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $5)
(i32.const 16)
@@ -2648,12 +2648,12 @@
(if
(i32.eqz
(i32.and
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 1212)
)
)
- (set_local $8
+ (tee_local $8
(i32.shl
(i32.const 1)
(get_local $20)
@@ -2685,7 +2685,7 @@
(get_local $5)
(get_local $5)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $8
@@ -2712,7 +2712,7 @@
(get_local $0)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -2730,13 +2730,13 @@
(set_local $7
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(i32.add
(get_local $14)
@@ -2774,10 +2774,10 @@
(set_local $7
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -2819,9 +2819,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $21)
(i32.const 8)
@@ -2829,7 +2829,7 @@
)
)
)
- (set_local $3
+ (tee_local $3
(i32.load
(i32.const 1224)
)
@@ -2899,7 +2899,7 @@
)
(if
(i32.ge_u
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 1216)
)
@@ -2914,7 +2914,7 @@
)
(if
(i32.gt_u
- (set_local $21
+ (tee_local $21
(i32.sub
(get_local $9)
(get_local $18)
@@ -2925,7 +2925,7 @@
(block
(i32.store
(i32.const 1228)
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $24)
(get_local $18)
@@ -2975,7 +2975,7 @@
)
)
(i32.store
- (set_local $21
+ (tee_local $21
(i32.add
(i32.add
(get_local $24)
@@ -3007,7 +3007,7 @@
)
(if
(i32.gt_u
- (set_local $24
+ (tee_local $24
(i32.load
(i32.const 1220)
)
@@ -3017,7 +3017,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $21
+ (tee_local $21
(i32.sub
(get_local $24)
(get_local $18)
@@ -3026,9 +3026,9 @@
)
(i32.store
(i32.const 1232)
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $24
+ (tee_local $24
(i32.load
(i32.const 1232)
)
@@ -3096,7 +3096,7 @@
)
(i32.store
(get_local $15)
- (set_local $24
+ (tee_local $24
(i32.xor
(i32.and
(get_local $15)
@@ -3120,16 +3120,16 @@
)
(if
(i32.le_u
- (set_local $15
+ (tee_local $15
(i32.and
- (set_local $9
+ (tee_local $9
(i32.add
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1688)
)
)
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $18)
(i32.const 47)
@@ -3137,7 +3137,7 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.sub
(i32.const 0)
(get_local $15)
@@ -3158,7 +3158,7 @@
)
)
(if
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1648)
)
@@ -3166,9 +3166,9 @@
(if
(i32.or
(i32.le_u
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $20
+ (tee_local $20
(i32.load
(i32.const 1640)
)
@@ -3196,7 +3196,7 @@
)
(if
(i32.eq
- (set_local $7
+ (tee_local $7
(block $label$break$b
(if
(i32.and
@@ -3209,7 +3209,7 @@
(block
(block $label$break$c
(if
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1232)
)
@@ -3221,7 +3221,7 @@
(loop $while-out$35 $while-in$36
(if
(i32.le_u
- (set_local $20
+ (tee_local $20
(i32.load
(get_local $13)
)
@@ -3233,7 +3233,7 @@
(i32.add
(get_local $20)
(i32.load
- (set_local $23
+ (tee_local $23
(i32.add
(get_local $13)
(i32.const 4)
@@ -3256,7 +3256,7 @@
)
(if
(i32.eqz
- (set_local $13
+ (tee_local $13
(i32.load offset=8
(get_local $13)
)
@@ -3273,7 +3273,7 @@
)
(if
(i32.lt_u
- (set_local $13
+ (tee_local $13
(i32.and
(i32.sub
(get_local $9)
@@ -3288,7 +3288,7 @@
)
(if
(i32.eq
- (set_local $23
+ (tee_local $23
(call_import $ta
(get_local $13)
)
@@ -3346,7 +3346,7 @@
)
(if
(i32.ne
- (set_local $22
+ (tee_local $22
(call_import $ta
(i32.const 0)
)
@@ -3357,9 +3357,9 @@
(set_local $6
(if
(i32.and
- (set_local $23
+ (tee_local $23
(i32.add
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 1684)
)
@@ -3367,7 +3367,7 @@
(i32.const -1)
)
)
- (set_local $2
+ (tee_local $2
(get_local $22)
)
)
@@ -3392,7 +3392,7 @@
)
(set_local $2
(i32.add
- (set_local $13
+ (tee_local $13
(i32.load
(i32.const 1640)
)
@@ -3413,7 +3413,7 @@
)
(block
(if
- (set_local $23
+ (tee_local $23
(i32.load
(i32.const 1648)
)
@@ -3433,7 +3433,7 @@
)
(if
(i32.eq
- (set_local $23
+ (tee_local $23
(call_import $ta
(get_local $6)
)
@@ -3501,14 +3501,14 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.and
(i32.add
(i32.sub
(get_local $21)
(get_local $1)
)
- (set_local $22
+ (tee_local $22
(i32.load
(i32.const 1688)
)
@@ -3530,8 +3530,10 @@
(i32.const -1)
)
(block
- (call_import $ta
- (get_local $23)
+ (drop
+ (call_import $ta
+ (get_local $23)
+ )
)
(br $label$break$d)
)
@@ -3594,12 +3596,12 @@
(if
(i32.and
(i32.lt_u
- (set_local $4
+ (tee_local $4
(call_import $ta
(get_local $15)
)
)
- (set_local $15
+ (tee_local $15
(call_import $ta
(i32.const 0)
)
@@ -3618,7 +3620,7 @@
)
(if
(i32.gt_u
- (set_local $10
+ (tee_local $10
(i32.sub
(get_local $15)
(get_local $4)
@@ -3652,7 +3654,7 @@
(block
(i32.store
(i32.const 1640)
- (set_local $10
+ (tee_local $10
(i32.add
(i32.load
(i32.const 1640)
@@ -3675,7 +3677,7 @@
)
(block $do-once$42
(if
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1232)
)
@@ -3684,19 +3686,19 @@
(set_local $1
(i32.const 1656)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$44 $do-in$45
(if
(i32.eq
(get_local $28)
(i32.add
- (set_local $4
+ (tee_local $4
(i32.load
(get_local $1)
)
)
- (set_local $21
+ (tee_local $21
(i32.load
- (set_local $15
+ (tee_local $15
(i32.add
(get_local $1)
(i32.const 4)
@@ -3722,12 +3724,12 @@
(set_local $7
(i32.const 201)
)
- (br $do-out$46)
+ (br $do-out$44)
)
)
- (br_if $do-in$47
+ (br_if $do-in$45
(i32.ne
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -3772,13 +3774,13 @@
(set_local $1
(i32.add
(get_local $10)
- (set_local $21
+ (tee_local $21
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $10)
(i32.const 8)
@@ -3846,7 +3848,7 @@
(if
(i32.lt_u
(get_local $28)
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1224)
)
@@ -3871,7 +3873,7 @@
(set_local $1
(i32.const 1656)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(i32.load
@@ -3889,12 +3891,12 @@
(set_local $7
(i32.const 209)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $1)
)
@@ -3904,10 +3906,10 @@
(set_local $37
(i32.const 1656)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -3930,7 +3932,7 @@
(get_local $28)
)
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $45)
(i32.const 4)
@@ -3951,7 +3953,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $28)
(i32.const 8)
@@ -3978,7 +3980,7 @@
(i32.and
(i32.sub
(i32.const 0)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $15)
(i32.const 8)
@@ -4019,7 +4021,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$48
(if
(i32.eq
(get_local $4)
@@ -4028,7 +4030,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.load
(i32.const 1220)
@@ -4060,7 +4062,7 @@
(block
(i32.store
(i32.const 1216)
- (set_local $6
+ (tee_local $6
(i32.add
(i32.load
(i32.const 1216)
@@ -4087,16 +4089,16 @@
)
(get_local $6)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(i32.store
- (set_local $0
+ (tee_local $0
(i32.add
(if
(i32.eq
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load offset=4
(get_local $4)
)
@@ -4130,15 +4132,15 @@
(get_local $4)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.ne
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $4)
)
)
- (set_local $23
+ (tee_local $23
(i32.add
(i32.const 1248)
(i32.shl
@@ -4159,7 +4161,7 @@
)
(call_import $qa)
)
- (br_if $do-once$53
+ (br_if $do-once$59
(i32.eq
(i32.load offset=12
(get_local $6)
@@ -4195,7 +4197,7 @@
(br $label$break$e)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eq
(get_local $9)
@@ -4218,7 +4220,7 @@
(if
(i32.eq
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $9)
(i32.const 8)
@@ -4231,7 +4233,7 @@
(set_local $46
(get_local $2)
)
- (br $do-once$55)
+ (br $do-once$61)
)
)
(call_import $qa)
@@ -4253,10 +4255,10 @@
(get_local $4)
)
)
- (block $do-once$57
+ (block $do-once$51
(if
(i32.eq
- (set_local $2
+ (tee_local $2
(i32.load offset=12
(get_local $4)
)
@@ -4265,11 +4267,11 @@
)
(block
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
- (set_local $22
+ (tee_local $22
(i32.add
(get_local $4)
(i32.const 16)
@@ -4289,7 +4291,7 @@
)
)
(if
- (set_local $20
+ (tee_local $20
(i32.load
(get_local $22)
)
@@ -4306,15 +4308,15 @@
(set_local $30
(i32.const 0)
)
- (br $do-once$57)
+ (br $do-once$51)
)
)
)
- (loop $while-out$59 $while-in$60
+ (loop $while-out$53 $while-in$54
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $11)
(i32.const 20)
@@ -4329,13 +4331,13 @@
(set_local $0
(get_local $13)
)
- (br $while-in$60)
+ (br $while-in$54)
)
)
(if
- (set_local $20
+ (tee_local $20
(i32.load
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $11)
(i32.const 16)
@@ -4351,9 +4353,9 @@
(get_local $13)
)
)
- (br $while-out$59)
+ (br $while-out$53)
)
- (br $while-in$60)
+ (br $while-in$54)
)
(if
(i32.lt_u
@@ -4375,7 +4377,7 @@
(block
(if
(i32.lt_u
- (set_local $13
+ (tee_local $13
(i32.load offset=8
(get_local $4)
)
@@ -4387,7 +4389,7 @@
(if
(i32.ne
(i32.load
- (set_local $20
+ (tee_local $20
(i32.add
(get_local $13)
(i32.const 12)
@@ -4401,7 +4403,7 @@
(if
(i32.eq
(i32.load
- (set_local $22
+ (tee_local $22
(i32.add
(get_local $2)
(i32.const 8)
@@ -4433,16 +4435,16 @@
(get_local $23)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.eq
(get_local $4)
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $2
+ (tee_local $2
(i32.load offset=28
(get_local $4)
)
@@ -4458,7 +4460,7 @@
(get_local $6)
(get_local $30)
)
- (br_if $do-once$61
+ (br_if $do-once$55
(get_local $30)
)
(i32.store
@@ -4491,7 +4493,7 @@
(if
(i32.eq
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $23)
(i32.const 16)
@@ -4520,7 +4522,7 @@
(if
(i32.lt_u
(get_local $30)
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1224)
)
@@ -4533,9 +4535,9 @@
(get_local $23)
)
(if
- (set_local $9
+ (tee_local $9
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $4)
(i32.const 16)
@@ -4563,7 +4565,7 @@
)
(br_if $label$break$e
(i32.eqz
- (set_local $9
+ (tee_local $9
(i32.load offset=4
(get_local $6)
)
@@ -4658,15 +4660,15 @@
)
)
)
- (block $do-once$65
+ (block $do-once$63
(if
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.const 1208)
)
)
- (set_local $2
+ (tee_local $2
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4676,9 +4678,9 @@
(block
(if
(i32.ge_u
- (set_local $23
+ (tee_local $23
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $6)
(i32.const 8)
@@ -4697,7 +4699,7 @@
(set_local $41
(get_local $23)
)
- (br $do-once$65)
+ (br $do-once$63)
)
)
(call_import $qa)
@@ -4738,24 +4740,24 @@
(get_local $1)
(get_local $6)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $2
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $0
- (block $do-once$67
+ (tee_local $0
+ (block $do-once$65
(if
- (set_local $2
+ (tee_local $2
(i32.shr_u
(get_local $11)
(i32.const 8)
)
)
(block
- (br_if $do-once$67
+ (br_if $do-once$65
(i32.const 31)
(i32.gt_u
(get_local $11)
@@ -4767,20 +4769,20 @@
(i32.shr_u
(get_local $11)
(i32.add
- (set_local $13
+ (tee_local $13
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $23
+ (tee_local $23
(i32.and
(i32.shr_u
(i32.add
- (set_local $17
+ (tee_local $17
(i32.shl
(get_local $2)
- (set_local $9
+ (tee_local $9
(i32.and
(i32.shr_u
(i32.add
@@ -4803,11 +4805,11 @@
)
(get_local $9)
)
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $0
+ (tee_local $0
(i32.shl
(get_local $17)
(get_local $23)
@@ -4855,7 +4857,7 @@
(get_local $0)
)
(i32.store offset=4
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 16)
@@ -4870,12 +4872,12 @@
(if
(i32.eqz
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 1212)
)
)
- (set_local $13
+ (tee_local $13
(i32.shl
(i32.const 1)
(get_local $0)
@@ -4907,7 +4909,7 @@
(get_local $1)
(get_local $1)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $13
@@ -4934,7 +4936,7 @@
(get_local $2)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$67 $while-in$68
(if
(i32.eq
(i32.and
@@ -4952,13 +4954,13 @@
(set_local $7
(i32.const 279)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
(if
- (set_local $17
+ (tee_local $17
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $6)
@@ -4996,10 +4998,10 @@
(set_local $7
(i32.const 276)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
- (br $while-in$70)
+ (br $while-in$68)
)
(if
(i32.eq
@@ -5041,9 +5043,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $42)
(i32.const 8)
@@ -5051,7 +5053,7 @@
)
)
)
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 1224)
)
@@ -5104,10 +5106,10 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(if
(i32.le_u
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $37)
)
@@ -5116,7 +5118,7 @@
)
(if
(i32.gt_u
- (set_local $24
+ (tee_local $24
(i32.add
(get_local $1)
(i32.load offset=4
@@ -5130,7 +5132,7 @@
(set_local $0
(get_local $24)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
)
@@ -5139,11 +5141,11 @@
(get_local $37)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(set_local $24
(i32.add
- (set_local $21
+ (tee_local $21
(i32.add
(get_local $0)
(i32.const -47)
@@ -5154,10 +5156,10 @@
)
(set_local $1
(i32.add
- (set_local $21
+ (tee_local $21
(select
(get_local $10)
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $21)
(select
@@ -5181,7 +5183,7 @@
)
(i32.lt_u
(get_local $1)
- (set_local $24
+ (tee_local $24
(i32.add
(get_local $10)
(i32.const 16)
@@ -5195,16 +5197,16 @@
)
(i32.store
(i32.const 1232)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
- (set_local $15
+ (tee_local $15
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
(i32.const 8)
@@ -5227,7 +5229,7 @@
)
(i32.store
(i32.const 1220)
- (set_local $13
+ (tee_local $13
(i32.sub
(i32.add
(get_local $33)
@@ -5258,7 +5260,7 @@
)
)
(i32.store
- (set_local $13
+ (tee_local $13
(i32.add
(get_local $21)
(i32.const 4)
@@ -5312,9 +5314,9 @@
(i32.const 24)
)
)
- (loop $do-in$74
+ (loop $do-in$72
(i32.store
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $1)
(i32.const 4)
@@ -5322,7 +5324,7 @@
)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$72
(i32.lt_u
(i32.add
(get_local $1)
@@ -5350,7 +5352,7 @@
(i32.store offset=4
(get_local $10)
(i32.or
- (set_local $1
+ (tee_local $1
(i32.sub
(get_local $21)
(get_local $10)
@@ -5389,12 +5391,12 @@
)
(if
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
(i32.const 1208)
)
)
- (set_local $17
+ (tee_local $17
(i32.shl
(i32.const 1)
(get_local $4)
@@ -5403,9 +5405,9 @@
)
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $15)
(i32.const 8)
@@ -5469,9 +5471,9 @@
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $0
+ (tee_local $0
(if
- (set_local $15
+ (tee_local $15
(i32.shr_u
(get_local $1)
(i32.const 8)
@@ -5488,20 +5490,20 @@
(i32.shr_u
(get_local $1)
(i32.add
- (set_local $2
+ (tee_local $2
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $17
+ (tee_local $17
(i32.shl
(get_local $15)
- (set_local $6
+ (tee_local $6
(i32.and
(i32.shr_u
(i32.add
@@ -5524,11 +5526,11 @@
)
(get_local $6)
)
- (set_local $17
+ (tee_local $17
(i32.and
(i32.shr_u
(i32.add
- (set_local $4
+ (tee_local $4
(i32.shl
(get_local $17)
(get_local $15)
@@ -5585,12 +5587,12 @@
(if
(i32.eqz
(i32.and
- (set_local $17
+ (tee_local $17
(i32.load
(i32.const 1212)
)
)
- (set_local $4
+ (tee_local $4
(i32.shl
(i32.const 1)
(get_local $0)
@@ -5649,7 +5651,7 @@
(get_local $2)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(if
(i32.eq
(i32.and
@@ -5667,13 +5669,13 @@
(set_local $7
(i32.const 305)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
(if
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(i32.add
(get_local $17)
@@ -5711,10 +5713,10 @@
(set_local $7
(i32.const 302)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.eq
@@ -5756,9 +5758,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $17
+ (tee_local $17
(i32.add
(get_local $32)
(i32.const 8)
@@ -5766,7 +5768,7 @@
)
)
)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1224)
)
@@ -5810,7 +5812,7 @@
(if
(i32.or
(i32.eq
- (set_local $4
+ (tee_local $4
(i32.load
(i32.const 1224)
)
@@ -5852,9 +5854,9 @@
(set_local $4
(i32.const 0)
)
- (loop $do-in$45
+ (loop $do-in$76
(i32.store offset=12
- (set_local $15
+ (tee_local $15
(i32.add
(i32.const 1248)
(i32.shl
@@ -5872,9 +5874,9 @@
(get_local $15)
(get_local $15)
)
- (br_if $do-in$45
+ (br_if $do-in$76
(i32.ne
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $4)
(i32.const 1)
@@ -5886,16 +5888,16 @@
)
(i32.store
(i32.const 1232)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
- (set_local $15
+ (tee_local $15
(select
(i32.const 0)
(i32.and
(i32.sub
(i32.const 0)
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $28)
(i32.const 8)
@@ -5918,7 +5920,7 @@
)
(i32.store
(i32.const 1220)
- (set_local $1
+ (tee_local $1
(i32.sub
(i32.add
(get_local $33)
@@ -5953,7 +5955,7 @@
)
(if
(i32.gt_u
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1220)
)
@@ -5963,7 +5965,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $32
+ (tee_local $32
(i32.sub
(get_local $10)
(get_local $18)
@@ -5972,9 +5974,9 @@
)
(i32.store
(i32.const 1232)
- (set_local $7
+ (tee_local $7
(i32.add
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1232)
)
@@ -6049,13 +6051,13 @@
)
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const -8)
)
)
- (set_local $14
+ (tee_local $14
(i32.load
(i32.const 1224)
)
@@ -6065,9 +6067,9 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(i32.and
- (set_local $9
+ (tee_local $9
(i32.load
(i32.add
(get_local $0)
@@ -6085,7 +6087,7 @@
(set_local $7
(i32.add
(get_local $1)
- (set_local $5
+ (tee_local $5
(i32.and
(get_local $9)
(i32.const -8)
@@ -6127,7 +6129,7 @@
)
(if
(i32.lt_u
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.sub
@@ -6151,9 +6153,9 @@
(if
(i32.ne
(i32.and
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $7)
(i32.const 4)
@@ -6222,12 +6224,12 @@
)
(if
(i32.ne
- (set_local $9
+ (tee_local $9
(i32.load offset=8
(get_local $0)
)
)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.const 1248)
(i32.shl
@@ -6311,7 +6313,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 8)
@@ -6352,7 +6354,7 @@
(block $do-once$2
(if
(i32.eq
- (set_local $1
+ (tee_local $1
(i32.load offset=12
(get_local $0)
)
@@ -6361,11 +6363,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 16)
@@ -6386,7 +6388,7 @@
)
(if
(i32.eqz
- (set_local $1
+ (tee_local $1
(i32.load
(get_local $4)
)
@@ -6402,9 +6404,9 @@
)
(loop $while-out$4 $while-in$5
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 20)
@@ -6423,9 +6425,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $1)
(i32.const 16)
@@ -6473,7 +6475,7 @@
(block
(if
(i32.lt_u
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $0)
)
@@ -6485,7 +6487,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $6)
(i32.const 12)
@@ -6499,7 +6501,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $1)
(i32.const 8)
@@ -6533,11 +6535,11 @@
(i32.eq
(get_local $0)
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $1
+ (tee_local $1
(i32.load offset=28
(get_local $0)
)
@@ -6596,7 +6598,7 @@
(if
(i32.eq
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $9)
(i32.const 16)
@@ -6633,7 +6635,7 @@
(if
(i32.lt_u
(get_local $3)
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1224)
)
@@ -6646,9 +6648,9 @@
(get_local $9)
)
(if
- (set_local $4
+ (tee_local $4
(i32.load
- (set_local $6
+ (tee_local $6
(i32.add
(get_local $0)
(i32.const 16)
@@ -6675,7 +6677,7 @@
)
)
(if
- (set_local $4
+ (tee_local $4
(i32.load offset=4
(get_local $6)
)
@@ -6737,9 +6739,9 @@
(if
(i32.eqz
(i32.and
- (set_local $1
+ (tee_local $1
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 4)
@@ -6794,7 +6796,7 @@
(block
(i32.store
(i32.const 1220)
- (set_local $3
+ (tee_local $3
(i32.add
(i32.load
(i32.const 1220)
@@ -6844,7 +6846,7 @@
(block
(i32.store
(i32.const 1216)
- (set_local $3
+ (tee_local $3
(i32.add
(i32.load
(i32.const 1216)
@@ -6903,12 +6905,12 @@
)
(if
(i32.ne
- (set_local $6
+ (tee_local $6
(i32.load offset=8
(get_local $7)
)
)
- (set_local $4
+ (tee_local $4
(i32.add
(i32.const 1248)
(i32.shl
@@ -6990,7 +6992,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $10)
(i32.const 8)
@@ -7024,7 +7026,7 @@
(block $do-once$10
(if
(i32.eq
- (set_local $10
+ (tee_local $10
(i32.load offset=12
(get_local $7)
)
@@ -7033,11 +7035,11 @@
)
(block
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $7)
(i32.const 16)
@@ -7058,7 +7060,7 @@
)
(if
(i32.eqz
- (set_local $0
+ (tee_local $0
(i32.load
(get_local $4)
)
@@ -7074,9 +7076,9 @@
)
(loop $while-out$12 $while-in$13
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 20)
@@ -7095,9 +7097,9 @@
)
)
(if
- (set_local $11
+ (tee_local $11
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 16)
@@ -7139,7 +7141,7 @@
(block
(if
(i32.lt_u
- (set_local $1
+ (tee_local $1
(i32.load offset=8
(get_local $7)
)
@@ -7153,7 +7155,7 @@
(if
(i32.ne
(i32.load
- (set_local $11
+ (tee_local $11
(i32.add
(get_local $1)
(i32.const 12)
@@ -7167,7 +7169,7 @@
(if
(i32.eq
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $10)
(i32.const 8)
@@ -7201,11 +7203,11 @@
(i32.eq
(get_local $7)
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $10
+ (tee_local $10
(i32.load offset=28
(get_local $7)
)
@@ -7258,7 +7260,7 @@
(if
(i32.eq
(i32.load
- (set_local $10
+ (tee_local $10
(i32.add
(get_local $6)
(i32.const 16)
@@ -7286,7 +7288,7 @@
(if
(i32.lt_u
(get_local $12)
- (set_local $10
+ (tee_local $10
(i32.load
(i32.const 1224)
)
@@ -7299,9 +7301,9 @@
(get_local $6)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $7)
(i32.const 16)
@@ -7328,7 +7330,7 @@
)
)
(if
- (set_local $0
+ (tee_local $0
(i32.load offset=4
(get_local $5)
)
@@ -7418,12 +7420,12 @@
)
(if
(i32.and
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 1208)
)
)
- (set_local $3
+ (tee_local $3
(i32.shl
(i32.const 1)
(get_local $8)
@@ -7432,9 +7434,9 @@
)
(if
(i32.lt_u
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $1)
(i32.const 8)
@@ -7498,9 +7500,9 @@
(i32.add
(i32.const 1512)
(i32.shl
- (set_local $1
+ (tee_local $1
(if
- (set_local $1
+ (tee_local $1
(i32.shr_u
(get_local $0)
(i32.const 8)
@@ -7517,20 +7519,20 @@
(i32.shr_u
(get_local $0)
(i32.add
- (set_local $3
+ (tee_local $3
(i32.add
(i32.sub
(i32.const 14)
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(i32.shr_u
(i32.add
- (set_local $15
+ (tee_local $15
(i32.shl
(get_local $1)
- (set_local $13
+ (tee_local $13
(i32.and
(i32.shr_u
(i32.add
@@ -7553,11 +7555,11 @@
)
(get_local $13)
)
- (set_local $15
+ (tee_local $15
(i32.and
(i32.shr_u
(i32.add
- (set_local $5
+ (tee_local $5
(i32.shl
(get_local $15)
(get_local $1)
@@ -7613,12 +7615,12 @@
)
(if
(i32.and
- (set_local $15
+ (tee_local $15
(i32.load
(i32.const 1212)
)
)
- (set_local $5
+ (tee_local $5
(i32.shl
(i32.const 1)
(get_local $1)
@@ -7672,9 +7674,9 @@
)
)
(if
- (set_local $12
+ (tee_local $12
(i32.load
- (set_local $8
+ (tee_local $8
(i32.add
(i32.add
(get_local $1)
@@ -7757,9 +7759,9 @@
(if
(i32.and
(i32.ge_u
- (set_local $13
+ (tee_local $13
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $16)
(i32.const 8)
@@ -7767,7 +7769,7 @@
)
)
)
- (set_local $5
+ (tee_local $5
(i32.load
(i32.const 1224)
)
@@ -7833,7 +7835,7 @@
)
(i32.store
(i32.const 1240)
- (set_local $2
+ (tee_local $2
(i32.add
(i32.load
(i32.const 1240)
@@ -7851,7 +7853,7 @@
)
(loop $while-out$20 $while-in$21
(if
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -7912,15 +7914,15 @@
(get_local $11)
)
(i32.store
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $11)
(i32.const 32)
)
)
- (set_local $8
+ (tee_local $8
(i32.load
- (set_local $9
+ (tee_local $9
(i32.add
(get_local $0)
(i32.const 28)
@@ -7931,10 +7933,10 @@
)
(i32.store offset=4
(get_local $3)
- (set_local $10
+ (tee_local $10
(i32.sub
(i32.load
- (set_local $14
+ (tee_local $14
(i32.add
(get_local $0)
(i32.const 20)
@@ -7981,7 +7983,7 @@
(if
(i32.eq
(get_local $5)
- (set_local $6
+ (tee_local $6
(if
(i32.load
(i32.const 1160)
@@ -8078,7 +8080,7 @@
(if
(i32.gt_u
(get_local $6)
- (set_local $5
+ (tee_local $5
(i32.load offset=4
(get_local $4)
)
@@ -8087,7 +8089,7 @@
(block
(i32.store
(get_local $9)
- (set_local $7
+ (tee_local $7
(i32.load
(get_local $8)
)
@@ -8190,7 +8192,7 @@
(i32.store offset=16
(get_local $0)
(i32.add
- (set_local $5
+ (tee_local $5
(i32.load
(get_local $8)
)
@@ -8202,7 +8204,7 @@
)
(i32.store
(get_local $9)
- (set_local $8
+ (tee_local $8
(get_local $5)
)
)
@@ -8272,9 +8274,9 @@
(local $6 i32)
(local $7 i32)
(if
- (set_local $5
+ (tee_local $5
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $2)
(i32.const 16)
@@ -8317,9 +8319,9 @@
)
(block
(set_local $6
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $2)
(i32.const 20)
@@ -8391,7 +8393,7 @@
(i32.load8_s
(i32.add
(get_local $0)
- (set_local $7
+ (tee_local $7
(i32.add
(get_local $3)
(i32.const -1)
@@ -8464,10 +8466,12 @@
)
)
)
- (call $jb
- (get_local $6)
- (get_local $2)
- (get_local $0)
+ (drop
+ (call $jb
+ (get_local $6)
+ (get_local $2)
+ (get_local $0)
+ )
)
(i32.store
(get_local $5)
@@ -8498,7 +8502,7 @@
(block $label$break$a
(if
(i32.and
- (set_local $3
+ (tee_local $3
(get_local $0)
)
(i32.const 3)
@@ -8522,18 +8526,19 @@
)
)
(if
- (i32.and
- (set_local $4
- (set_local $0
- (i32.add
- (get_local $0)
- (i32.const 1)
+ (i32.eqz
+ (i32.and
+ (tee_local $4
+ (tee_local $0
+ (i32.add
+ (get_local $0)
+ (i32.const 1)
+ )
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
- (get_local $0)
(block
(set_local $2
(get_local $0)
@@ -8571,7 +8576,7 @@
(i32.and
(i32.xor
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $1)
)
@@ -8613,7 +8618,7 @@
(loop $while-out$5 $while-in$6
(if
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $2)
(i32.const 1)
@@ -8628,7 +8633,6 @@
(br $while-in$6)
)
)
- (get_local $1)
)
(set_local $5
(get_local $1)
@@ -8702,7 +8706,7 @@
(i32.const 1188)
)
(if
- (set_local $2
+ (tee_local $2
(i32.load
(i32.const 1184)
)
@@ -8755,12 +8759,13 @@
)
)
(if
- (set_local $1
- (i32.load offset=56
- (get_local $1)
+ (i32.eqz
+ (tee_local $1
+ (i32.load offset=56
+ (get_local $1)
+ )
)
)
- (get_local $2)
(block
(set_local $0
(get_local $2)
@@ -8771,7 +8776,6 @@
(br $while-in$3)
)
)
- (get_local $0)
)
(call_import $xa
(i32.const 1188)
@@ -8805,10 +8809,10 @@
)
)
(i32.store8
- (set_local $6
+ (tee_local $6
(get_local $5)
)
- (set_local $9
+ (tee_local $9
(i32.and
(get_local $1)
(i32.const 255)
@@ -8816,9 +8820,9 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.load
- (set_local $2
+ (tee_local $2
(i32.add
(get_local $0)
(i32.const 16)
@@ -8862,9 +8866,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8876,7 +8880,7 @@
)
(if
(i32.ne
- (set_local $4
+ (tee_local $4
(i32.and
(get_local $1)
(i32.const 255)
@@ -8946,7 +8950,7 @@
(if
(i32.gt_u
(i32.load
- (set_local $3
+ (tee_local $3
(i32.add
(get_local $0)
(i32.const 20)
@@ -8954,7 +8958,7 @@
)
)
(i32.load
- (set_local $4
+ (tee_local $4
(i32.add
(get_local $0)
(i32.const 28)
@@ -8963,19 +8967,21 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load offset=36
- (get_local $0)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (get_local $0)
+ )
+ (i32.const 3)
)
- (i32.const 3)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $0)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $0)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.load
@@ -9001,9 +9007,9 @@
(block
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 4)
@@ -9011,9 +9017,9 @@
)
)
)
- (set_local $6
+ (tee_local $6
(i32.load
- (set_local $5
+ (tee_local $5
(i32.add
(get_local $0)
(i32.const 8)
@@ -9234,7 +9240,7 @@
(i32.or
(i32.or
(i32.or
- (set_local $1
+ (tee_local $1
(i32.and
(get_local $1)
(i32.const 255)
@@ -9263,7 +9269,7 @@
)
)
(if
- (set_local $3
+ (tee_local $3
(i32.and
(get_local $0)
(i32.const 3)
@@ -9353,7 +9359,7 @@
(if
(i32.gt_s
(i32.load offset=76
- (set_local $1
+ (tee_local $1
(i32.load
(i32.const 1024)
)
@@ -9388,9 +9394,9 @@
)
(if
(i32.lt_u
- (set_local $2
+ (tee_local $2
(i32.load
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $1)
(i32.const 20)
@@ -9450,7 +9456,7 @@
(local $2 i32)
(set_local $2
(i32.load8_s
- (set_local $1
+ (tee_local $1
(i32.add
(get_local $0)
(i32.const 74)
@@ -9470,7 +9476,7 @@
)
(if
(i32.and
- (set_local $2
+ (tee_local $2
(i32.load
(get_local $0)
)
@@ -9498,7 +9504,7 @@
)
(i32.store offset=28
(get_local $0)
- (set_local $1
+ (tee_local $1
(i32.load offset=44
(get_local $0)
)
@@ -9532,7 +9538,7 @@
)
(if
(i32.eq
- (set_local $0
+ (tee_local $0
(if
(i32.gt_s
(i32.load offset=76
@@ -9601,7 +9607,7 @@
)
)
(i32.store
- (set_local $3
+ (tee_local $3
(get_local $4)
)
(i32.load offset=60
@@ -9618,7 +9624,7 @@
)
(i32.store offset=12
(get_local $3)
- (set_local $0
+ (tee_local $0
(i32.add
(get_local $4)
(i32.const 20)
@@ -9818,7 +9824,7 @@
)
)
(i32.store
- (set_local $2
+ (tee_local $2
(get_local $1)
)
(i32.load offset=60
@@ -10038,8 +10044,10 @@
(i32.const 0)
)
(func $Na (result i32)
- (call $db
- (i32.const 1144)
+ (drop
+ (call $db
+ (i32.const 1144)
+ )
)
(i32.const 0)
)
@@ -10079,7 +10087,7 @@
(func $ib (result i32)
(i32.const 0)
)
- (func $__growWasmMemory (param $newSize i32)
+ (func $__growWasmMemory (param $newSize i32) (result i32)
(grow_memory
(get_local $newSize)
)
diff --git a/test/memorygrowth.fromasm.imprecise.no-opts b/test/memorygrowth.fromasm.imprecise.no-opts
index ddd73a5f8..3dcf5fc53 100644
--- a/test/memorygrowth.fromasm.imprecise.no-opts
+++ b/test/memorygrowth.fromasm.imprecise.no-opts
@@ -244,7 +244,7 @@
(get_local $m)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(i32.eq
(get_local $i)
@@ -295,7 +295,7 @@
(get_local $j)
(get_local $n)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $qa)
)
@@ -519,7 +519,7 @@
(get_local $o)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(i32.eq
(get_local $s)
@@ -580,7 +580,7 @@
(i32.const 1216)
)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $qa)
)
@@ -912,7 +912,7 @@
(set_local $s
(get_local $j)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $j
(i32.load
(i32.add
@@ -945,7 +945,7 @@
(set_local $A
(get_local $s)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $B
(get_local $f)
@@ -993,7 +993,7 @@
(get_local $s)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $s
(i32.load
@@ -1036,7 +1036,7 @@
)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
(get_local $o)
@@ -1078,7 +1078,7 @@
(set_local $C
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $D
@@ -1099,7 +1099,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $q
(i32.add
(get_local $D)
@@ -1120,7 +1120,7 @@
(set_local $E
(get_local $q)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $q
@@ -1145,7 +1145,7 @@
(set_local $G
(get_local $E)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $D
@@ -1156,7 +1156,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -1172,7 +1172,7 @@
(set_local $C
(get_local $F)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -1232,14 +1232,14 @@
(set_local $C
(get_local $o)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $qa)
)
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $e)
(block
@@ -1292,7 +1292,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1335,7 +1335,7 @@
(i32.eqz
(get_local $C)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1366,7 +1366,7 @@
)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(get_local $s)
(if
@@ -1390,7 +1390,7 @@
)
(get_local $C)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -1428,7 +1428,7 @@
)
(get_local $C)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1874,7 +1874,7 @@
(set_local $i
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $m
(i32.and
(i32.load
@@ -1997,7 +1997,7 @@
(set_local $N
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $u
@@ -2023,7 +2023,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -2224,7 +2224,7 @@
(get_local $N)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $N
(i32.const 0)
)
@@ -2285,7 +2285,7 @@
(set_local $N
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $P
@@ -2307,7 +2307,7 @@
(set_local $V
(get_local $i)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $O
@@ -2321,7 +2321,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2383,7 +2383,7 @@
)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
(get_local $s)
@@ -2425,7 +2425,7 @@
(set_local $W
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $X
@@ -2446,7 +2446,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $d
(i32.add
(get_local $X)
@@ -2467,7 +2467,7 @@
(set_local $Y
(get_local $d)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $d
@@ -2492,7 +2492,7 @@
(set_local $_
(get_local $Y)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $X
@@ -2503,7 +2503,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2519,7 +2519,7 @@
(set_local $W
(get_local $Z)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -2579,14 +2579,14 @@
(set_local $W
(get_local $s)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $qa)
)
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $g)
(block
@@ -2639,7 +2639,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2682,7 +2682,7 @@
(i32.eqz
(get_local $W)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2713,7 +2713,7 @@
)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(get_local $q)
(if
@@ -2737,7 +2737,7 @@
)
(get_local $W)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -2775,14 +2775,14 @@
)
(get_local $W)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $U)
@@ -2968,7 +2968,7 @@
)
(get_local $g)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $g
@@ -3167,7 +3167,7 @@
)
(get_local $i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $q
@@ -3194,7 +3194,7 @@
(get_local $t)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -3215,7 +3215,7 @@
(set_local $N
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $t
@@ -3252,7 +3252,7 @@
(set_local $N
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $q
@@ -3266,7 +3266,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -3307,7 +3307,7 @@
)
(get_local $i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(if
@@ -3376,7 +3376,7 @@
)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $qa)
)
@@ -4123,8 +4123,10 @@
(i32.const -1)
)
(block
- (call_import $ta
- (get_local $$)
+ (drop
+ (call_import $ta
+ (get_local $$)
+ )
)
(br $label$break$d)
)
@@ -4344,7 +4346,7 @@
(set_local $ma
(i32.const 0)
)
- (loop $do-out$44 $do-in$45
+ (loop $do-out$75 $do-in$76
(set_local $c
(i32.add
(i32.const 1248)
@@ -4377,7 +4379,7 @@
(i32.const 1)
)
)
- (br_if $do-in$45
+ (br_if $do-in$76
(i32.ne
(get_local $ma)
(i32.const 32)
@@ -4463,7 +4465,7 @@
(set_local $ka
(i32.const 1656)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$44 $do-in$45
(set_local $ma
(i32.load
(get_local $ka)
@@ -4504,7 +4506,7 @@
(set_local $N
(i32.const 201)
)
- (br $do-out$46)
+ (br $do-out$44)
)
)
(set_local $ka
@@ -4515,7 +4517,7 @@
)
)
)
- (br_if $do-in$47
+ (br_if $do-in$45
(i32.ne
(get_local $ka)
(i32.const 0)
@@ -4671,7 +4673,7 @@
(set_local $ka
(i32.const 1656)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(i32.load
@@ -4689,7 +4691,7 @@
(set_local $N
(i32.const 209)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(set_local $ka
@@ -4708,10 +4710,10 @@
(set_local $wa
(i32.const 1656)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -4831,7 +4833,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$48
(if
(i32.eq
(get_local $ma)
@@ -4907,7 +4909,7 @@
)
(get_local $la)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $la
@@ -4974,7 +4976,7 @@
)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.ne
(get_local $da)
@@ -4998,7 +5000,7 @@
)
(get_local $ma)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(call_import $qa)
)
@@ -5028,7 +5030,7 @@
(br $label$break$e)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eq
(get_local $V)
@@ -5065,7 +5067,7 @@
(set_local $xa
(get_local $e)
)
- (br $do-once$55)
+ (br $do-once$61)
)
)
(call_import $qa)
@@ -5101,7 +5103,7 @@
)
)
)
- (block $do-once$57
+ (block $do-once$51
(if
(i32.eq
(get_local $e)
@@ -5143,7 +5145,7 @@
(set_local $ya
(i32.const 0)
)
- (br $do-once$57)
+ (br $do-once$51)
)
(block
(set_local $za
@@ -5164,7 +5166,7 @@
)
)
)
- (loop $while-out$59 $while-in$60
+ (loop $while-out$53 $while-in$54
(set_local $aa
(i32.add
(get_local $za)
@@ -5185,7 +5187,7 @@
(set_local $Aa
(get_local $aa)
)
- (br $while-in$60)
+ (br $while-in$54)
)
)
(set_local $aa
@@ -5210,7 +5212,7 @@
(set_local $Ca
(get_local $Aa)
)
- (br $while-out$59)
+ (br $while-out$53)
)
(block
(set_local $za
@@ -5221,7 +5223,7 @@
)
)
)
- (br $while-in$60)
+ (br $while-in$54)
)
(if
(i32.lt_u
@@ -5237,7 +5239,7 @@
(set_local $ya
(get_local $Ba)
)
- (br $do-once$57)
+ (br $do-once$51)
)
)
)
@@ -5297,7 +5299,7 @@
(set_local $ya
(get_local $e)
)
- (br $do-once$57)
+ (br $do-once$51)
)
(call_import $qa)
)
@@ -5327,7 +5329,7 @@
)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.eq
(get_local $ma)
@@ -5342,7 +5344,7 @@
)
(if
(get_local $ya)
- (br $do-once$61)
+ (br $do-once$55)
)
(i32.store
(i32.const 1212)
@@ -5435,7 +5437,7 @@
(get_local $da)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(get_local $V)
(if
@@ -5459,7 +5461,7 @@
)
(get_local $ya)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
)
@@ -5596,7 +5598,7 @@
(get_local $fa)
)
)
- (block $do-once$65
+ (block $do-once$63
(if
(i32.eqz
(i32.and
@@ -5648,7 +5650,7 @@
(set_local $Ga
(get_local $$)
)
- (br $do-once$65)
+ (br $do-once$63)
)
)
(call_import $qa)
@@ -5680,7 +5682,7 @@
)
(get_local $la)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $e
@@ -5689,7 +5691,7 @@
(i32.const 8)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(i32.eqz
(get_local $e)
@@ -5707,7 +5709,7 @@
(set_local $Ha
(i32.const 31)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(set_local $V
@@ -5884,7 +5886,7 @@
)
(get_local $ka)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $aa
@@ -5911,7 +5913,7 @@
(get_local $e)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$67 $while-in$68
(if
(i32.eq
(i32.and
@@ -5932,7 +5934,7 @@
(set_local $N
(i32.const 279)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
(set_local $e
@@ -5969,7 +5971,7 @@
(set_local $N
(i32.const 276)
)
- (br $while-out$69)
+ (br $while-out$67)
)
(block
(set_local $aa
@@ -5983,7 +5985,7 @@
)
)
)
- (br $while-in$70)
+ (br $while-in$68)
)
(if
(i32.eq
@@ -6024,7 +6026,7 @@
)
(get_local $ka)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(if
@@ -6093,7 +6095,7 @@
)
(i32.const 0)
)
- (br $do-once$50)
+ (br $do-once$48)
)
(call_import $qa)
)
@@ -6122,7 +6124,7 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(set_local $ka
(i32.load
(get_local $wa)
@@ -6154,7 +6156,7 @@
(set_local $La
(get_local $ea)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
)
@@ -6167,7 +6169,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(set_local $ca
(i32.add
@@ -6364,7 +6366,7 @@
(i32.const 24)
)
)
- (loop $do-out$73 $do-in$74
+ (loop $do-out$71 $do-in$72
(set_local $ka
(i32.add
(get_local $ka)
@@ -6375,7 +6377,7 @@
(get_local $ka)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$72
(i32.lt_u
(i32.add
(get_local $ka)
@@ -6756,7 +6758,7 @@
(get_local $e)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(if
(i32.eq
(i32.and
@@ -6777,7 +6779,7 @@
(set_local $N
(i32.const 305)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
(set_local $e
@@ -6814,7 +6816,7 @@
(set_local $N
(i32.const 302)
)
- (br $while-out$75)
+ (br $while-out$73)
)
(block
(set_local $ma
@@ -6828,7 +6830,7 @@
)
)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.eq
@@ -9932,10 +9934,12 @@
)
)
)
- (call $jb
- (get_local $n)
- (get_local $m)
- (get_local $l)
+ (drop
+ (call $jb
+ (get_local $n)
+ (get_local $m)
+ (get_local $l)
+ )
)
(i32.store
(get_local $e)
@@ -10557,22 +10561,24 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load
- (i32.add
- (get_local $a)
- (i32.const 36)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load
+ (i32.add
+ (get_local $a)
+ (i32.const 36)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $a)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $a)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.eqz
@@ -11914,8 +11920,10 @@
)
)
(func $Na (result i32)
- (call $db
- (i32.const 1144)
+ (drop
+ (call $db
+ (i32.const 1144)
+ )
)
(return
(i32.const 0)
@@ -11965,7 +11973,7 @@
(i32.const 0)
)
)
- (func $__growWasmMemory (param $newSize i32)
+ (func $__growWasmMemory (param $newSize i32) (result i32)
(grow_memory
(get_local $newSize)
)
diff --git a/test/memorygrowth.fromasm.no-opts b/test/memorygrowth.fromasm.no-opts
index c0a7307c5..0f4b278c2 100644
--- a/test/memorygrowth.fromasm.no-opts
+++ b/test/memorygrowth.fromasm.no-opts
@@ -245,7 +245,7 @@
(get_local $m)
)
)
- (block $do-once$2
+ (block $do-once$19
(if
(i32.eq
(get_local $i)
@@ -296,7 +296,7 @@
(get_local $j)
(get_local $n)
)
- (br $do-once$2)
+ (br $do-once$19)
)
(call_import $qa)
)
@@ -520,7 +520,7 @@
(get_local $o)
)
)
- (block $do-once$4
+ (block $do-once$21
(if
(i32.eq
(get_local $s)
@@ -581,7 +581,7 @@
(i32.const 1216)
)
)
- (br $do-once$4)
+ (br $do-once$21)
)
(call_import $qa)
)
@@ -913,7 +913,7 @@
(set_local $s
(get_local $j)
)
- (loop $while-out$6 $while-in$7
+ (loop $while-out$23 $while-in$24
(set_local $j
(i32.load
(i32.add
@@ -946,7 +946,7 @@
(set_local $A
(get_local $s)
)
- (br $while-out$6)
+ (br $while-out$23)
)
(set_local $B
(get_local $f)
@@ -994,7 +994,7 @@
(get_local $s)
)
)
- (br $while-in$7)
+ (br $while-in$24)
)
(set_local $s
(i32.load
@@ -1037,7 +1037,7 @@
)
)
)
- (block $do-once$8
+ (block $do-once$25
(if
(i32.eq
(get_local $o)
@@ -1079,7 +1079,7 @@
(set_local $C
(i32.const 0)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(block
(set_local $D
@@ -1100,7 +1100,7 @@
)
)
)
- (loop $while-out$10 $while-in$11
+ (loop $while-out$27 $while-in$28
(set_local $q
(i32.add
(get_local $D)
@@ -1121,7 +1121,7 @@
(set_local $E
(get_local $q)
)
- (br $while-in$11)
+ (br $while-in$28)
)
)
(set_local $q
@@ -1146,7 +1146,7 @@
(set_local $G
(get_local $E)
)
- (br $while-out$10)
+ (br $while-out$27)
)
(block
(set_local $D
@@ -1157,7 +1157,7 @@
)
)
)
- (br $while-in$11)
+ (br $while-in$28)
)
(if
(i32.lt_u
@@ -1173,7 +1173,7 @@
(set_local $C
(get_local $F)
)
- (br $do-once$8)
+ (br $do-once$25)
)
)
)
@@ -1233,14 +1233,14 @@
(set_local $C
(get_local $o)
)
- (br $do-once$8)
+ (br $do-once$25)
)
(call_import $qa)
)
)
)
)
- (block $do-once$12
+ (block $do-once$29
(if
(get_local $e)
(block
@@ -1293,7 +1293,7 @@
)
)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1336,7 +1336,7 @@
(i32.eqz
(get_local $C)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1367,7 +1367,7 @@
)
)
)
- (block $do-once$14
+ (block $do-once$31
(if
(get_local $s)
(if
@@ -1391,7 +1391,7 @@
)
(get_local $C)
)
- (br $do-once$14)
+ (br $do-once$31)
)
)
)
@@ -1429,7 +1429,7 @@
)
(get_local $C)
)
- (br $do-once$12)
+ (br $do-once$29)
)
)
)
@@ -1875,7 +1875,7 @@
(set_local $i
(i32.const 0)
)
- (loop $while-out$17 $while-in$18
+ (loop $while-out$3 $while-in$4
(set_local $m
(i32.and
(i32.load
@@ -1998,7 +1998,7 @@
(set_local $N
(i32.const 86)
)
- (br $while-out$17)
+ (br $while-out$3)
)
(block
(set_local $u
@@ -2024,7 +2024,7 @@
)
)
)
- (br $while-in$18)
+ (br $while-in$4)
)
)
)
@@ -2225,7 +2225,7 @@
(get_local $N)
(i32.const 90)
)
- (loop $while-out$19 $while-in$20
+ (loop $while-out$5 $while-in$6
(set_local $N
(i32.const 0)
)
@@ -2286,7 +2286,7 @@
(set_local $N
(i32.const 90)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(set_local $P
@@ -2308,7 +2308,7 @@
(set_local $V
(get_local $i)
)
- (br $while-out$19)
+ (br $while-out$5)
)
(block
(set_local $O
@@ -2322,7 +2322,7 @@
)
)
)
- (br $while-in$20)
+ (br $while-in$6)
)
)
(if
@@ -2384,7 +2384,7 @@
)
)
)
- (block $do-once$21
+ (block $do-once$7
(if
(i32.eq
(get_local $s)
@@ -2426,7 +2426,7 @@
(set_local $W
(i32.const 0)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(block
(set_local $X
@@ -2447,7 +2447,7 @@
)
)
)
- (loop $while-out$23 $while-in$24
+ (loop $while-out$9 $while-in$10
(set_local $d
(i32.add
(get_local $X)
@@ -2468,7 +2468,7 @@
(set_local $Y
(get_local $d)
)
- (br $while-in$24)
+ (br $while-in$10)
)
)
(set_local $d
@@ -2493,7 +2493,7 @@
(set_local $_
(get_local $Y)
)
- (br $while-out$23)
+ (br $while-out$9)
)
(block
(set_local $X
@@ -2504,7 +2504,7 @@
)
)
)
- (br $while-in$24)
+ (br $while-in$10)
)
(if
(i32.lt_u
@@ -2520,7 +2520,7 @@
(set_local $W
(get_local $Z)
)
- (br $do-once$21)
+ (br $do-once$7)
)
)
)
@@ -2580,14 +2580,14 @@
(set_local $W
(get_local $s)
)
- (br $do-once$21)
+ (br $do-once$7)
)
(call_import $qa)
)
)
)
)
- (block $do-once$25
+ (block $do-once$11
(if
(get_local $g)
(block
@@ -2640,7 +2640,7 @@
)
)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2683,7 +2683,7 @@
(i32.eqz
(get_local $W)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
@@ -2714,7 +2714,7 @@
)
)
)
- (block $do-once$27
+ (block $do-once$13
(if
(get_local $q)
(if
@@ -2738,7 +2738,7 @@
)
(get_local $W)
)
- (br $do-once$27)
+ (br $do-once$13)
)
)
)
@@ -2776,14 +2776,14 @@
)
(get_local $W)
)
- (br $do-once$25)
+ (br $do-once$11)
)
)
)
)
)
)
- (block $do-once$29
+ (block $do-once$15
(if
(i32.lt_u
(get_local $U)
@@ -2969,7 +2969,7 @@
)
(get_local $g)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $g
@@ -3168,7 +3168,7 @@
)
(get_local $i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(set_local $q
@@ -3195,7 +3195,7 @@
(get_local $t)
)
)
- (loop $while-out$31 $while-in$32
+ (loop $while-out$17 $while-in$18
(if
(i32.eq
(i32.and
@@ -3216,7 +3216,7 @@
(set_local $N
(i32.const 148)
)
- (br $while-out$31)
+ (br $while-out$17)
)
)
(set_local $t
@@ -3253,7 +3253,7 @@
(set_local $N
(i32.const 145)
)
- (br $while-out$31)
+ (br $while-out$17)
)
(block
(set_local $q
@@ -3267,7 +3267,7 @@
)
)
)
- (br $while-in$32)
+ (br $while-in$18)
)
(if
(i32.eq
@@ -3308,7 +3308,7 @@
)
(get_local $i)
)
- (br $do-once$29)
+ (br $do-once$15)
)
)
(if
@@ -3377,7 +3377,7 @@
)
(i32.const 0)
)
- (br $do-once$29)
+ (br $do-once$15)
)
(call_import $qa)
)
@@ -4124,8 +4124,10 @@
(i32.const -1)
)
(block
- (call_import $ta
- (get_local $$)
+ (drop
+ (call_import $ta
+ (get_local $$)
+ )
)
(br $label$break$d)
)
@@ -4345,7 +4347,7 @@
(set_local $ma
(i32.const 0)
)
- (loop $do-out$44 $do-in$45
+ (loop $do-out$75 $do-in$76
(set_local $c
(i32.add
(i32.const 1248)
@@ -4378,7 +4380,7 @@
(i32.const 1)
)
)
- (br_if $do-in$45
+ (br_if $do-in$76
(i32.ne
(get_local $ma)
(i32.const 32)
@@ -4464,7 +4466,7 @@
(set_local $ka
(i32.const 1656)
)
- (loop $do-out$46 $do-in$47
+ (loop $do-out$44 $do-in$45
(set_local $ma
(i32.load
(get_local $ka)
@@ -4505,7 +4507,7 @@
(set_local $N
(i32.const 201)
)
- (br $do-out$46)
+ (br $do-out$44)
)
)
(set_local $ka
@@ -4516,7 +4518,7 @@
)
)
)
- (br_if $do-in$47
+ (br_if $do-in$45
(i32.ne
(get_local $ka)
(i32.const 0)
@@ -4672,7 +4674,7 @@
(set_local $ka
(i32.const 1656)
)
- (loop $while-out$48 $while-in$49
+ (loop $while-out$46 $while-in$47
(if
(i32.eq
(i32.load
@@ -4690,7 +4692,7 @@
(set_local $N
(i32.const 209)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
(set_local $ka
@@ -4709,10 +4711,10 @@
(set_local $wa
(i32.const 1656)
)
- (br $while-out$48)
+ (br $while-out$46)
)
)
- (br $while-in$49)
+ (br $while-in$47)
)
(if
(i32.eq
@@ -4832,7 +4834,7 @@
(i32.const 3)
)
)
- (block $do-once$50
+ (block $do-once$48
(if
(i32.eq
(get_local $ma)
@@ -4908,7 +4910,7 @@
)
(get_local $la)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $la
@@ -4975,7 +4977,7 @@
)
)
)
- (block $do-once$53
+ (block $do-once$59
(if
(i32.ne
(get_local $da)
@@ -4999,7 +5001,7 @@
)
(get_local $ma)
)
- (br $do-once$53)
+ (br $do-once$59)
)
(call_import $qa)
)
@@ -5029,7 +5031,7 @@
(br $label$break$e)
)
)
- (block $do-once$55
+ (block $do-once$61
(if
(i32.eq
(get_local $V)
@@ -5066,7 +5068,7 @@
(set_local $xa
(get_local $e)
)
- (br $do-once$55)
+ (br $do-once$61)
)
)
(call_import $qa)
@@ -5102,7 +5104,7 @@
)
)
)
- (block $do-once$57
+ (block $do-once$51
(if
(i32.eq
(get_local $e)
@@ -5144,7 +5146,7 @@
(set_local $ya
(i32.const 0)
)
- (br $do-once$57)
+ (br $do-once$51)
)
(block
(set_local $za
@@ -5165,7 +5167,7 @@
)
)
)
- (loop $while-out$59 $while-in$60
+ (loop $while-out$53 $while-in$54
(set_local $aa
(i32.add
(get_local $za)
@@ -5186,7 +5188,7 @@
(set_local $Aa
(get_local $aa)
)
- (br $while-in$60)
+ (br $while-in$54)
)
)
(set_local $aa
@@ -5211,7 +5213,7 @@
(set_local $Ca
(get_local $Aa)
)
- (br $while-out$59)
+ (br $while-out$53)
)
(block
(set_local $za
@@ -5222,7 +5224,7 @@
)
)
)
- (br $while-in$60)
+ (br $while-in$54)
)
(if
(i32.lt_u
@@ -5238,7 +5240,7 @@
(set_local $ya
(get_local $Ba)
)
- (br $do-once$57)
+ (br $do-once$51)
)
)
)
@@ -5298,7 +5300,7 @@
(set_local $ya
(get_local $e)
)
- (br $do-once$57)
+ (br $do-once$51)
)
(call_import $qa)
)
@@ -5328,7 +5330,7 @@
)
)
)
- (block $do-once$61
+ (block $do-once$55
(if
(i32.eq
(get_local $ma)
@@ -5343,7 +5345,7 @@
)
(if
(get_local $ya)
- (br $do-once$61)
+ (br $do-once$55)
)
(i32.store
(i32.const 1212)
@@ -5436,7 +5438,7 @@
(get_local $da)
)
)
- (block $do-once$63
+ (block $do-once$57
(if
(get_local $V)
(if
@@ -5460,7 +5462,7 @@
)
(get_local $ya)
)
- (br $do-once$63)
+ (br $do-once$57)
)
)
)
@@ -5597,7 +5599,7 @@
(get_local $fa)
)
)
- (block $do-once$65
+ (block $do-once$63
(if
(i32.eqz
(i32.and
@@ -5649,7 +5651,7 @@
(set_local $Ga
(get_local $$)
)
- (br $do-once$65)
+ (br $do-once$63)
)
)
(call_import $qa)
@@ -5681,7 +5683,7 @@
)
(get_local $la)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $e
@@ -5690,7 +5692,7 @@
(i32.const 8)
)
)
- (block $do-once$67
+ (block $do-once$65
(if
(i32.eqz
(get_local $e)
@@ -5708,7 +5710,7 @@
(set_local $Ha
(i32.const 31)
)
- (br $do-once$67)
+ (br $do-once$65)
)
)
(set_local $V
@@ -5885,7 +5887,7 @@
)
(get_local $ka)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(set_local $aa
@@ -5912,7 +5914,7 @@
(get_local $e)
)
)
- (loop $while-out$69 $while-in$70
+ (loop $while-out$67 $while-in$68
(if
(i32.eq
(i32.and
@@ -5933,7 +5935,7 @@
(set_local $N
(i32.const 279)
)
- (br $while-out$69)
+ (br $while-out$67)
)
)
(set_local $e
@@ -5970,7 +5972,7 @@
(set_local $N
(i32.const 276)
)
- (br $while-out$69)
+ (br $while-out$67)
)
(block
(set_local $aa
@@ -5984,7 +5986,7 @@
)
)
)
- (br $while-in$70)
+ (br $while-in$68)
)
(if
(i32.eq
@@ -6025,7 +6027,7 @@
)
(get_local $ka)
)
- (br $do-once$50)
+ (br $do-once$48)
)
)
(if
@@ -6094,7 +6096,7 @@
)
(i32.const 0)
)
- (br $do-once$50)
+ (br $do-once$48)
)
(call_import $qa)
)
@@ -6123,7 +6125,7 @@
)
)
)
- (loop $while-out$71 $while-in$72
+ (loop $while-out$69 $while-in$70
(set_local $ka
(i32.load
(get_local $wa)
@@ -6155,7 +6157,7 @@
(set_local $La
(get_local $ea)
)
- (br $while-out$71)
+ (br $while-out$69)
)
)
)
@@ -6168,7 +6170,7 @@
)
)
)
- (br $while-in$72)
+ (br $while-in$70)
)
(set_local $ca
(i32.add
@@ -6365,7 +6367,7 @@
(i32.const 24)
)
)
- (loop $do-out$73 $do-in$74
+ (loop $do-out$71 $do-in$72
(set_local $ka
(i32.add
(get_local $ka)
@@ -6376,7 +6378,7 @@
(get_local $ka)
(i32.const 7)
)
- (br_if $do-in$74
+ (br_if $do-in$72
(i32.lt_u
(i32.add
(get_local $ka)
@@ -6757,7 +6759,7 @@
(get_local $e)
)
)
- (loop $while-out$75 $while-in$76
+ (loop $while-out$73 $while-in$74
(if
(i32.eq
(i32.and
@@ -6778,7 +6780,7 @@
(set_local $N
(i32.const 305)
)
- (br $while-out$75)
+ (br $while-out$73)
)
)
(set_local $e
@@ -6815,7 +6817,7 @@
(set_local $N
(i32.const 302)
)
- (br $while-out$75)
+ (br $while-out$73)
)
(block
(set_local $ma
@@ -6829,7 +6831,7 @@
)
)
)
- (br $while-in$76)
+ (br $while-in$74)
)
(if
(i32.eq
@@ -9933,10 +9935,12 @@
)
)
)
- (call $jb
- (get_local $n)
- (get_local $m)
- (get_local $l)
+ (drop
+ (call $jb
+ (get_local $n)
+ (get_local $m)
+ (get_local $l)
+ )
)
(i32.store
(get_local $e)
@@ -10558,22 +10562,24 @@
)
)
(block
- (call_indirect $FUNCSIG$iiii
- (i32.add
- (i32.and
- (i32.load
- (i32.add
- (get_local $a)
- (i32.const 36)
+ (drop
+ (call_indirect $FUNCSIG$iiii
+ (i32.add
+ (i32.and
+ (i32.load
+ (i32.add
+ (get_local $a)
+ (i32.const 36)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
+ (i32.const 2)
)
- (i32.const 2)
+ (get_local $a)
+ (i32.const 0)
+ (i32.const 0)
)
- (get_local $a)
- (i32.const 0)
- (i32.const 0)
)
(if
(i32.eqz
@@ -11915,8 +11921,10 @@
)
)
(func $Na (result i32)
- (call $db
- (i32.const 1144)
+ (drop
+ (call $db
+ (i32.const 1144)
+ )
)
(return
(i32.const 0)
@@ -11966,7 +11974,7 @@
(i32.const 0)
)
)
- (func $__growWasmMemory (param $newSize i32)
+ (func $__growWasmMemory (param $newSize i32) (result i32)
(grow_memory
(get_local $newSize)
)
diff --git a/test/min.fromasm.imprecise.no-opts b/test/min.fromasm.imprecise.no-opts
index 4e90b3f34..9b9d6a353 100644
--- a/test/min.fromasm.imprecise.no-opts
+++ b/test/min.fromasm.imprecise.no-opts
@@ -31,17 +31,25 @@
)
)
(func $bitcasts (param $i i32) (param $f f32)
- (f32.reinterpret/i32
- (get_local $i)
- )
- (f64.promote/f32
- (f32.reinterpret/i32
- (get_local $i)
+ (drop
+ (block
+ (drop
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ )
+ (i32.reinterpret/f32
+ (get_local $f)
+ )
)
)
- (i32.reinterpret/f32
- (get_local $f)
- )
)
(func $ctzzzz (result i32)
(return
diff --git a/test/min.fromasm.no-opts b/test/min.fromasm.no-opts
index 4e90b3f34..9b9d6a353 100644
--- a/test/min.fromasm.no-opts
+++ b/test/min.fromasm.no-opts
@@ -31,17 +31,25 @@
)
)
(func $bitcasts (param $i i32) (param $f f32)
- (f32.reinterpret/i32
- (get_local $i)
- )
- (f64.promote/f32
- (f32.reinterpret/i32
- (get_local $i)
+ (drop
+ (block
+ (drop
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ )
+ (i32.reinterpret/f32
+ (get_local $f)
+ )
)
)
- (i32.reinterpret/f32
- (get_local $f)
- )
)
(func $ctzzzz (result i32)
(return
diff --git a/test/min.wast b/test/min.wast
index 44d848991..4702215a9 100644
--- a/test/min.wast
+++ b/test/min.wast
@@ -14,7 +14,7 @@
)
(func $neg (type $1) (param $k i32) (param $p i32) (result f32)
(local $n f32)
- (set_local $n
+ (tee_local $n
(f32.neg
(block $block0
(i32.store
diff --git a/test/min.wast.fromBinary b/test/min.wast.fromBinary
index f48fdf8ec..7750086aa 100644
--- a/test/min.wast.fromBinary
+++ b/test/min.wast.fromBinary
@@ -14,7 +14,7 @@
)
(func $neg (type $1) (param $var$0 i32) (param $var$1 i32) (result f32)
(local $var$2 f32)
- (set_local $var$2
+ (tee_local $var$2
(f32.neg
(block $label$0
(i32.store
diff --git a/test/passes/coalesce-locals-learning.txt b/test/passes/coalesce-locals-learning.txt
index 44ad12f53..6ec6f94ae 100644
--- a/test/passes/coalesce-locals-learning.txt
+++ b/test/passes/coalesce-locals-learning.txt
@@ -28,35 +28,49 @@
(set_local $1
(i32.const 0)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $almost-interfere (type $2)
(local $0 i32)
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $redundant-copy (type $2)
(local $0 i32)
(set_local $0
(i32.const 0)
)
- (get_local $0)
- (get_local $0)
+ (nop)
+ (drop
+ (get_local $0)
+ )
)
(func $ineffective-store (type $2)
(local $0 i32)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $block (type $2)
(local $0 i32)
@@ -65,7 +79,9 @@
(i32.const 0)
)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $see-both-sides (type $2)
(local $0 i32)
@@ -78,8 +94,12 @@
(i32.const 0)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $see-br-and-ignore-dead (type $2)
(local $0 i32)
@@ -88,11 +108,19 @@
)
(block $block
(br $block)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const -1)
+ )
+ )
+ (drop
(get_local $0)
- (i32.const -1)
)
- (get_local $0)
)
(func $see-block-body (type $2)
(local $0 i32)
@@ -104,30 +132,46 @@
(set_local $1
(i32.const 0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
(br $block)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $zero-init (type $2)
(local $0 i32)
(local $1 i32)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $multi (type $2)
(local $0 i32)
(local $1 i32)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-else (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(func $if-else-parallel (type $2)
@@ -138,13 +182,17 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(block $block3
(set_local $0
(i32.const 1)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
)
)
@@ -160,8 +208,12 @@
(i32.const 1)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-else-through (type $2)
(local $0 i32)
@@ -174,11 +226,19 @@
)
(if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(func $if-through (type $2)
(local $0 i32)
@@ -191,10 +251,16 @@
)
(if
(i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(func $if-through2 (type $2)
(local $0 i32)
@@ -208,8 +274,12 @@
(i32.const 1)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-through2 (type $2)
(local $0 i32)
@@ -220,8 +290,12 @@
(if
(i32.const 0)
(block $block1
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -229,12 +303,16 @@
(local $0 i32)
(local $1 i32)
(if
- (set_local $0
+ (tee_local $0
(i32.const 0)
)
(block $block1
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -247,10 +325,14 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
)
(func $if4 (type $2)
(local $0 i32)
@@ -260,13 +342,17 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 1)
)
)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $if5 (type $2)
(local $0 i32)
@@ -274,23 +360,31 @@
(if
(i32.const 0)
(block $block1
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $1
(i32.const 1)
)
)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
)
(func $loop (type $2)
(local $0 i32)
(local $1 i32)
(loop $out $in
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
(br $in)
)
)
@@ -298,33 +392,51 @@
(local $0 i32)
(block $block
(br $block)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $interfere-in-dead2 (type $2)
(local $0 i32)
(block $block
(unreachable)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $interfere-in-dead3 (type $2)
(local $0 i32)
(block $block
(return)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $params (type $3) (param $0 i32) (param $1 f32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
- (get_local $2)
- (get_local $3)
- (get_local $4)
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
)
(func $interfere-in-dead (type $2)
(local $0 i32)
@@ -333,8 +445,12 @@
(br_if $block
(i32.const 0)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(func $switch (type $2)
@@ -347,13 +463,21 @@
(br_table $switch-case$1 $switch-case$2 $switch-case$1 $switch-case$1 $switch$def
(i32.const 100)
)
+ (drop
+ (get_local $0)
+ )
+ )
+ (drop
(get_local $0)
)
- (get_local $0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
+ )
+ (drop
+ (get_local $2)
)
- (get_local $2)
)
(func $greedy-can-be-happy (type $2)
(local $0 i32)
@@ -371,8 +495,12 @@
(set_local $1
(i32.const 101)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block5
(set_local $0
@@ -381,8 +509,12 @@
(set_local $1
(i32.const 103)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(if
@@ -394,8 +526,12 @@
(set_local $1
(i32.const 105)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block10
(set_local $0
@@ -404,8 +540,12 @@
(set_local $1
(i32.const 107)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -418,8 +558,12 @@
(set_local $1
(i32.const 109)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block15
(set_local $0
@@ -428,8 +572,12 @@
(set_local $1
(i32.const 111)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -450,8 +598,12 @@
(set_local $1
(i32.const 101)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block5
(set_local $0
@@ -460,8 +612,12 @@
(set_local $1
(i32.const 103)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(if
@@ -473,8 +629,12 @@
(set_local $1
(i32.const 105)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block10
(set_local $0
@@ -483,8 +643,12 @@
(set_local $1
(i32.const 107)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -497,8 +661,12 @@
(set_local $1
(i32.const 109)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block15
(set_local $0
@@ -507,8 +675,12 @@
(set_local $1
(i32.const 111)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -520,7 +692,9 @@
(get_local $2)
(i32.const 4096)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(set_local $3
(get_local $0)
@@ -679,6 +853,8 @@
)
(nop)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
)
diff --git a/test/passes/coalesce-locals-learning.wast b/test/passes/coalesce-locals-learning.wast
index a7152d16a..1e82a73b9 100644
--- a/test/passes/coalesce-locals-learning.wast
+++ b/test/passes/coalesce-locals-learning.wast
@@ -1,288 +1,472 @@
(module
(memory 10)
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
+ (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
+ (type $2 (func))
+ (type $3 (func (param i32 f32)))
+ (type $4 (func (param i32)))
(import $_emscripten_autodebug_i32 "env" "_emscripten_autodebug_i32" (param i32 i32) (result i32))
- (table)
- (func $nothing-to-do
+ (func $nothing-to-do (type $2)
(local $x i32)
+ (nop)
)
- (func $merge
+ (func $merge (type $2)
(local $x i32)
(local $y i32)
+ (nop)
)
- (func $leave-type
+ (func $leave-type (type $2)
(local $x i32)
(local $y f32)
+ (nop)
)
- (func $leave-interfere
+ (func $leave-interfere (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 0))
- (get_local $x)
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $almost-interfere
+ (func $almost-interfere (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (get_local $x)
- (set_local $y (i32.const 0))
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $redundant-copy
+ (func $redundant-copy (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (get_local $x))
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $ineffective-store
+ (func $ineffective-store (type $2)
(local $x i32)
- (set_local $x (i32.const 0))
- (set_local $x (i32.const 0))
- (get_local $x)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
)
- (func $block
+ (func $block (type $2)
(local $x i32)
- (block
- (set_local $x (i32.const 0))
+ (block $block0
+ (set_local $x
+ (i32.const 0)
+ )
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x)
)
- (func $see-both-sides
+ (func $see-both-sides (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (block
- (set_local $y (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
+ (block $block0
+ (set_local $y
+ (i32.const 0)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $see-br-and-ignore-dead
+ (func $see-br-and-ignore-dead (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(block $block
(br $block)
- (set_local $y (i32.const 0))
- (get_local $y)
- (set_local $x (i32.const -1))
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
+ (set_local $x
+ (i32.const -1)
+ )
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x)
)
- (func $see-block-body
+ (func $see-block-body (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(block $block
- (set_local $y (i32.const 0))
- (get_local $y)
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
(br $block)
)
- (get_local $x)
+ (drop
+ (get_local $x)
+ )
)
- (func $zero-init
+ (func $zero-init (type $2)
(local $x i32)
(local $y i32)
- (get_local $x)
- (get_local $y)
- )
- (func $multi
- (local $x i32) ;; x is free, but y and z conflict
- (local $y i32)
- (local $z i32)
- (get_local $y)
- (get_local $z)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $if-else
+ (func $multi (type $2)
(local $x i32)
(local $y i32)
- (if ;; x and y conflict when they are merged into their shared predecessor
- (i32.const 0)
- (get_local $x)
+ (local $z i32)
+ (drop
(get_local $y)
)
+ (drop
+ (get_local $z)
+ )
)
- (func $if-else-parallel
+ (func $if-else (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
+ (drop
(get_local $x)
)
- (block
- (set_local $y (i32.const 1))
+ (drop
(get_local $y)
)
)
)
- (func $if-else-after
+ (func $if-else-parallel (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ )
+ (block $block3
+ (set_local $y
+ (i32.const 1)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
)
- (get_local $x)
- (get_local $y)
)
- (func $if-else-through
+ (func $if-else-after (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
(if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $if-through
+ (func $if-else-through (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
(if
(i32.const 0)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
+ (func $if-through (type $2)
+ (local $x i32)
+ (local $y i32)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
(i32.const 1)
)
- (get_local $x)
- (get_local $y)
+ (if
+ (i32.const 0)
+ (drop
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $if-through2
+ (func $if-through2 (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(if
(i32.const 0)
- (set_local $y (i32.const 1))
+ (set_local $y
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $if-through2
+ (func $if-through2 (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(if
(i32.const 0)
- (block
- (get_local $x)
- (get_local $y)
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
)
- (func $if2
+ (func $if2 (type $2)
(local $x i32)
(local $y i32)
(if
- (set_local $x (i32.const 0))
- (block
- (get_local $x)
- (get_local $y)
+ (tee_local $x
+ (i32.const 0)
+ )
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
)
- (func $if3
+ (func $if3 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
- (get_local $x)
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $if4
+ (func $if4 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
- (get_local $x)
- (set_local $y (i32.const 1)) ;; we might not go through here, but it's ok
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $if5
+ (func $if5 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (get_local $x) ;; we might go through here, and it causes interference
- (set_local $y (i32.const 1))
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $loop
+ (func $loop (type $2)
(local $x i32)
(local $y i32)
(loop $out $in
- (get_local $x)
- (set_local $x (i32.const 0)) ;; effective, due to looping
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
(br $in)
)
)
- (func $interfere-in-dead
+ (func $interfere-in-dead (type $2)
(local $x i32)
(local $y i32)
(block $block
(br $block)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $interfere-in-dead2
+ (func $interfere-in-dead2 (type $2)
(local $x i32)
(local $y i32)
(block $block
(unreachable)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $interfere-in-dead3
+ (func $interfere-in-dead3 (type $2)
(local $x i32)
(local $y i32)
(block $block
(return)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $params (param $p i32) (param $q f32)
- (local $x i32) ;; x is free, but others conflict
+ (func $params (type $3) (param $p i32) (param $q f32)
+ (local $x i32)
(local $y i32)
(local $z i32)
(local $w i32)
- (get_local $y)
- (get_local $z)
- (get_local $w)
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (get_local $z)
+ )
+ (drop
+ (get_local $w)
+ )
)
- (func $interfere-in-dead
+ (func $interfere-in-dead (type $2)
(local $x i32)
(local $y i32)
(block $block
- (br_if $block (i32.const 0))
- (get_local $x)
- (get_local $y)
+ (br_if $block
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $switch
+ (func $switch (type $2)
(local $x i32)
(local $y i32)
(local $z i32)
@@ -293,15 +477,23 @@
(br_table $switch-case$1 $switch-case$2 $switch-case$1 $switch-case$1 $switch$def
(i32.const 100)
)
- (get_local $x) ;; unreachable
+ (drop
+ (get_local $x)
+ )
+ )
+ (drop
+ (get_local $y)
)
- (get_local $y)
)
- (get_local $z)
+ (drop
+ (get_local $z)
+ )
+ )
+ (drop
+ (get_local $w)
)
- (get_local $w)
)
- (func $greedy-can-be-happy
+ (func $greedy-can-be-happy (type $2)
(local $x1 i32)
(local $x2 i32)
(local $x3 i32)
@@ -314,53 +506,101 @@
(i32.const 1)
(if
(i32.const 2)
- (block
- (set_local $x1 (i32.const 100))
- (set_local $y2 (i32.const 101))
- (get_local $x1)
- (get_local $y2)
+ (block $block3
+ (set_local $x1
+ (i32.const 100)
+ )
+ (set_local $y2
+ (i32.const 101)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y2)
+ )
)
- (block
- (set_local $x1 (i32.const 102))
- (set_local $y3 (i32.const 103))
- (get_local $x1)
- (get_local $y3)
+ (block $block5
+ (set_local $x1
+ (i32.const 102)
+ )
+ (set_local $y3
+ (i32.const 103)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
(if
(i32.const 3)
- (block
- (set_local $x2 (i32.const 104))
- (set_local $y1 (i32.const 105))
- (get_local $x2)
- (get_local $y1)
+ (block $block8
+ (set_local $x2
+ (i32.const 104)
+ )
+ (set_local $y1
+ (i32.const 105)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x2 (i32.const 106))
- (set_local $y3 (i32.const 107))
- (get_local $x2)
- (get_local $y3)
+ (block $block10
+ (set_local $x2
+ (i32.const 106)
+ )
+ (set_local $y3
+ (i32.const 107)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
)
(if
(i32.const 4)
- (block
- (set_local $x3 (i32.const 108))
- (set_local $y1 (i32.const 109))
- (get_local $x3)
- (get_local $y1)
+ (block $block13
+ (set_local $x3
+ (i32.const 108)
+ )
+ (set_local $y1
+ (i32.const 109)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x3 (i32.const 110))
- (set_local $y2 (i32.const 111))
- (get_local $x3)
- (get_local $y2)
+ (block $block15
+ (set_local $x3
+ (i32.const 110)
+ )
+ (set_local $y2
+ (i32.const 111)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y2)
+ )
)
)
)
)
- (func $greedy-can-be-sad
+ (func $greedy-can-be-sad (type $2)
(local $x1 i32)
(local $y1 i32)
(local $x2 i32)
@@ -373,63 +613,110 @@
(i32.const 1)
(if
(i32.const 2)
- (block
- (set_local $x1 (i32.const 100))
- (set_local $y2 (i32.const 101))
- (get_local $x1)
- (get_local $y2)
+ (block $block3
+ (set_local $x1
+ (i32.const 100)
+ )
+ (set_local $y2
+ (i32.const 101)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y2)
+ )
)
- (block
- (set_local $x1 (i32.const 102))
- (set_local $y3 (i32.const 103))
- (get_local $x1)
- (get_local $y3)
+ (block $block5
+ (set_local $x1
+ (i32.const 102)
+ )
+ (set_local $y3
+ (i32.const 103)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
(if
(i32.const 3)
- (block
- (set_local $x2 (i32.const 104))
- (set_local $y1 (i32.const 105))
- (get_local $x2)
- (get_local $y1)
+ (block $block8
+ (set_local $x2
+ (i32.const 104)
+ )
+ (set_local $y1
+ (i32.const 105)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x2 (i32.const 106))
- (set_local $y3 (i32.const 107))
- (get_local $x2)
- (get_local $y3)
+ (block $block10
+ (set_local $x2
+ (i32.const 106)
+ )
+ (set_local $y3
+ (i32.const 107)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
)
(if
(i32.const 4)
- (block
- (set_local $x3 (i32.const 108))
- (set_local $y1 (i32.const 109))
- (get_local $x3)
- (get_local $y1)
+ (block $block13
+ (set_local $x3
+ (i32.const 108)
+ )
+ (set_local $y1
+ (i32.const 109)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x3 (i32.const 110))
- (set_local $y2 (i32.const 111))
- (get_local $x3)
- (get_local $y2)
+ (block $block15
+ (set_local $x3
+ (i32.const 110)
+ )
+ (set_local $y2
+ (i32.const 111)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y2)
+ )
)
)
)
)
- (func $_memcpy (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
+ (func $_memcpy (type $FUNCSIG$iiii) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
(local $i4 i32)
(if
(i32.ge_s
(get_local $i3)
(i32.const 4096)
)
- (get_local $i1)
- (get_local $i2)
- (get_local $i3)
- (return)
+ (drop
+ (get_local $i1)
+ )
)
(set_local $i4
(get_local $i1)
@@ -445,7 +732,7 @@
(i32.const 3)
)
)
- (block
+ (block $block2
(loop $while-out$0 $while-in$1
(if
(i32.eqz
@@ -456,7 +743,7 @@
)
(br $while-out$0)
)
- (block
+ (block $block4
(if
(i32.eqz
(get_local $i3)
@@ -502,7 +789,7 @@
)
(br $while-out$2)
)
- (block
+ (block $block7
(i32.store
(get_local $i1)
(i32.load
@@ -542,7 +829,7 @@
)
(br $while-out$4)
)
- (block
+ (block $block9
(i32.store8
(get_local $i1)
(i32.load8_s
@@ -574,21 +861,22 @@
(get_local $i4)
)
)
- (func $this-is-effective-i-tell-you (param $x i32)
+ (func $this-is-effective-i-tell-you (type $4) (param $x i32)
(if
(i32.const -1)
- (block
- (if ;; this is important for the bug
+ (block $block1
+ (if
(i32.const 0)
(nop)
)
- (set_local $x ;; this set is effective!
+ (set_local $x
(i32.const 1)
)
)
- (nop) ;; this is enough for the bug
+ (nop)
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x) ;; this ends up with the wrong value in the test
)
)
-
diff --git a/test/passes/coalesce-locals.txt b/test/passes/coalesce-locals.txt
index c24cf34e9..b8d97b921 100644
--- a/test/passes/coalesce-locals.txt
+++ b/test/passes/coalesce-locals.txt
@@ -28,35 +28,49 @@
(set_local $1
(i32.const 0)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $almost-interfere (type $2)
(local $0 i32)
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $redundant-copy (type $2)
(local $0 i32)
(set_local $0
(i32.const 0)
)
- (get_local $0)
- (get_local $0)
+ (nop)
+ (drop
+ (get_local $0)
+ )
)
(func $ineffective-store (type $2)
(local $0 i32)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $block (type $2)
(local $0 i32)
@@ -65,7 +79,9 @@
(i32.const 0)
)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $see-both-sides (type $2)
(local $0 i32)
@@ -78,8 +94,12 @@
(i32.const 0)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $see-br-and-ignore-dead (type $2)
(local $0 i32)
@@ -88,11 +108,19 @@
)
(block $block
(br $block)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (i32.const -1)
+ )
+ )
+ (drop
(get_local $0)
- (i32.const -1)
)
- (get_local $0)
)
(func $see-block-body (type $2)
(local $0 i32)
@@ -104,30 +132,46 @@
(set_local $1
(i32.const 0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
(br $block)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $zero-init (type $2)
(local $0 i32)
(local $1 i32)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $multi (type $2)
(local $0 i32)
(local $1 i32)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-else (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(func $if-else-parallel (type $2)
@@ -138,13 +182,17 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(block $block3
(set_local $0
(i32.const 1)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
)
)
@@ -160,8 +208,12 @@
(i32.const 1)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-else-through (type $2)
(local $0 i32)
@@ -174,11 +226,19 @@
)
(if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(func $if-through (type $2)
(local $0 i32)
@@ -191,10 +251,16 @@
)
(if
(i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
)
- (get_local $0)
- (get_local $1)
)
(func $if-through2 (type $2)
(local $0 i32)
@@ -208,8 +274,12 @@
(i32.const 1)
)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $if-through2 (type $2)
(local $0 i32)
@@ -220,8 +290,12 @@
(if
(i32.const 0)
(block $block1
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -229,12 +303,16 @@
(local $0 i32)
(local $1 i32)
(if
- (set_local $0
+ (tee_local $0
(i32.const 0)
)
(block $block1
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -247,10 +325,14 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
)
(func $if4 (type $2)
(local $0 i32)
@@ -260,13 +342,17 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 1)
)
)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $if5 (type $2)
(local $0 i32)
@@ -274,23 +360,31 @@
(if
(i32.const 0)
(block $block1
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $1
(i32.const 1)
)
)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
)
(func $loop (type $2)
(local $0 i32)
(local $1 i32)
(loop $out $in
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(set_local $0
(i32.const 0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
(br $in)
)
)
@@ -298,33 +392,51 @@
(local $0 i32)
(block $block
(br $block)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $interfere-in-dead2 (type $2)
(local $0 i32)
(block $block
(unreachable)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $interfere-in-dead3 (type $2)
(local $0 i32)
(block $block
(return)
- (get_local $0)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $0)
+ )
)
)
(func $params (type $3) (param $0 i32) (param $1 f32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
- (get_local $2)
- (get_local $3)
- (get_local $4)
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
)
(func $interfere-in-dead (type $2)
(local $0 i32)
@@ -333,8 +445,12 @@
(br_if $block
(i32.const 0)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(func $switch (type $2)
@@ -347,13 +463,21 @@
(br_table $switch-case$1 $switch-case$2 $switch-case$1 $switch-case$1 $switch$def
(i32.const 100)
)
+ (drop
+ (get_local $0)
+ )
+ )
+ (drop
(get_local $0)
)
- (get_local $0)
)
- (get_local $1)
+ (drop
+ (get_local $1)
+ )
+ )
+ (drop
+ (get_local $2)
)
- (get_local $2)
)
(func $greedy-can-be-happy (type $2)
(local $0 i32)
@@ -371,8 +495,12 @@
(set_local $1
(i32.const 101)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block5
(set_local $0
@@ -381,8 +509,12 @@
(set_local $1
(i32.const 103)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
(if
@@ -394,8 +526,12 @@
(set_local $1
(i32.const 105)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block10
(set_local $0
@@ -404,8 +540,12 @@
(set_local $1
(i32.const 107)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -418,8 +558,12 @@
(set_local $1
(i32.const 109)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block15
(set_local $0
@@ -428,8 +572,12 @@
(set_local $1
(i32.const 111)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -451,8 +599,12 @@
(set_local $1
(i32.const 101)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(block $block5
(set_local $0
@@ -461,8 +613,12 @@
(set_local $2
(i32.const 103)
)
- (get_local $0)
- (get_local $2)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $2)
+ )
)
)
(if
@@ -474,8 +630,12 @@
(set_local $0
(i32.const 105)
)
- (get_local $1)
- (get_local $0)
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $0)
+ )
)
(block $block10
(set_local $1
@@ -484,8 +644,12 @@
(set_local $2
(i32.const 107)
)
- (get_local $1)
- (get_local $2)
+ (drop
+ (get_local $1)
+ )
+ (drop
+ (get_local $2)
+ )
)
)
)
@@ -498,8 +662,12 @@
(set_local $0
(i32.const 109)
)
- (get_local $2)
- (get_local $0)
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $0)
+ )
)
(block $block15
(set_local $2
@@ -508,8 +676,12 @@
(set_local $1
(i32.const 111)
)
- (get_local $2)
- (get_local $1)
+ (drop
+ (get_local $2)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
)
@@ -521,7 +693,9 @@
(get_local $2)
(i32.const 4096)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(set_local $3
(get_local $0)
@@ -680,7 +854,9 @@
)
(nop)
)
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
)
(func $prefer-remove-copies1 (type $2)
(local $0 i32)
@@ -688,12 +864,16 @@
(set_local $0
(i32.const 0)
)
- (get_local $0)
+ (nop)
(set_local $1
(i32.const 1)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
(func $prefer-remove-copies1 (type $2)
(local $0 i32)
@@ -701,11 +881,15 @@
(set_local $1
(i32.const 0)
)
- (get_local $1)
+ (nop)
(set_local $0
(i32.const 1)
)
- (get_local $0)
- (get_local $1)
+ (drop
+ (get_local $0)
+ )
+ (drop
+ (get_local $1)
+ )
)
)
diff --git a/test/passes/coalesce-locals.wast b/test/passes/coalesce-locals.wast
index a7cd6adc1..568b3741c 100644
--- a/test/passes/coalesce-locals.wast
+++ b/test/passes/coalesce-locals.wast
@@ -1,288 +1,472 @@
(module
(memory 10)
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
+ (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
+ (type $2 (func))
+ (type $3 (func (param i32 f32)))
+ (type $4 (func (param i32)))
(import $_emscripten_autodebug_i32 "env" "_emscripten_autodebug_i32" (param i32 i32) (result i32))
- (table)
- (func $nothing-to-do
+ (func $nothing-to-do (type $2)
(local $x i32)
+ (nop)
)
- (func $merge
+ (func $merge (type $2)
(local $x i32)
(local $y i32)
+ (nop)
)
- (func $leave-type
+ (func $leave-type (type $2)
(local $x i32)
(local $y f32)
+ (nop)
)
- (func $leave-interfere
+ (func $leave-interfere (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 0))
- (get_local $x)
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $almost-interfere
+ (func $almost-interfere (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (get_local $x)
- (set_local $y (i32.const 0))
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $redundant-copy
+ (func $redundant-copy (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (get_local $x))
- (get_local $y)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $ineffective-store
+ (func $ineffective-store (type $2)
(local $x i32)
- (set_local $x (i32.const 0))
- (set_local $x (i32.const 0))
- (get_local $x)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
)
- (func $block
+ (func $block (type $2)
(local $x i32)
- (block
- (set_local $x (i32.const 0))
+ (block $block0
+ (set_local $x
+ (i32.const 0)
+ )
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x)
)
- (func $see-both-sides
+ (func $see-both-sides (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (block
- (set_local $y (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
+ (block $block0
+ (set_local $y
+ (i32.const 0)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $see-br-and-ignore-dead
+ (func $see-br-and-ignore-dead (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(block $block
(br $block)
- (set_local $y (i32.const 0))
- (get_local $y)
- (set_local $x (i32.const -1))
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
+ (set_local $x
+ (i32.const -1)
+ )
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x)
)
- (func $see-block-body
+ (func $see-block-body (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(block $block
- (set_local $y (i32.const 0))
- (get_local $y)
+ (set_local $y
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
(br $block)
)
- (get_local $x)
+ (drop
+ (get_local $x)
+ )
)
- (func $zero-init
+ (func $zero-init (type $2)
(local $x i32)
(local $y i32)
- (get_local $x)
- (get_local $y)
- )
- (func $multi
- (local $x i32) ;; x is free, but y and z conflict
- (local $y i32)
- (local $z i32)
- (get_local $y)
- (get_local $z)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $if-else
+ (func $multi (type $2)
(local $x i32)
(local $y i32)
- (if ;; x and y conflict when they are merged into their shared predecessor
- (i32.const 0)
- (get_local $x)
+ (local $z i32)
+ (drop
(get_local $y)
)
+ (drop
+ (get_local $z)
+ )
)
- (func $if-else-parallel
+ (func $if-else (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
+ (drop
(get_local $x)
)
- (block
- (set_local $y (i32.const 1))
+ (drop
(get_local $y)
)
)
)
- (func $if-else-after
+ (func $if-else-parallel (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ )
+ (block $block3
+ (set_local $y
+ (i32.const 1)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
)
- (get_local $x)
- (get_local $y)
)
- (func $if-else-through
+ (func $if-else-after (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
(if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $if-through
+ (func $if-else-through (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
- (set_local $y (i32.const 1))
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
(if
(i32.const 0)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
+ (func $if-through (type $2)
+ (local $x i32)
+ (local $y i32)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
(i32.const 1)
)
- (get_local $x)
- (get_local $y)
+ (if
+ (i32.const 0)
+ (drop
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
- (func $if-through2
+ (func $if-through2 (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(if
(i32.const 0)
- (set_local $y (i32.const 1))
+ (set_local $y
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
)
- (get_local $x)
- (get_local $y)
)
- (func $if-through2
+ (func $if-through2 (type $2)
(local $x i32)
(local $y i32)
- (set_local $x (i32.const 0))
+ (set_local $x
+ (i32.const 0)
+ )
(if
(i32.const 0)
- (block
- (get_local $x)
- (get_local $y)
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
)
- (func $if2
+ (func $if2 (type $2)
(local $x i32)
(local $y i32)
(if
- (set_local $x (i32.const 0))
- (block
- (get_local $x)
- (get_local $y)
+ (tee_local $x
+ (i32.const 0)
+ )
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
)
- (func $if3
+ (func $if3 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
- (get_local $x)
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $if4
+ (func $if4 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (set_local $x (i32.const 0))
- (get_local $x)
- (set_local $y (i32.const 1)) ;; we might not go through here, but it's ok
+ (block $block1
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $if5
+ (func $if5 (type $2)
(local $x i32)
(local $y i32)
(if
(i32.const 0)
- (block
- (get_local $x) ;; we might go through here, and it causes interference
- (set_local $y (i32.const 1))
+ (block $block1
+ (drop
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
)
)
- (get_local $y)
+ (drop
+ (get_local $y)
+ )
)
- (func $loop
+ (func $loop (type $2)
(local $x i32)
(local $y i32)
(loop $out $in
- (get_local $x)
- (set_local $x (i32.const 0)) ;; effective, due to looping
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (set_local $x
+ (i32.const 0)
+ )
+ (drop
+ (get_local $y)
+ )
(br $in)
)
)
- (func $interfere-in-dead
+ (func $interfere-in-dead (type $2)
(local $x i32)
(local $y i32)
(block $block
(br $block)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $interfere-in-dead2
+ (func $interfere-in-dead2 (type $2)
(local $x i32)
(local $y i32)
(block $block
(unreachable)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $interfere-in-dead3
+ (func $interfere-in-dead3 (type $2)
(local $x i32)
(local $y i32)
(block $block
(return)
- (get_local $x)
- (get_local $y)
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $params (param $p i32) (param $q f32)
- (local $x i32) ;; x is free, but others conflict
+ (func $params (type $3) (param $p i32) (param $q f32)
+ (local $x i32)
(local $y i32)
(local $z i32)
(local $w i32)
- (get_local $y)
- (get_local $z)
- (get_local $w)
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (get_local $z)
+ )
+ (drop
+ (get_local $w)
+ )
)
- (func $interfere-in-dead
+ (func $interfere-in-dead (type $2)
(local $x i32)
(local $y i32)
(block $block
- (br_if $block (i32.const 0))
- (get_local $x)
- (get_local $y)
+ (br_if $block
+ (i32.const 0)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
)
- (func $switch
+ (func $switch (type $2)
(local $x i32)
(local $y i32)
(local $z i32)
@@ -293,15 +477,23 @@
(br_table $switch-case$1 $switch-case$2 $switch-case$1 $switch-case$1 $switch$def
(i32.const 100)
)
- (get_local $x) ;; unreachable
+ (drop
+ (get_local $x)
+ )
+ )
+ (drop
+ (get_local $y)
)
- (get_local $y)
)
- (get_local $z)
+ (drop
+ (get_local $z)
+ )
+ )
+ (drop
+ (get_local $w)
)
- (get_local $w)
)
- (func $greedy-can-be-happy
+ (func $greedy-can-be-happy (type $2)
(local $x1 i32)
(local $x2 i32)
(local $x3 i32)
@@ -314,53 +506,101 @@
(i32.const 1)
(if
(i32.const 2)
- (block
- (set_local $x1 (i32.const 100))
- (set_local $y2 (i32.const 101))
- (get_local $x1)
- (get_local $y2)
+ (block $block3
+ (set_local $x1
+ (i32.const 100)
+ )
+ (set_local $y2
+ (i32.const 101)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y2)
+ )
)
- (block
- (set_local $x1 (i32.const 102))
- (set_local $y3 (i32.const 103))
- (get_local $x1)
- (get_local $y3)
+ (block $block5
+ (set_local $x1
+ (i32.const 102)
+ )
+ (set_local $y3
+ (i32.const 103)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
(if
(i32.const 3)
- (block
- (set_local $x2 (i32.const 104))
- (set_local $y1 (i32.const 105))
- (get_local $x2)
- (get_local $y1)
+ (block $block8
+ (set_local $x2
+ (i32.const 104)
+ )
+ (set_local $y1
+ (i32.const 105)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x2 (i32.const 106))
- (set_local $y3 (i32.const 107))
- (get_local $x2)
- (get_local $y3)
+ (block $block10
+ (set_local $x2
+ (i32.const 106)
+ )
+ (set_local $y3
+ (i32.const 107)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
)
(if
(i32.const 4)
- (block
- (set_local $x3 (i32.const 108))
- (set_local $y1 (i32.const 109))
- (get_local $x3)
- (get_local $y1)
+ (block $block13
+ (set_local $x3
+ (i32.const 108)
+ )
+ (set_local $y1
+ (i32.const 109)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x3 (i32.const 110))
- (set_local $y2 (i32.const 111))
- (get_local $x3)
- (get_local $y2)
+ (block $block15
+ (set_local $x3
+ (i32.const 110)
+ )
+ (set_local $y2
+ (i32.const 111)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y2)
+ )
)
)
)
)
- (func $greedy-can-be-sad
+ (func $greedy-can-be-sad (type $2)
(local $x1 i32)
(local $y1 i32)
(local $x2 i32)
@@ -373,63 +613,110 @@
(i32.const 1)
(if
(i32.const 2)
- (block
- (set_local $x1 (i32.const 100))
- (set_local $y2 (i32.const 101))
- (get_local $x1)
- (get_local $y2)
+ (block $block3
+ (set_local $x1
+ (i32.const 100)
+ )
+ (set_local $y2
+ (i32.const 101)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y2)
+ )
)
- (block
- (set_local $x1 (i32.const 102))
- (set_local $y3 (i32.const 103))
- (get_local $x1)
- (get_local $y3)
+ (block $block5
+ (set_local $x1
+ (i32.const 102)
+ )
+ (set_local $y3
+ (i32.const 103)
+ )
+ (drop
+ (get_local $x1)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
(if
(i32.const 3)
- (block
- (set_local $x2 (i32.const 104))
- (set_local $y1 (i32.const 105))
- (get_local $x2)
- (get_local $y1)
+ (block $block8
+ (set_local $x2
+ (i32.const 104)
+ )
+ (set_local $y1
+ (i32.const 105)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x2 (i32.const 106))
- (set_local $y3 (i32.const 107))
- (get_local $x2)
- (get_local $y3)
+ (block $block10
+ (set_local $x2
+ (i32.const 106)
+ )
+ (set_local $y3
+ (i32.const 107)
+ )
+ (drop
+ (get_local $x2)
+ )
+ (drop
+ (get_local $y3)
+ )
)
)
)
(if
(i32.const 4)
- (block
- (set_local $x3 (i32.const 108))
- (set_local $y1 (i32.const 109))
- (get_local $x3)
- (get_local $y1)
+ (block $block13
+ (set_local $x3
+ (i32.const 108)
+ )
+ (set_local $y1
+ (i32.const 109)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y1)
+ )
)
- (block
- (set_local $x3 (i32.const 110))
- (set_local $y2 (i32.const 111))
- (get_local $x3)
- (get_local $y2)
+ (block $block15
+ (set_local $x3
+ (i32.const 110)
+ )
+ (set_local $y2
+ (i32.const 111)
+ )
+ (drop
+ (get_local $x3)
+ )
+ (drop
+ (get_local $y2)
+ )
)
)
)
)
- (func $_memcpy (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
+ (func $_memcpy (type $FUNCSIG$iiii) (param $i1 i32) (param $i2 i32) (param $i3 i32) (result i32)
(local $i4 i32)
(if
(i32.ge_s
(get_local $i3)
(i32.const 4096)
)
- (get_local $i1)
- (get_local $i2)
- (get_local $i3)
- (return)
+ (drop
+ (get_local $i1)
+ )
)
(set_local $i4
(get_local $i1)
@@ -445,7 +732,7 @@
(i32.const 3)
)
)
- (block
+ (block $block2
(loop $while-out$0 $while-in$1
(if
(i32.eqz
@@ -456,7 +743,7 @@
)
(br $while-out$0)
)
- (block
+ (block $block4
(if
(i32.eqz
(get_local $i3)
@@ -502,7 +789,7 @@
)
(br $while-out$2)
)
- (block
+ (block $block7
(i32.store
(get_local $i1)
(i32.load
@@ -542,7 +829,7 @@
)
(br $while-out$4)
)
- (block
+ (block $block9
(i32.store8
(get_local $i1)
(i32.load8_s
@@ -574,41 +861,62 @@
(get_local $i4)
)
)
- (func $this-is-effective-i-tell-you (param $x i32)
+ (func $this-is-effective-i-tell-you (type $4) (param $x i32)
(if
(i32.const -1)
- (block
- (if ;; this is important for the bug
+ (block $block1
+ (if
(i32.const 0)
(nop)
)
- (set_local $x ;; this set is effective!
+ (set_local $x
(i32.const 1)
)
)
- (nop) ;; this is enough for the bug
+ (nop)
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x) ;; this ends up with the wrong value in the test
)
- (func $prefer-remove-copies1
+ (func $prefer-remove-copies1 (type $2)
(local $y i32)
(local $z i32)
- (local $x i32) ;; y and z interfere, x can be with either, but has a copy which should be prefered
- (set_local $x (i32.const 0))
- (set_local $y (get_local $x))
- (set_local $z (i32.const 1))
- (get_local $y)
- (get_local $z)
- )
- (func $prefer-remove-copies1
+ (local $x i32)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $y
+ (get_local $x)
+ )
+ (set_local $z
+ (i32.const 1)
+ )
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (get_local $z)
+ )
+ )
+ (func $prefer-remove-copies1 (type $2)
(local $y i32)
(local $z i32)
- (local $x i32) ;; y and z interfere, x can be with either, but has a copy which should be prefered
- (set_local $x (i32.const 0))
- (set_local $z (get_local $x))
- (set_local $y (i32.const 1))
- (get_local $y)
- (get_local $z)
+ (local $x i32)
+ (set_local $x
+ (i32.const 0)
+ )
+ (set_local $z
+ (get_local $x)
+ )
+ (set_local $y
+ (i32.const 1)
+ )
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (get_local $z)
+ )
)
)
-
diff --git a/test/passes/dce.txt b/test/passes/dce.txt
index 9ae5977b6..92fea5c28 100644
--- a/test/passes/dce.txt
+++ b/test/passes/dce.txt
@@ -31,7 +31,9 @@
(br_if $out
(i32.const 3)
)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(if
(i32.const 0)
@@ -108,8 +110,12 @@
(if
(i32.const 0)
(block $block15
- (i32.const 10)
- (i32.const 42)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 42)
+ )
(unreachable)
)
)
@@ -137,7 +143,9 @@
(if
(i32.const 1)
(block
- (i32.const 123)
+ (drop
+ (i32.const 123)
+ )
(unreachable)
)
)
@@ -152,22 +160,30 @@
(if
(i32.const -1)
(block
- (i32.const 123)
- (i32.const 456)
+ (drop
+ (i32.const 123)
+ )
+ (drop
+ (i32.const 456)
+ )
(unreachable)
)
)
(if
(i32.const -2)
(block
- (i32.const 139)
+ (drop
+ (i32.const 139)
+ )
(unreachable)
)
)
(if
(i32.const -3)
(block
- (i32.const 246)
+ (drop
+ (i32.const 246)
+ )
(unreachable)
)
)
@@ -181,12 +197,16 @@
)
(if
(i32.const 22)
- (unreachable)
+ (drop
+ (unreachable)
+ )
)
(if
(i32.const 33)
(block
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
(unreachable)
)
)
@@ -200,17 +220,25 @@
)
(if
(i32.const 66)
- (unreachable)
+ (drop
+ (unreachable)
+ )
)
(if
(i32.const 77)
- (unreachable)
+ (drop
+ (unreachable)
+ )
)
(if
(i32.const 88)
- (block
- (i32.const 0)
- (unreachable)
+ (drop
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (unreachable)
+ )
)
)
(if
@@ -219,29 +247,45 @@
)
(if
(i32.const 100)
- (block
- (i32.const 123)
- (i32.const 456)
- (unreachable)
+ (drop
+ (block
+ (drop
+ (i32.const 123)
+ )
+ (drop
+ (i32.const 456)
+ )
+ (unreachable)
+ )
)
)
(if
(i32.const 101)
- (block
- (i32.const 123)
- (unreachable)
+ (drop
+ (block
+ (drop
+ (i32.const 123)
+ )
+ (unreachable)
+ )
)
)
(if
(i32.const 102)
- (unreachable)
+ (drop
+ (unreachable)
+ )
+ )
+ (drop
+ (i32.const 1337)
)
- (i32.const 1337)
)
(func $killer (type $1)
(unreachable)
)
(func $target (type $1)
- (i32.const 2000)
+ (drop
+ (i32.const 2000)
+ )
)
)
diff --git a/test/passes/dce.wast b/test/passes/dce.wast
index dcec20cc1..c7eb1145e 100644
--- a/test/passes/dce.wast
+++ b/test/passes/dce.wast
@@ -1,204 +1,384 @@
(module
(memory 10)
- (type $ii (func (param i32) (param i32)))
+ (type $ii (func (param i32 i32)))
+ (type $1 (func))
(table $call-me)
- (func $call-me (param i32) (param i32)
+ (func $call-me (type $ii) (param $0 i32) (param $1 i32)
+ (nop)
)
- (func $code-to-kill
+ (func $code-to-kill (type $1)
(local $x i32)
(block $out
- (br $out) ;; kill everything after this
- (i32.const 0)
- (if (i32.const 1)
- (i32.const 2)
+ (br $out)
+ (drop
+ (i32.const 0)
+ )
+ (if
+ (i32.const 1)
+ (drop
+ (i32.const 2)
+ )
+ )
+ (br_table $out $out $out $out
+ (i32.const 3)
)
- (br_table $out $out $out $out (i32.const 3))
(call $code-to-kill)
)
- (if (i32.const 0)
+ (if
+ (i32.const 0)
(block $out
(unreachable)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
)
- (if (i32.const 0)
+ (if
+ (i32.const 0)
(block $out
(return)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
)
(block $out
- (br_table $out $out $out $out (i32.const 4))
- (i32.const 0)
+ (br_table $out $out $out $out
+ (i32.const 4)
+ )
+ (drop
+ (i32.const 0)
+ )
)
(block $out
- (br_if $out (i32.const 3)) ;; but not after this
- (i32.const 0)
+ (br_if $out
+ (i32.const 3)
+ )
+ (drop
+ (i32.const 0)
+ )
)
- (if (i32.const 0)
- (block
- (if (i32.const 0) ;; if that is unreachable both ways
+ (if
+ (i32.const 0)
+ (block $block4
+ (if
+ (i32.const 0)
(block $out
(unreachable)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(block $out
(unreachable)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
)
- (if (i32.const 0)
+ (if
+ (i32.const 0)
(block $out
- (br $out (unreachable))
- (i32.const 0)
+ (br $out
+ (unreachable)
+ )
+ (drop
+ (i32.const 0)
+ )
)
)
- (if (i32.const 0)
+ (if
+ (i32.const 0)
(block $out
- (br_if $out (unreachable) (i32.const 0))
- (i32.const 0)
+ (br_if $out
+ (unreachable)
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 0)
+ )
)
)
- (if (i32.const 0)
+ (if
+ (i32.const 0)
(block $out
- (br_if $out (unreachable) (unreachable))
- (i32.const 0)
+ (br_if $out
+ (unreachable)
+ (unreachable)
+ )
+ (drop
+ (i32.const 0)
+ )
)
)
(block $out
(block $in
- (br_if $out (i32.const 1))
+ (br_if $out
+ (i32.const 1)
+ )
)
(unreachable)
)
- (if (i32.const 0)
- (block
+ (if
+ (i32.const 0)
+ (block $block11
(block $out
(block $in
- (br_if $in (i32.const 1))
+ (br_if $in
+ (i32.const 1)
+ )
)
(unreachable)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
)
(block $out
(block $in
- (br_table $out $in (i32.const 1))
+ (br_table $out $in
+ (i32.const 1)
+ )
)
(unreachable)
)
(block $out
(block $in
- (br_table $in $out (i32.const 1))
+ (br_table $in $out
+ (i32.const 1)
+ )
)
(unreachable)
)
- (if (i32.const 0)
- (block
+ (if
+ (i32.const 0)
+ (block $block13
(block $out
(block $in
- (br_table $in $in (i32.const 1))
+ (br_table $in $in
+ (i32.const 1)
+ )
)
(unreachable)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
)
- (if (i32.const 0)
- (block
- (i32.const 10)
- (i32.const 42)
+ (if
+ (i32.const 0)
+ (block $block15
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 42)
+ )
(unreachable)
- (return (unreachable))
+ (return
+ (unreachable)
+ )
(unreachable)
(return)
)
)
- (if (i32.const 0)
- (loop (unreachable))
+ (if
+ (i32.const 0)
+ (loop $loop-out17 $loop-in18
+ (unreachable)
+ )
)
(loop $out $in
- (br_if $out (i32.const 1))
+ (br_if $out
+ (i32.const 1)
+ )
(unreachable)
)
- (if (i32.const 0)
- (block
+ (if
+ (i32.const 0)
+ (block $block20
(loop $out $in
- (br_if $in (i32.const 1))
+ (br_if $in
+ (i32.const 1)
+ )
(unreachable)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
)
- (if (i32.const 1)
- (call $call-me (i32.const 123) (unreachable))
+ (if
+ (i32.const 1)
+ (call $call-me
+ (i32.const 123)
+ (unreachable)
+ )
)
- (if (i32.const 2)
- (call $call-me (unreachable) (i32.const 0))
+ (if
+ (i32.const 2)
+ (call $call-me
+ (unreachable)
+ (i32.const 0)
+ )
)
- (if (i32.const 3)
- (call $call-me (unreachable) (unreachable))
+ (if
+ (i32.const 3)
+ (call $call-me
+ (unreachable)
+ (unreachable)
+ )
)
- (if (i32.const -1)
- (call_indirect $ii (i32.const 123) (i32.const 456) (unreachable))
+ (if
+ (i32.const -1)
+ (call_indirect $ii
+ (i32.const 123)
+ (i32.const 456)
+ (unreachable)
+ )
)
- (if (i32.const -2)
- (call_indirect $ii (i32.const 139) (unreachable) (i32.const 0))
+ (if
+ (i32.const -2)
+ (call_indirect $ii
+ (i32.const 139)
+ (unreachable)
+ (i32.const 0)
+ )
)
- (if (i32.const -3)
- (call_indirect $ii (i32.const 246) (unreachable) (unreachable))
+ (if
+ (i32.const -3)
+ (call_indirect $ii
+ (i32.const 246)
+ (unreachable)
+ (unreachable)
+ )
)
- (if (i32.const -4)
- (call_indirect $ii (unreachable) (unreachable) (unreachable))
+ (if
+ (i32.const -4)
+ (call_indirect $ii
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ )
)
- (if (i32.const 11)
- (set_local $x (unreachable))
+ (if
+ (i32.const 11)
+ (set_local $x
+ (unreachable)
+ )
)
- (if (i32.const 22)
- (i32.load (unreachable))
+ (if
+ (i32.const 22)
+ (drop
+ (i32.load
+ (unreachable)
+ )
+ )
)
- (if (i32.const 33)
- (i32.store (i32.const 0) (unreachable))
+ (if
+ (i32.const 33)
+ (i32.store
+ (i32.const 0)
+ (unreachable)
+ )
)
- (if (i32.const 44)
- (i32.store (unreachable) (i32.const 0))
+ (if
+ (i32.const 44)
+ (i32.store
+ (unreachable)
+ (i32.const 0)
+ )
)
- (if (i32.const 55)
- (i32.store (unreachable) (unreachable))
+ (if
+ (i32.const 55)
+ (i32.store
+ (unreachable)
+ (unreachable)
+ )
+ )
+ (if
+ (i32.const 66)
+ (drop
+ (i32.eqz
+ (unreachable)
+ )
+ )
)
- (if (i32.const 66)
- (i32.eqz (unreachable))
+ (if
+ (i32.const 77)
+ (drop
+ (i32.add
+ (unreachable)
+ (i32.const 0)
+ )
+ )
)
- (if (i32.const 77)
- (i32.add (unreachable) (i32.const 0))
+ (if
+ (i32.const 88)
+ (drop
+ (i32.add
+ (i32.const 0)
+ (unreachable)
+ )
+ )
)
- (if (i32.const 88)
- (i32.add (i32.const 0) (unreachable))
+ (if
+ (i32.const 99)
+ (i32.add
+ (unreachable)
+ (unreachable)
+ )
)
- (if (i32.const 99)
- (i32.add (unreachable) (unreachable))
+ (if
+ (i32.const 100)
+ (drop
+ (select
+ (i32.const 123)
+ (i32.const 456)
+ (unreachable)
+ )
+ )
)
- (if (i32.const 100)
- (select (i32.const 123) (i32.const 456) (unreachable))
+ (if
+ (i32.const 101)
+ (drop
+ (select
+ (i32.const 123)
+ (unreachable)
+ (i32.const 456)
+ )
+ )
)
- (if (i32.const 101)
- (select (i32.const 123) (unreachable) (i32.const 456))
+ (if
+ (i32.const 102)
+ (drop
+ (select
+ (unreachable)
+ (i32.const 123)
+ (i32.const 456)
+ )
+ )
)
- (if (i32.const 102)
- (select (unreachable) (i32.const 123) (i32.const 456))
+ (drop
+ (i32.const 1337)
)
- (i32.const 1337)
)
- (func $killer
+ (func $killer (type $1)
(unreachable)
- (i32.const 1000)
+ (drop
+ (i32.const 1000)
+ )
)
- (func $target
- (i32.const 2000)
+ (func $target (type $1)
+ (drop
+ (i32.const 2000)
+ )
)
)
-
diff --git a/test/passes/drop-return-values.txt b/test/passes/drop-return-values.txt
deleted file mode 100644
index 81ca99327..000000000
--- a/test/passes/drop-return-values.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-(module
- (memory 10)
- (type $0 (func))
- (func $0 (type $0)
- (local $x i32)
- (local $1 i32)
- (i32.add
- (block
- (set_local $x
- (i32.const 10)
- )
- (get_local $x)
- )
- (i32.const 20)
- )
- (i32.add
- (block
- (block
- (set_local $1
- (i32.const 40)
- )
- (i32.store
- (i32.const 30)
- (get_local $1)
- )
- )
- (get_local $1)
- )
- (i32.const 50)
- )
- )
-)
diff --git a/test/passes/drop-return-values.wast b/test/passes/drop-return-values.wast
deleted file mode 100644
index 76463cc8e..000000000
--- a/test/passes/drop-return-values.wast
+++ /dev/null
@@ -1,9 +0,0 @@
-(module
- (memory 10)
- (func
- (local $x i32)
- (i32.add (set_local $x (i32.const 10)) (i32.const 20))
- (i32.add (i32.store (i32.const 30) (i32.const 40)) (i32.const 50))
- )
-)
-
diff --git a/test/passes/duplicate-function-elimination.txt b/test/passes/duplicate-function-elimination.txt
index a7511fc5c..022d45052 100644
--- a/test/passes/duplicate-function-elimination.txt
+++ b/test/passes/duplicate-function-elimination.txt
@@ -9,7 +9,9 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other (type $0)
(nop)
@@ -19,17 +21,23 @@
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other (type $0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
)
(module
@@ -81,10 +89,14 @@
(type $2 (func))
(type $3 (func (param i32)))
(func $keep4-similar-but-func-sig-differs (type $2)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other1 (type $3) (param $i i32)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other2 (type $T) (result i32)
(i32.const 0)
@@ -98,7 +110,9 @@
(type $S (func (result i32)))
(type $1 (func (param i32)))
(func $keep2-similar-but-func-sig-differs (type $1) (param $i i32)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other2 (type $S) (result i32)
(i32.const 0)
@@ -199,15 +213,21 @@
(type $0 (func))
(func $keep2 (type $0)
(block $foo
- (br $foo
- (i32.const 0)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ (br $foo)
)
)
)
(func $other (type $0)
(block $bar
- (br $bar
- (i32.const 1)
+ (block $block0
+ (drop
+ (i32.const 1)
+ )
+ (br $bar)
)
)
)
@@ -272,18 +292,22 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (block $foo
- (br_table $foo $foo
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (block $foo
+ (br_table $foo $foo
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
)
(func $other (type $0)
- (block $bar
- (br_table $bar $bar
- (i32.const 0)
- (i32.const 1)
+ (drop
+ (block $bar
+ (br_table $bar $bar
+ (i32.const 0)
+ (i32.const 1)
+ )
)
)
)
@@ -410,7 +434,9 @@
(type $0 (func))
(func $erase-even-locals-with-different-names (type $0)
(local $i i32)
- (get_local $i)
+ (drop
+ (get_local $i)
+ )
)
)
(module
@@ -418,11 +444,15 @@
(type $0 (func))
(func $keep2 (type $0)
(local $i i32)
- (get_local $i)
+ (drop
+ (get_local $i)
+ )
)
(func $other (type $0)
(local $j i64)
- (get_local $j)
+ (drop
+ (get_local $j)
+ )
)
)
(module
@@ -471,11 +501,15 @@
(memory 10)
(type $0 (func))
(func $erase (type $0)
- (i32.load
- (i32.const 0)
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
)
@@ -483,13 +517,17 @@
(memory 10)
(type $0 (func))
(func $keep2 (type $0)
- (i32.load16_s offset=3
- (i32.const 0)
+ (drop
+ (i32.load16_s offset=3
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
)
@@ -497,13 +535,17 @@
(memory 10)
(type $0 (func))
(func $keep2 (type $0)
- (i32.load8_s offset=3
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
)
@@ -511,13 +553,17 @@
(memory 10)
(type $0 (func))
(func $keep2 (type $0)
- (i32.load8_s align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s align=2
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
)
@@ -525,13 +571,17 @@
(memory 10)
(type $0 (func))
(func $keep2 (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 1)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 1)
+ )
)
)
)
@@ -539,13 +589,17 @@
(memory 10)
(type $0 (func))
(func $keep2 (type $0)
- (i32.load8_u offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_u offset=3 align=2
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (i32.load8_s offset=3 align=2
- (i32.const 0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
)
)
)
@@ -647,68 +701,94 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other (type $0)
- (i64.const 0)
+ (drop
+ (i64.const 0)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other (type $0)
- (f32.const 0)
+ (drop
+ (f32.const 0)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i32.const 0)
+ (drop
+ (i32.const 0)
+ )
)
(func $other (type $0)
- (f64.const 0)
+ (drop
+ (f64.const 0)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (i64.const 0)
+ (drop
+ (i64.const 0)
+ )
)
(func $other (type $0)
- (i64.const 1)
+ (drop
+ (i64.const 1)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.const 0.10000000149011612)
+ (drop
+ (f32.const 0.10000000149011612)
+ )
)
(func $other (type $0)
- (f32.const -0.10000000149011612)
+ (drop
+ (f32.const -0.10000000149011612)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f64.const 0.1)
+ (drop
+ (f64.const 0.1)
+ )
)
(func $other (type $0)
- (f64.const 0.2)
+ (drop
+ (f64.const 0.2)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (f32.abs
- (f32.const 0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
)
)
)
@@ -716,13 +796,17 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.abs
- (f32.const 0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
)
)
(func $other (type $0)
- (f32.abs
- (f32.const 1)
+ (drop
+ (f32.abs
+ (f32.const 1)
+ )
)
)
)
@@ -730,13 +814,17 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.abs
- (f32.const 0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
)
)
(func $other (type $0)
- (f32.neg
- (f32.const 0)
+ (drop
+ (f32.neg
+ (f32.const 0)
+ )
)
)
)
@@ -744,9 +832,11 @@
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (f32.add
- (f32.const 0)
- (f32.const 0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
)
)
)
@@ -754,15 +844,19 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.add
- (f32.const 0)
- (f32.const 0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
)
)
(func $other (type $0)
- (f32.add
- (f32.const 0)
- (f32.const 1)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 1)
+ )
)
)
)
@@ -770,15 +864,19 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.add
- (f32.const 0)
- (f32.const 0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
)
)
(func $other (type $0)
- (f32.add
- (f32.const 1)
- (f32.const 0)
+ (drop
+ (f32.add
+ (f32.const 1)
+ (f32.const 0)
+ )
)
)
)
@@ -786,15 +884,19 @@
(memory 0)
(type $0 (func))
(func $keep2 (type $0)
- (f32.add
- (f32.const 0)
- (f32.const 0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
)
)
(func $other (type $0)
- (f32.sub
- (f32.const 0)
- (f32.const 0)
+ (drop
+ (f32.sub
+ (f32.const 0)
+ (f32.const 0)
+ )
)
)
)
@@ -802,10 +904,12 @@
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (select
- (i32.const 0)
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
)
@@ -813,17 +917,21 @@
(memory 0)
(type $0 (func))
(func $keep (type $0)
- (select
- (i32.const 0)
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (select
- (i32.const 1)
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 1)
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
)
@@ -831,17 +939,21 @@
(memory 0)
(type $0 (func))
(func $keep (type $0)
- (select
- (i32.const 0)
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (select
- (i32.const 0)
- (i32.const 2)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 2)
+ (i32.const 0)
+ )
)
)
)
@@ -849,17 +961,21 @@
(memory 0)
(type $0 (func))
(func $keep (type $0)
- (select
- (i32.const 0)
- (i32.const 0)
- (i32.const 0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
)
)
(func $other (type $0)
- (select
- (i32.const 0)
- (i32.const 0)
- (i32.const 3)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 3)
+ )
)
)
)
@@ -897,15 +1013,19 @@
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (current_memory)
+ (drop
+ (current_memory)
+ )
)
)
(module
(memory 0)
(type $0 (func))
(func $erase (type $0)
- (grow_memory
- (i32.const 10)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
)
)
)
@@ -913,13 +1033,17 @@
(memory 0)
(type $0 (func))
(func $keep (type $0)
- (grow_memory
- (i32.const 10)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
)
)
(func $other (type $0)
- (grow_memory
- (i32.const 11)
+ (drop
+ (grow_memory
+ (i32.const 11)
+ )
)
)
)
@@ -927,11 +1051,15 @@
(memory 0)
(type $0 (func))
(func $keep (type $0)
- (current_memory)
+ (drop
+ (current_memory)
+ )
)
(func $other (type $0)
- (grow_memory
- (i32.const 10)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
)
)
)
diff --git a/test/passes/duplicate-function-elimination.wast b/test/passes/duplicate-function-elimination.wast
index 8d1a85cd5..1e0aaaf33 100644
--- a/test/passes/duplicate-function-elimination.wast
+++ b/test/passes/duplicate-function-elimination.wast
@@ -1,87 +1,118 @@
(module
- (func $erase
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
(nop)
)
- (func $other
+ (func $other (type $0)
(nop)
)
)
(module
- (func $keep2
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
+ (func $other (type $0)
(nop)
)
)
(module
- (func $erase
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
- (i32.const 0)
+ (func $other (type $0)
+ (drop
+ (i32.const 0)
+ )
)
)
(module
- (func $keep2
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
- (i32.const 1)
+ (func $other (type $0)
+ (drop
+ (i32.const 1)
+ )
)
)
(module
+ (memory 0)
+ (start $other)
+ (type $0 (func))
(export "keep2" $keep2)
(export "other" $other)
- (start $other)
(table $keep2 $other $caller)
- (func $keep2
+ (func $keep2 (type $0)
(nop)
)
- (func $other
+ (func $other (type $0)
(nop)
)
- (func $caller
+ (func $caller (type $0)
(call $keep2)
(call $other)
)
)
(module
- (func $keep2-after-two-passes
+ (memory 0)
+ (type $0 (func))
+ (func $keep2-after-two-passes (type $0)
(nop)
)
- (func $other
+ (func $other (type $0)
(nop)
)
- (func $keep-caller
+ (func $keep-caller (type $0)
(call $keep2-after-two-passes)
)
- (func $other-caller
+ (func $other-caller (type $0)
(call $other)
)
)
(module
- (func $keep-4
+ (memory 0)
+ (type $0 (func))
+ (func $keep-4 (type $0)
(nop)
)
- (func $other
+ (func $other (type $0)
(unreachable)
)
- (func $keep-caller
+ (func $keep-caller (type $0)
(call $keep-4)
)
- (func $other-caller
+ (func $other-caller (type $0)
(call $other)
)
)
(module
- (type T (func (result i32)))
- (type S (func (result i32)))
- (func $keep4-similar-but-func-sig-differs
- (i32.const 0)
+ (memory 0)
+ (type $T (func (result i32)))
+ (type $S (func (result i32)))
+ (type $2 (func))
+ (type $3 (func (param i32)))
+ (func $keep4-similar-but-func-sig-differs (type $2)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other1 (param $i i32)
- (i32.const 0)
+ (func $other1 (type $3) (param $i i32)
+ (drop
+ (i32.const 0)
+ )
)
(func $other2 (type $T) (result i32)
(i32.const 0)
@@ -91,12 +122,18 @@
)
)
(module
- (type S (func (result i32)))
- (func $keep2-similar-but-func-sig-differs (param $i i32)
- (i32.const 0)
+ (memory 0)
+ (type $S (func (result i32)))
+ (type $1 (func (param i32)))
+ (func $keep2-similar-but-func-sig-differs (type $1) (param $i i32)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other1 (param $i i32)
- (i32.const 0)
+ (func $other1 (type $1) (param $i i32)
+ (drop
+ (i32.const 0)
+ )
)
(func $other2 (type $S) (result i32)
(i32.const 0)
@@ -105,598 +142,1076 @@
(i32.const 0)
)
)
-;; hashing tests for expressions
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(nop)
)
- (func $other
+ (func $other (type $0)
(nop)
(nop)
)
)
(module
- (func $erase
- (block)
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (block $block0
+ )
)
- (func $other
- (block)
+ (func $other (type $0)
+ (block $block0
+ )
)
)
(module
- (func $keep2
- (block)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (block $block0
+ )
)
- (func $other
- (block (nop))
+ (func $other (type $0)
+ (block $block0
+ (nop)
+ )
)
)
(module
- (func $erase
- (block (nop))
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (block $block0
+ (nop)
+ )
)
- (func $other
- (block (nop))
+ (func $other (type $0)
+ (block $block0
+ (nop)
+ )
)
)
(module
- (func $keep2
- (block (nop))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (block $block0
+ (nop)
+ )
)
- (func $other
- (block (nop) (unreachable))
+ (func $other (type $0)
+ (block $block0
+ (nop)
+ (unreachable)
+ )
)
)
(module
- (func $keep2
- (block (nop))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (block $block0
+ (nop)
+ )
)
- (func $other
- (block (unreachable))
+ (func $other (type $0)
+ (block $block0
+ (unreachable)
+ )
)
)
(module
- (func $erase-since-block-names-do-not-matter
- (block $foo)
+ (memory 0)
+ (type $0 (func))
+ (func $erase-since-block-names-do-not-matter (type $0)
+ (block $foo
+ )
)
- (func $other
- (block $bar)
+ (func $other (type $0)
+ (block $bar
+ )
)
)
(module
- (func $erase-since-block-names-do-not-matter
+ (memory 0)
+ (type $0 (func))
+ (func $erase-since-block-names-do-not-matter (type $0)
(block $foo
(br $foo)
- (br_table $foo $foo (i32.const 0))
+ (br_table $foo $foo
+ (i32.const 0)
+ )
)
)
- (func $other
+ (func $other (type $0)
(block $bar
(br $bar)
- (br_table $bar $bar (i32.const 0))
+ (br_table $bar $bar
+ (i32.const 0)
+ )
)
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(block $foo
- (br $foo (i32.const 0))
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $foo)
+ )
)
)
- (func $other
+ (func $other (type $0)
(block $bar
- (br $bar (i32.const 1))
+ (block
+ (drop
+ (i32.const 1)
+ )
+ (br $bar)
+ )
)
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(block $foo
- (br_if $foo (i32.const 0))
+ (br_if $foo
+ (i32.const 0)
+ )
)
)
- (func $other
+ (func $other (type $0)
(block $bar
- (br_if $bar (i32.const 1))
+ (br_if $bar
+ (i32.const 1)
+ )
)
)
)
(module
- (func $erase
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
(block $foo
- (br_if $foo (i32.const 0))
+ (br_if $foo
+ (i32.const 0)
+ )
)
)
- (func $other
+ (func $other (type $0)
(block $bar
- (br_if $bar (i32.const 0))
+ (br_if $bar
+ (i32.const 0)
+ )
)
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(block $foo
- (br_table $foo $foo (i32.const 0))
+ (br_table $foo $foo
+ (i32.const 0)
+ )
)
)
- (func $other
+ (func $other (type $0)
(block $bar
- (br_table $bar $bar (i32.const 1))
+ (br_table $bar $bar
+ (i32.const 1)
+ )
)
)
)
(module
- (func $erase
- (loop $foo $bar)
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (loop $foo $bar
+ (nop)
+ )
)
- (func $other
- (loop $sfo $sjc)
+ (func $other (type $0)
+ (loop $sfo $sjc
+ (nop)
+ )
)
)
(module
- (func $keep2
- (block $foo
- (br_table $foo $foo (i32.const 0) (i32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (block $foo
+ (br_table $foo $foo
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
)
- (func $other
- (block $bar
- (br_table $bar $bar (i32.const 0) (i32.const 1))
+ (func $other (type $0)
+ (drop
+ (block $bar
+ (br_table $bar $bar
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
)
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(block $foo
(block $bar
- (br_table $foo $bar (i32.const 0))
+ (br_table $foo $bar
+ (i32.const 0)
+ )
)
)
)
- (func $other
+ (func $other (type $0)
(block $bar
(block $foo
- (br_table $bar $foo (i32.const 0))
+ (br_table $bar $foo
+ (i32.const 0)
+ )
)
)
)
)
(module
- (func $erase
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
(block $foo
(block $bar
- (br_table $foo $bar (i32.const 0))
+ (br_table $foo $bar
+ (i32.const 0)
+ )
)
)
)
- (func $other
+ (func $other (type $0)
(block $bar
(block $foo
- (br_table $foo $bar (i32.const 0))
+ (br_table $foo $bar
+ (i32.const 0)
+ )
)
)
)
)
(module
- (func $erase
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
(call $erase)
)
- (func $other
+ (func $other (type $0)
(call $erase)
)
)
(module
- (func $keep2-but-in-theory-we-could-erase ;; TODO FIXME
+ (memory 0)
+ (type $0 (func))
+ (func $keep2-but-in-theory-we-could-erase (type $0)
(call $keep2-but-in-theory-we-could-erase)
)
- (func $other
+ (func $other (type $0)
(call $other)
)
)
(module
+ (memory 0)
+ (type $FUNCSIG$v (func))
(import $i "env" "i")
(import $i "env" "j")
- (func $erase
+ (func $erase (type $FUNCSIG$v)
(call_import $i)
)
- (func $other
+ (func $other (type $FUNCSIG$v)
(call_import $i)
)
)
(module
+ (memory 0)
+ (type $FUNCSIG$v (func))
(import $i "env" "i")
(import $j "env" "j")
- (func $keep2
+ (func $keep2 (type $FUNCSIG$v)
(call_import $i)
)
- (func $other
+ (func $other (type $FUNCSIG$v)
(call_import $j)
)
)
(module
- (type T (func))
+ (memory 0)
+ (type $T (func))
(table $erase $other)
- (func $erase
- (call_indirect $T (i32.const 0))
+ (func $erase (type $T)
+ (call_indirect $T
+ (i32.const 0)
+ )
)
- (func $other
- (call_indirect $T (i32.const 0))
+ (func $other (type $T)
+ (call_indirect $T
+ (i32.const 0)
+ )
)
)
(module
- (type T (func))
+ (memory 0)
+ (type $T (func))
(table $keep2 $other)
- (func $keep2
- (call_indirect $T (i32.const 0))
+ (func $keep2 (type $T)
+ (call_indirect $T
+ (i32.const 0)
+ )
)
- (func $other
- (call_indirect $T (i32.const 1))
+ (func $other (type $T)
+ (call_indirect $T
+ (i32.const 1)
+ )
)
)
(module
- (type T (func))
- (type S (func))
+ (memory 0)
+ (type $T (func))
+ (type $S (func))
(table $keep2 $other)
- (func $keep2
- (call_indirect $T (i32.const 0))
+ (func $keep2 (type $T)
+ (call_indirect $T
+ (i32.const 0)
+ )
)
- (func $other
- (call_indirect $S (i32.const 0))
+ (func $other (type $T)
+ (call_indirect $S
+ (i32.const 0)
+ )
)
)
(module
- (func $erase-even-locals-with-different-names
+ (memory 0)
+ (type $0 (func))
+ (func $erase-even-locals-with-different-names (type $0)
(local $i i32)
- (get_local $i)
+ (drop
+ (get_local $i)
+ )
)
- (func $other
+ (func $other (type $0)
(local $j i32)
- (get_local $j)
+ (drop
+ (get_local $j)
+ )
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(local $i i32)
- (get_local $i)
+ (drop
+ (get_local $i)
+ )
)
- (func $other
+ (func $other (type $0)
(local $j i64)
- (get_local $j)
+ (drop
+ (get_local $j)
+ )
)
)
(module
- (func $erase-even-locals-with-different-names
+ (memory 0)
+ (type $0 (func))
+ (func $erase-even-locals-with-different-names (type $0)
(local $i i32)
- (set_local $i (i32.const 0))
+ (set_local $i
+ (i32.const 0)
+ )
)
- (func $other
+ (func $other (type $0)
(local $j i32)
- (set_local $j (i32.const 0))
+ (set_local $j
+ (i32.const 0)
+ )
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(local $i i32)
- (set_local $i (i32.const 0))
+ (set_local $i
+ (i32.const 0)
+ )
)
- (func $other
+ (func $other (type $0)
(local $j i64)
- (set_local $j (i64.const 0))
+ (set_local $j
+ (i64.const 0)
+ )
)
)
(module
- (func $keep2
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
(local $i i32)
- (set_local $i (i32.const 0))
+ (set_local $i
+ (i32.const 0)
+ )
)
- (func $other
+ (func $other (type $0)
(local $j i32)
- (set_local $j (i32.const 1))
+ (set_local $j
+ (i32.const 1)
+ )
)
)
(module
(memory 10)
- (func $erase
- (i32.load (i32.const 0))
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load (i32.const 0))
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.load16_s align=2 offset=3 (i32.const 0))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.load16_s offset=3
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.load8_s offset=3 (i32.const 0))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.load8_s offset=3
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.load8_s align=2 (i32.const 0))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.load8_s align=2
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load8_s align=2 offset=3 (i32.const 1))
+ (func $other (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 1)
+ )
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.load8_u align=2 offset=3 (i32.const 0))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.load8_u offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (i32.load8_s align=2 offset=3 (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (i32.load8_s offset=3 align=2
+ (i32.const 0)
+ )
+ )
)
)
-
(module
(memory 10)
- (func $erase
- (i32.store (i32.const 0) (i32.const 100))
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $erase (type $0)
+ (i32.store
+ (i32.const 0)
+ (i32.const 100)
+ )
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store (i32.const 0) (i32.const 100))
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (func $other (type $0)
+ (i32.store
+ (i32.const 0)
+ (i32.const 100)
+ )
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.store16 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (i32.store16 offset=3
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (func $other (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.store8 offset=3 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (i32.store8 offset=3
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (func $other (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.store8 align=2 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (i32.store8 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (func $other (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store8 align=2 offset=3 (i32.const 1) (i32.const 100))
+ (func $other (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 1)
+ (i32.const 100)
+ )
)
)
(module
(memory 10)
- (func $keep2
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 100))
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 100)
+ )
)
- (func $other
- (i32.store8 align=2 offset=3 (i32.const 0) (i32.const 101))
+ (func $other (type $0)
+ (i32.store8 offset=3 align=2
+ (i32.const 0)
+ (i32.const 101)
+ )
)
)
(module
- (func $keep2
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
- (i64.const 0)
+ (func $other (type $0)
+ (drop
+ (i64.const 0)
+ )
)
)
(module
- (func $keep2
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
- (f32.const 0)
+ (func $other (type $0)
+ (drop
+ (f32.const 0)
+ )
)
)
(module
- (func $keep2
- (i32.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i32.const 0)
+ )
)
- (func $other
- (f64.const 0)
+ (func $other (type $0)
+ (drop
+ (f64.const 0)
+ )
)
)
(module
- (func $keep2
- (i64.const 0)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (i64.const 0)
+ )
)
- (func $other
- (i64.const 1)
+ (func $other (type $0)
+ (drop
+ (i64.const 1)
+ )
)
)
(module
- (func $keep2
- (f32.const 0.1)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.const 0.10000000149011612)
+ )
)
- (func $other
- (f32.const -0.1)
+ (func $other (type $0)
+ (drop
+ (f32.const -0.10000000149011612)
+ )
)
)
(module
- (func $keep2
- (f64.const 0.1)
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f64.const 0.1)
+ )
)
- (func $other
- (f64.const 0.2)
+ (func $other (type $0)
+ (drop
+ (f64.const 0.2)
+ )
)
)
(module
- (func $erase
- (f32.abs (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.abs (f32.const 0))
+ (func $other (type $0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
+ )
)
)
(module
- (func $keep2
- (f32.abs (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.abs (f32.const 1))
+ (func $other (type $0)
+ (drop
+ (f32.abs
+ (f32.const 1)
+ )
+ )
)
)
(module
- (func $keep2
- (f32.abs (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.abs
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.neg (f32.const 0))
+ (func $other (type $0)
+ (drop
+ (f32.neg
+ (f32.const 0)
+ )
+ )
)
)
(module
- (func $erase
- (f32.add (f32.const 0) (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.add (f32.const 0) (f32.const 0))
+ (func $other (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
)
(module
- (func $keep2
- (f32.add (f32.const 0) (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.add (f32.const 0) (f32.const 1))
+ (func $other (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 1)
+ )
+ )
)
)
(module
- (func $keep2
- (f32.add (f32.const 0) (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.add (f32.const 1) (f32.const 0))
+ (func $other (type $0)
+ (drop
+ (f32.add
+ (f32.const 1)
+ (f32.const 0)
+ )
+ )
)
)
(module
- (func $keep2
- (f32.add (f32.const 0) (f32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep2 (type $0)
+ (drop
+ (f32.add
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
- (func $other
- (f32.sub (f32.const 0) (f32.const 0))
+ (func $other (type $0)
+ (drop
+ (f32.sub
+ (f32.const 0)
+ (f32.const 0)
+ )
+ )
)
)
(module
- (func $erase
- (select (i32.const 0) (i32.const 0) (i32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (select (i32.const 0) (i32.const 0) (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
)
(module
- (func $keep
- (select (i32.const 0) (i32.const 0) (i32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (select (i32.const 1) (i32.const 0) (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (select
+ (i32.const 1)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
)
(module
- (func $keep
- (select (i32.const 0) (i32.const 0) (i32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (select (i32.const 0) (i32.const 2) (i32.const 0))
+ (func $other (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 2)
+ (i32.const 0)
+ )
+ )
)
)
(module
- (func $keep
- (select (i32.const 0) (i32.const 0) (i32.const 0))
+ (memory 0)
+ (type $0 (func))
+ (func $keep (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
)
- (func $other
- (select (i32.const 0) (i32.const 0) (i32.const 3))
+ (func $other (type $0)
+ (drop
+ (select
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 3)
+ )
+ )
)
)
(module
- (func $erase
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
(return)
)
- (func $other
+ (func $other (type $0)
(return)
)
)
(module
- (func $erase (result i32)
- (return (i32.const 0))
+ (memory 0)
+ (type $0 (func (result i32)))
+ (func $erase (type $0) (result i32)
+ (return
+ (i32.const 0)
+ )
)
- (func $other (result i32)
- (return (i32.const 0))
+ (func $other (type $0) (result i32)
+ (return
+ (i32.const 0)
+ )
)
)
(module
- (func $keep (result i32)
- (return (i32.const 0))
+ (memory 0)
+ (type $0 (func (result i32)))
+ (func $keep (type $0) (result i32)
+ (return
+ (i32.const 0)
+ )
)
- (func $other (result i32)
- (return (i32.const 1))
+ (func $other (type $0) (result i32)
+ (return
+ (i32.const 1)
+ )
)
)
(module
- (func $erase
- (current_memory)
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (current_memory)
+ )
)
- (func $other
- (current_memory)
+ (func $other (type $0)
+ (drop
+ (current_memory)
+ )
)
)
(module
- (func $erase
- (grow_memory (i32.const 10))
+ (memory 0)
+ (type $0 (func))
+ (func $erase (type $0)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
+ )
)
- (func $other
- (grow_memory (i32.const 10))
+ (func $other (type $0)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
+ )
)
)
(module
- (func $keep
- (grow_memory (i32.const 10))
+ (memory 0)
+ (type $0 (func))
+ (func $keep (type $0)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
+ )
)
- (func $other
- (grow_memory (i32.const 11))
+ (func $other (type $0)
+ (drop
+ (grow_memory
+ (i32.const 11)
+ )
+ )
)
)
(module
- (func $keep
- (current_memory)
+ (memory 0)
+ (type $0 (func))
+ (func $keep (type $0)
+ (drop
+ (current_memory)
+ )
)
- (func $other
- (grow_memory (i32.const 10))
+ (func $other (type $0)
+ (drop
+ (grow_memory
+ (i32.const 10)
+ )
+ )
)
)
-
diff --git a/test/passes/metrics.txt b/test/passes/metrics.txt
index 97a241c0b..e5024b1af 100644
--- a/test/passes/metrics.txt
+++ b/test/passes/metrics.txt
@@ -1,10 +1,11 @@
Counts
[funcs] : 1
- [total] : 18
+ [total] : 24
[vars] : 1
binary : 1
block : 1
const : 12
+ drop : 6
if : 4
(module
(memory 256 256)
@@ -14,25 +15,37 @@ Counts
(block $block0
(if
(i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
)
(if
(i32.const 4)
- (i32.const 5)
- (i32.const 6)
- )
- (i32.eq
- (if
- (i32.const 4)
+ (drop
(i32.const 5)
+ )
+ (drop
(i32.const 6)
)
- (i32.const 177)
+ )
+ (drop
+ (i32.eq
+ (if
+ (i32.const 4)
+ (i32.const 5)
+ (i32.const 6)
+ )
+ (i32.const 177)
+ )
)
)
)
diff --git a/test/passes/metrics.wast b/test/passes/metrics.wast
index 67ad1fc5b..c1f278daa 100644
--- a/test/passes/metrics.wast
+++ b/test/passes/metrics.wast
@@ -1,29 +1,42 @@
(module
(memory 256 256)
- (func $ifs (param $x i32)
+ (type $0 (func (param i32)))
+ (func $ifs (type $0) (param $x i32)
(local $y f32)
- (block
+ (block $block0
(if
(i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
- (if_else
+ (if
(i32.const 0)
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
)
- (if_else
+ (if
(i32.const 4)
- (i32.const 5)
- (i32.const 6)
- )
- (i32.eq
- (if_else
- (i32.const 4)
+ (drop
(i32.const 5)
+ )
+ (drop
(i32.const 6)
)
- (i32.const 177)
+ )
+ (drop
+ (i32.eq
+ (if
+ (i32.const 4)
+ (i32.const 5)
+ (i32.const 6)
+ )
+ (i32.const 177)
+ )
)
)
)
diff --git a/test/passes/nm.txt b/test/passes/nm.txt
index 1129a16ad..8e3771ba2 100644
--- a/test/passes/nm.txt
+++ b/test/passes/nm.txt
@@ -1,6 +1,6 @@
$a : 1
- $b : 4
- $c : 11
+ $b : 5
+ $c : 13
(module
(memory 0)
(type $0 (func))
@@ -8,23 +8,29 @@
(nop)
)
(func $b (type $0)
- (loop $loop-out0 $loop-in1
- (nop)
- (i32.const 1000)
+ (drop
+ (loop $loop-out0 $loop-in1
+ (nop)
+ (i32.const 1000)
+ )
)
)
(func $c (type $0)
(block $top
(nop)
- (i32.const 1000)
- (i32.add
- (i32.add
- (i32.const 1001)
- (i32.const 1002)
- )
+ (drop
+ (i32.const 1000)
+ )
+ (drop
(i32.add
- (i32.const 1003)
- (i32.const 1004)
+ (i32.add
+ (i32.const 1001)
+ (i32.const 1002)
+ )
+ (i32.add
+ (i32.const 1003)
+ (i32.const 1004)
+ )
)
)
(br $top)
diff --git a/test/passes/nm.wast b/test/passes/nm.wast
index 72534e55d..d75a2b99e 100644
--- a/test/passes/nm.wast
+++ b/test/passes/nm.wast
@@ -1,29 +1,36 @@
(module
- (func $a
+ (memory 0)
+ (type $0 (func))
+ (func $a (type $0)
(nop)
)
- (func $b
- (loop
- (nop)
- (i32.const 1000)
+ (func $b (type $0)
+ (drop
+ (loop $loop-out0 $loop-in1
+ (nop)
+ (i32.const 1000)
+ )
)
)
- (func $c
+ (func $c (type $0)
(block $top
(nop)
- (i32.const 1000)
- (i32.add
- (i32.add
- (i32.const 1001)
- (i32.const 1002)
- )
+ (drop
+ (i32.const 1000)
+ )
+ (drop
(i32.add
- (i32.const 1003)
- (i32.const 1004)
+ (i32.add
+ (i32.const 1001)
+ (i32.const 1002)
+ )
+ (i32.add
+ (i32.const 1003)
+ (i32.const 1004)
+ )
)
)
(br $top)
)
)
)
-
diff --git a/test/passes/optimize-instructions.txt b/test/passes/optimize-instructions.txt
index a25c36a5d..e7af4848e 100644
--- a/test/passes/optimize-instructions.txt
+++ b/test/passes/optimize-instructions.txt
@@ -6,115 +6,165 @@
(i32.eqz
(get_local $i1)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
(if
(get_local $i1)
- (i32.const 12)
- (i32.const 11)
+ (drop
+ (i32.const 12)
+ )
+ (drop
+ (i32.const 11)
+ )
)
(if
(i64.eqz
(get_local $i2)
)
- (i32.const 11)
- (i32.const 12)
+ (drop
+ (i32.const 11)
+ )
+ (drop
+ (i32.const 12)
+ )
)
- (i32.le_s
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.le_s
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.lt_s
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.lt_s
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.ge_s
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.ge_s
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.gt_s
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.gt_s
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.le_u
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.le_u
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.lt_u
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.lt_u
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.ge_u
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.ge_u
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.gt_u
- (i32.const 1)
- (i32.const 2)
+ (drop
+ (i32.gt_u
+ (i32.const 1)
+ (i32.const 2)
+ )
)
- (i32.eqz
- (f32.gt
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (i32.eqz
+ (f32.gt
+ (f32.const 1)
+ (f32.const 2)
+ )
)
)
- (i32.eqz
- (f32.ge
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (i32.eqz
+ (f32.ge
+ (f32.const 1)
+ (f32.const 2)
+ )
)
)
- (i32.eqz
- (f32.lt
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (i32.eqz
+ (f32.lt
+ (f32.const 1)
+ (f32.const 2)
+ )
)
)
- (i32.eqz
- (f32.le
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (i32.eqz
+ (f32.le
+ (f32.const 1)
+ (f32.const 2)
+ )
)
)
- (i32.eqz
- (f64.gt
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (i32.eqz
+ (f64.gt
+ (f64.const 1)
+ (f64.const 2)
+ )
)
)
- (i32.eqz
- (f64.ge
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (i32.eqz
+ (f64.ge
+ (f64.const 1)
+ (f64.const 2)
+ )
)
)
- (i32.eqz
- (f64.lt
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (i32.eqz
+ (f64.lt
+ (f64.const 1)
+ (f64.const 2)
+ )
)
)
- (i32.eqz
- (f64.le
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (i32.eqz
+ (f64.le
+ (f64.const 1)
+ (f64.const 2)
+ )
)
)
- (f32.ne
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (f32.ne
+ (f32.const 1)
+ (f32.const 2)
+ )
)
- (f32.eq
- (f32.const 1)
- (f32.const 2)
+ (drop
+ (f32.eq
+ (f32.const 1)
+ (f32.const 2)
+ )
)
- (f64.ne
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (f64.ne
+ (f64.const 1)
+ (f64.const 2)
+ )
)
- (f64.eq
- (f64.const 1)
- (f64.const 2)
+ (drop
+ (f64.eq
+ (f64.const 1)
+ (f64.const 2)
+ )
)
)
)
diff --git a/test/passes/optimize-instructions.wast b/test/passes/optimize-instructions.wast
index bea01bd1c..f06d99fd9 100644
--- a/test/passes/optimize-instructions.wast
+++ b/test/passes/optimize-instructions.wast
@@ -1,48 +1,196 @@
(module
(memory 0)
- (func $f (param $i1 i32) (param $i2 i64)
+ (type $0 (func (param i32 i64)))
+ (func $f (type $0) (param $i1 i32) (param $i2 i64)
(if
(i32.eqz
(get_local $i1)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
(if
(i32.eqz
(get_local $i1)
)
- (i32.const 11)
- (i32.const 12)
+ (drop
+ (i32.const 11)
+ )
+ (drop
+ (i32.const 12)
+ )
)
(if
(i64.eqz
(get_local $i2)
)
- (i32.const 11)
- (i32.const 12)
- )
- (i32.eqz (i32.gt_s (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.ge_s (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.lt_s (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.le_s (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.gt_u (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.ge_u (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.lt_u (i32.const 1) (i32.const 2)))
- (i32.eqz (i32.le_u (i32.const 1) (i32.const 2)))
-
- (i32.eqz (f32.gt (f32.const 1) (f32.const 2)))
- (i32.eqz (f32.ge (f32.const 1) (f32.const 2)))
- (i32.eqz (f32.lt (f32.const 1) (f32.const 2)))
- (i32.eqz (f32.le (f32.const 1) (f32.const 2)))
- (i32.eqz (f64.gt (f64.const 1) (f64.const 2)))
- (i32.eqz (f64.ge (f64.const 1) (f64.const 2)))
- (i32.eqz (f64.lt (f64.const 1) (f64.const 2)))
- (i32.eqz (f64.le (f64.const 1) (f64.const 2)))
-
- (i32.eqz (f32.eq (f32.const 1) (f32.const 2)))
- (i32.eqz (f32.ne (f32.const 1) (f32.const 2)))
- (i32.eqz (f64.eq (f64.const 1) (f64.const 2)))
- (i32.eqz (f64.ne (f64.const 1) (f64.const 2)))
+ (drop
+ (i32.const 11)
+ )
+ (drop
+ (i32.const 12)
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.gt_s
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.ge_s
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.lt_s
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.le_s
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.gt_u
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.ge_u
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.lt_u
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (i32.le_u
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.gt
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.ge
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.lt
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.le
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.gt
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.ge
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.lt
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.le
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.eq
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f32.ne
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.eq
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.eqz
+ (f64.ne
+ (f64.const 1)
+ (f64.const 2)
+ )
+ )
+ )
)
)
-
diff --git a/test/passes/post-emscripten.txt b/test/passes/post-emscripten.txt
index c122b77d5..fd2ada3c1 100644
--- a/test/passes/post-emscripten.txt
+++ b/test/passes/post-emscripten.txt
@@ -2,29 +2,41 @@
(memory 256 256)
(type $0 (func (param i32)))
(func $b0 (type $0) (param $x i32)
- (i32.load offset=1
- (get_local $x)
- )
- (i32.load offset=8
- (get_local $x)
- )
- (i32.load offset=1023
- (get_local $x)
+ (drop
+ (i32.load offset=1
+ (get_local $x)
+ )
)
- (i32.load
- (i32.add
+ (drop
+ (i32.load offset=8
(get_local $x)
- (i32.const 1024)
)
)
- (i32.load
- (i32.add
+ (drop
+ (i32.load offset=1023
(get_local $x)
- (i32.const 2048)
)
)
- (i32.load offset=4
- (get_local $x)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 1024)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 2048)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=4
+ (get_local $x)
+ )
)
)
)
diff --git a/test/passes/post-emscripten.wast b/test/passes/post-emscripten.wast
index 1da5afd61..b554fea53 100644
--- a/test/passes/post-emscripten.wast
+++ b/test/passes/post-emscripten.wast
@@ -1,42 +1,54 @@
(module
(memory 256 256)
- (func $b0 (param $x i32)
- (i32.load
- (i32.add
- (get_local $x)
- (i32.const 1)
+ (type $0 (func (param i32)))
+ (func $b0 (type $0) (param $x i32)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 1)
+ )
)
)
- (i32.load
- (i32.add
- (get_local $x)
- (i32.const 8)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 8)
+ )
)
)
- (i32.load
- (i32.add
- (get_local $x)
- (i32.const 1023)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 1023)
+ )
)
)
- (i32.load
- (i32.add
- (get_local $x)
- (i32.const 1024)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 1024)
+ )
)
)
- (i32.load
- (i32.add
- (get_local $x)
- (i32.const 2048)
+ (drop
+ (i32.load
+ (i32.add
+ (get_local $x)
+ (i32.const 2048)
+ )
)
)
- (i32.load
- (i32.add
- (i32.const 4)
- (get_local $x)
+ (drop
+ (i32.load
+ (i32.add
+ (i32.const 4)
+ (get_local $x)
+ )
)
)
)
)
-
diff --git a/test/passes/precompute.txt b/test/passes/precompute.txt
index a3e8623f5..9c40148b6 100644
--- a/test/passes/precompute.txt
+++ b/test/passes/precompute.txt
@@ -2,14 +2,24 @@
(memory 0)
(type $0 (func (param i32)))
(func $x (type $0) (param $x i32)
- (i32.const 3)
- (i32.add
- (i32.const 1)
- (get_local $x)
+ (drop
+ (i32.const 3)
+ )
+ (drop
+ (i32.add
+ (i32.const 1)
+ (get_local $x)
+ )
+ )
+ (drop
+ (i32.const 6)
+ )
+ (drop
+ (i32.const -1)
+ )
+ (drop
+ (i32.const 3)
)
- (i32.const 6)
- (i32.const -1)
- (i32.const 3)
(loop $loop-out0 $in
(br $in)
)
diff --git a/test/passes/precompute.wast b/test/passes/precompute.wast
index 0282ac61b..c702f2e8b 100644
--- a/test/passes/precompute.wast
+++ b/test/passes/precompute.wast
@@ -1,19 +1,45 @@
(module
- (func $x (param $x i32)
- (i32.add (i32.const 1) (i32.const 2)) ;; precomputable
- (i32.add (i32.const 1) (get_local $x))
- (i32.add (i32.const 1) (i32.add (i32.const 2) (i32.const 3))) ;; cascade
- (i32.sub (i32.const 1) (i32.const 2))
- (i32.sub
+ (memory 0)
+ (type $0 (func (param i32)))
+ (func $x (type $0) (param $x i32)
+ (drop
(i32.add
- (i32.const 0)
- (i32.const 4)
+ (i32.const 1)
+ (i32.const 2)
)
- (i32.const 1)
)
- (loop $in ;; infinite loop
+ (drop
+ (i32.add
+ (i32.const 1)
+ (get_local $x)
+ )
+ )
+ (drop
+ (i32.add
+ (i32.const 1)
+ (i32.add
+ (i32.const 2)
+ (i32.const 3)
+ )
+ )
+ )
+ (drop
+ (i32.sub
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ (drop
+ (i32.sub
+ (i32.add
+ (i32.const 0)
+ (i32.const 4)
+ )
+ (i32.const 1)
+ )
+ )
+ (loop $loop-out0 $in
(br $in)
)
)
)
-
diff --git a/test/passes/remove-imports.txt b/test/passes/remove-imports.txt
index a285ef0eb..b8d45e8eb 100644
--- a/test/passes/remove-imports.txt
+++ b/test/passes/remove-imports.txt
@@ -5,7 +5,11 @@
(type $FUNCSIG$d (func (result f64)))
(func $nada (type $FUNCSIG$v)
(nop)
- (i32.const 0)
- (f64.const 0)
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (f64.const 0)
+ )
)
)
diff --git a/test/passes/remove-imports.wast b/test/passes/remove-imports.wast
index 00190a32d..babd60fdc 100644
--- a/test/passes/remove-imports.wast
+++ b/test/passes/remove-imports.wast
@@ -1,11 +1,18 @@
(module
(memory 1024 1024)
+ (type $FUNCSIG$v (func))
+ (type $FUNCSIG$i (func (result i32)))
+ (type $FUNCSIG$d (func (result f64)))
(import $waka "somewhere" "waka")
(import $waka-ret "somewhere" "waka-ret" (result i32))
(import $waka-ret-d "somewhere" "waka-ret-d" (result f64))
- (func $nada
+ (func $nada (type $FUNCSIG$v)
(call_import $waka)
- (call_import $waka-ret)
- (call_import $waka-ret-d)
+ (drop
+ (call_import $waka-ret)
+ )
+ (drop
+ (call_import $waka-ret-d)
+ )
)
)
diff --git a/test/passes/remove-unused-brs.txt b/test/passes/remove-unused-brs.txt
index 4290d9e05..de6dc4779 100644
--- a/test/passes/remove-unused-brs.txt
+++ b/test/passes/remove-unused-brs.txt
@@ -9,7 +9,11 @@
)
(func $b1 (type $0) (param $i1 i32)
(block $topmost
- (i32.const 0)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ )
)
)
(func $b2 (type $0) (param $i1 i32)
@@ -27,14 +31,22 @@
(func $b4 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (i32.const 0)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ )
)
)
)
(func $b5 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (i32.const 0)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ )
)
)
)
@@ -47,9 +59,13 @@
)
(func $b7 (type $0) (param $i1 i32)
(block $topmost
- (br_if $topmost
- (i32.const 0)
- (i32.const 1)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ (br_if $topmost
+ (i32.const 1)
+ )
)
)
)
@@ -74,9 +90,13 @@
(func $b10 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br_if $topmost
- (i32.const 0)
- (i32.const 1)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ (br_if $topmost
+ (i32.const 1)
+ )
)
)
)
@@ -84,9 +104,13 @@
(func $b11 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br_if $inner
- (i32.const 0)
- (i32.const 1)
+ (block $block0
+ (drop
+ (i32.const 0)
+ )
+ (br_if $inner
+ (i32.const 1)
+ )
)
)
)
@@ -95,12 +119,24 @@
(block $topmost
(select
(block $block1
- (i32.const 12)
- (i32.const 1)
+ (drop
+ (i32.const 12)
+ )
+ (block $block2
+ (drop
+ (i32.const 1)
+ )
+ )
)
(block $block3
- (i32.const 27)
- (i32.const 2)
+ (drop
+ (i32.const 27)
+ )
+ (block $block4
+ (drop
+ (i32.const 2)
+ )
+ )
)
(i32.const 1)
)
@@ -111,14 +147,18 @@
(if
(i32.const 1)
(block $block1
- (i32.const 12)
+ (drop
+ (i32.const 12)
+ )
(br_if $topmost
(i32.const 1)
(i32.const 1)
)
)
(block $block3
- (i32.const 27)
+ (drop
+ (i32.const 27)
+ )
(br $topmost
(i32.const 2)
)
@@ -149,9 +189,13 @@
)
(func $b15 (type $1)
(block $topmost
- (br_if $topmost
- (i32.const 0)
+ (if
(i32.const 18)
+ (block $block1
+ (drop
+ (i32.const 0)
+ )
+ )
)
)
)
@@ -187,7 +231,9 @@
)
(block $a
(select
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
(block $block6
)
(i32.const 0)
@@ -197,7 +243,9 @@
(select
(block $block8
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
(i32.const 0)
)
)
@@ -243,40 +291,69 @@
(block $a
(if
(i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
(block $block2
- (br $a
- (i32.const 2)
+ (block $block3
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
+ (drop
+ (i32.const 3)
)
- (i32.const 3)
)
)
(if
(i32.const 0)
(block $block4
- (br $a
- (i32.const 2)
+ (block $block5
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
+ (drop
+ (i32.const 3)
)
- (i32.const 3)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(if
(block $block6
- (br $a
- (i32.const 2)
+ (block $block7
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
)
(i32.const 3)
)
- (i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 1)
+ )
)
(select
(block $a
- (i32.const 1)
+ (block $block11
+ (drop
+ (i32.const 1)
+ )
+ )
)
(block $a
- (i32.const 2)
+ (block $block13
+ (drop
+ (i32.const 2)
+ )
+ )
)
(block $a
(i32.const 0)
@@ -287,37 +364,54 @@
(func $side-effects-and-order (type $2) (result i32)
(local $x i32)
(block $do-once$0
- (br_if $do-once$0
- (i32.const 0)
+ (if
(call $b13)
+ (block $block1
+ (drop
+ (i32.const 0)
+ )
+ (br $do-once$0)
+ )
+ )
+ (drop
+ (i32.const 1)
)
- (i32.const 1)
)
(block $do-once$0
(if
(call $b13)
- (br $do-once$0
- (call $b14)
+ (block $block3
+ (drop
+ (call $b14)
+ )
+ (br $do-once$0)
)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(block $do-once$0
(if
(i32.const 0)
- (br $do-once$0
- (call $b14)
+ (block $block5
+ (drop
+ (call $b14)
+ )
+ (br $do-once$0)
)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(block $do-once$0
(if
- (set_local $x
+ (tee_local $x
(i32.const 1)
)
(br $do-once$0
- (set_local $x
+ (tee_local $x
(i32.const 2)
)
)
diff --git a/test/passes/remove-unused-brs.wast b/test/passes/remove-unused-brs.wast
index b7dc1cc25..f3d20f5e0 100644
--- a/test/passes/remove-unused-brs.wast
+++ b/test/passes/remove-unused-brs.wast
@@ -1,126 +1,172 @@
(module
(memory 256 256)
- (func $b0-yes (param $i1 i32)
+ (type $0 (func (param i32)))
+ (type $1 (func))
+ (type $2 (func (result i32)))
+ (func $b0-yes (type $0) (param $i1 i32)
(block $topmost
(br $topmost)
)
)
- (func $b1 (param $i1 i32)
+ (func $b1 (type $0) (param $i1 i32)
(block $topmost
- (br $topmost
- (i32.const 0)
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $topmost)
)
)
)
- (func $b2 (param $i1 i32)
+ (func $b2 (type $0) (param $i1 i32)
(block $topmost
(block $inner
(br $topmost)
)
)
)
- (func $b3-yes (param $i1 i32)
+ (func $b3-yes (type $0) (param $i1 i32)
(block $topmost
(block $inner
(br $inner)
)
)
)
- (func $b4 (param $i1 i32)
+ (func $b4 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br $topmost
- (i32.const 0)
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $topmost)
)
)
)
)
- (func $b5 (param $i1 i32)
+ (func $b5 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br $inner
- (i32.const 0)
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $inner)
)
)
)
)
- (func $b6 (param $i1 i32)
- (block $topmost
- (br_if $topmost (i32.const 1))
- )
- )
- (func $b7 (param $i1 i32)
+ (func $b6 (type $0) (param $i1 i32)
(block $topmost
(br_if $topmost
- (i32.const 0)
(i32.const 1)
)
)
)
- (func $b8 (param $i1 i32)
+ (func $b7 (type $0) (param $i1 i32)
(block $topmost
- (block $inner
- (br_if $topmost (i32.const 1))
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br_if $topmost
+ (i32.const 1)
+ )
)
)
)
- (func $b9 (param $i1 i32)
+ (func $b8 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br_if $topmost (i32.const 1))
+ (br_if $topmost
+ (i32.const 1)
+ )
)
)
)
- (func $b10 (param $i1 i32)
+ (func $b9 (type $0) (param $i1 i32)
(block $topmost
(block $inner
(br_if $topmost
- (i32.const 0)
(i32.const 1)
)
)
)
)
- (func $b11 (param $i1 i32)
+ (func $b10 (type $0) (param $i1 i32)
(block $topmost
(block $inner
- (br_if $inner
- (i32.const 0)
- (i32.const 1)
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br_if $topmost
+ (i32.const 1)
+ )
)
)
)
)
- (func $b12-yes
+ (func $b11 (type $0) (param $i1 i32)
(block $topmost
- (if_else (i32.const 1)
+ (block $inner
(block
- (i32.const 12)
- (br $topmost
+ (drop
+ (i32.const 0)
+ )
+ (br_if $inner
(i32.const 1)
)
)
- (block
- (i32.const 27)
- (br $topmost
- (i32.const 2)
+ )
+ )
+ )
+ (func $b12-yes (type $1)
+ (block $topmost
+ (if
+ (i32.const 1)
+ (block $block1
+ (drop
+ (i32.const 12)
+ )
+ (block
+ (drop
+ (i32.const 1)
+ )
+ (br $topmost)
+ )
+ )
+ (block $block3
+ (drop
+ (i32.const 27)
+ )
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (br $topmost)
)
)
)
)
)
- (func $b13 (result i32)
+ (func $b13 (type $2) (result i32)
(block $topmost
- (if_else (i32.const 1)
- (block
- (i32.const 12)
+ (if
+ (i32.const 1)
+ (block $block1
+ (drop
+ (i32.const 12)
+ )
(br_if $topmost
(i32.const 1)
(i32.const 1)
)
)
- (block
- (i32.const 27)
+ (block $block3
+ (drop
+ (i32.const 27)
+ )
(br $topmost
(i32.const 2)
)
@@ -129,19 +175,20 @@
(i32.const 3)
)
)
- (func $b14 (result i32)
+ (func $b14 (type $2) (result i32)
(block $topmost
- (if_else (i32.const 1)
- (block
+ (if
+ (i32.const 1)
+ (block $block1
(i32.const 12)
)
- (block
+ (block $block3
(i32.const 27)
)
)
)
)
- (func $b15
+ (func $b15 (type $1)
(block $topmost
(if
(i32.const 17)
@@ -149,15 +196,20 @@
)
)
)
- (func $b15
+ (func $b15 (type $1)
(block $topmost
(if
(i32.const 18)
- (br $topmost (i32.const 0))
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $topmost)
+ )
)
)
)
- (func $b16
+ (func $b16 (type $1)
(block $a
(block $b
(block $c
@@ -186,14 +238,14 @@
(br $a)
)
)
- (func $b17
+ (func $b17 (type $1)
(block $a
(if
(i32.const 0)
- (block
+ (block $block1
(br $a)
)
- (block
+ (block $block3
(br $a)
)
)
@@ -201,8 +253,10 @@
(block $a
(if
(i32.const 0)
- (i32.const 1)
- (block
+ (drop
+ (i32.const 1)
+ )
+ (block $block6
(br $a)
)
)
@@ -210,131 +264,192 @@
(block $a
(if
(i32.const 0)
- (block
+ (block $block8
(br $a)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
)
(block $c
(block $b
(if
(i32.const 0)
- (block
+ (block $block11
(br $b)
)
- (block
+ (block $block13
(br $c)
)
)
)
)
)
- (func $ret-1
+ (func $ret-1 (type $1)
(return)
)
- (func $ret-2
- (block
- (block
+ (func $ret-2 (type $1)
+ (block $block0
+ (block $block1
(return)
)
)
)
- (func $ret-3
- (block
+ (func $ret-3 (type $1)
+ (block $block0
(if
(i32.const 0)
(return)
- (block
+ (block $block3
(return)
)
)
)
)
- (func $ret-value (result i32)
- (block
- (block
- (return (i32.const 1))
+ (func $ret-value (type $2) (result i32)
+ (block $block0
+ (block $block1
+ (return
+ (i32.const 1)
+ )
)
)
)
- (func $no-select-but-the-last
+ (func $no-select-but-the-last (type $1)
(block $a
(if
(i32.const 0)
- (i32.const 1)
- (block
- (br $a (i32.const 2))
- (i32.const 3)
+ (drop
+ (i32.const 1)
+ )
+ (block $block2
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
+ (drop
+ (i32.const 3)
+ )
)
)
(if
(i32.const 0)
- (block
- (br $a (i32.const 2))
- (i32.const 3)
+ (block $block4
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
+ (drop
+ (i32.const 3)
+ )
+ )
+ (drop
+ (i32.const 1)
)
- (i32.const 1)
)
(if
- (block
- (br $a (i32.const 2))
+ (block $block6
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
(i32.const 3)
)
- (i32.const 0)
- (i32.const 1)
+ (drop
+ (i32.const 0)
+ )
+ (drop
+ (i32.const 1)
+ )
)
- (if ;; brs to the inner $a's get removed, the it is selectifiable
+ (if
(block $a
- (br $a (i32.const 0))
+ (br $a
+ (i32.const 0)
+ )
)
(block $a
- (br $a (i32.const 1))
+ (block
+ (drop
+ (i32.const 1)
+ )
+ (br $a)
+ )
)
(block $a
- (br $a (i32.const 2))
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (br $a)
+ )
)
)
)
)
- (func $side-effects-and-order (result i32)
+ (func $side-effects-and-order (type $2) (result i32)
(local $x i32)
(block $do-once$0
(if
(call $b13)
- (br $do-once$0
- (i32.const 0)
+ (block
+ (drop
+ (i32.const 0)
+ )
+ (br $do-once$0)
)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(block $do-once$0
(if
(call $b13)
- (br $do-once$0
- (call $b14)
+ (block
+ (drop
+ (call $b14)
+ )
+ (br $do-once$0)
)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(block $do-once$0
(if
(i32.const 0)
- (br $do-once$0
- (call $b14)
+ (block
+ (drop
+ (call $b14)
+ )
+ (br $do-once$0)
)
)
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
)
(block $do-once$0
(if
- (set_local $x (i32.const 1))
+ (tee_local $x
+ (i32.const 1)
+ )
(br $do-once$0
- (set_local $x (i32.const 2))
+ (tee_local $x
+ (i32.const 2)
+ )
)
)
(i32.const 1)
)
)
)
-
diff --git a/test/passes/remove-unused-functions.wast b/test/passes/remove-unused-functions.wast
index 4c89804bf..9449a25cb 100644
--- a/test/passes/remove-unused-functions.wast
+++ b/test/passes/remove-unused-functions.wast
@@ -1,46 +1,47 @@
(module
+ (memory 0)
(start $start)
+ (type $0 (func))
(export "exported" $exported)
(table $called_indirect)
- (func $start
+ (func $start (type $0)
(call $called0)
)
- (func $called0
+ (func $called0 (type $0)
(call $called1)
)
- (func $called1
+ (func $called1 (type $0)
(nop)
)
- (func $called_indirect
+ (func $called_indirect (type $0)
(nop)
)
- (func $exported
+ (func $exported (type $0)
(call $called2)
)
- (func $called2
+ (func $called2 (type $0)
(call $called2)
(call $called3)
)
- (func $called3
+ (func $called3 (type $0)
(call $called4)
)
- (func $called4
+ (func $called4 (type $0)
(call $called3)
)
- (func $remove0
+ (func $remove0 (type $0)
(call $remove1)
)
- (func $remove1
+ (func $remove1 (type $0)
(nop)
)
- (func $remove2
+ (func $remove2 (type $0)
(call $remove2)
)
- (func $remove3
+ (func $remove3 (type $0)
(call $remove4)
)
- (func $remove4
+ (func $remove4 (type $0)
(call $remove3)
)
)
-
diff --git a/test/passes/remove-unused-names.wast b/test/passes/remove-unused-names.wast
index 9423b2675..4b3365bf8 100644
--- a/test/passes/remove-unused-names.wast
+++ b/test/passes/remove-unused-names.wast
@@ -1,11 +1,13 @@
(module
(memory 256 256)
- (func $b0 (param $i1 i32) (result i32)
+ (type $0 (func (param i32) (result i32)))
+ (type $1 (func))
+ (func $b0 (type $0) (param $i1 i32) (result i32)
(block $topmost
(i32.const 0)
)
)
- (func $loops
+ (func $loops (type $1)
(loop $out $in
(br $out)
(br $in)
@@ -37,20 +39,20 @@
(br $in)
)
)
- (loop $in
+ (loop $loop-out0 $in
(block $out
(br $out)
(br $in)
)
)
(block $out
- (loop $in
+ (loop $loop-out1 $in
(br $out)
(br $in)
)
)
)
- (func $merges
+ (func $merges (type $1)
(block $a
(block $b
(br $a)
@@ -59,14 +61,17 @@
)
(block $a
(block $b
- (br_table $a $b (i32.const 3))
+ (br_table $a $b
+ (i32.const 3)
+ )
)
)
(block $a
(block $b
- (br_table $b $a (i32.const 3))
+ (br_table $b $a
+ (i32.const 3)
+ )
)
)
)
)
-
diff --git a/test/passes/remove-unused-names_merge-blocks.txt b/test/passes/remove-unused-names_merge-blocks.txt
index 88d284a5a..a82bf489f 100644
--- a/test/passes/remove-unused-names_merge-blocks.txt
+++ b/test/passes/remove-unused-names_merge-blocks.txt
@@ -16,7 +16,9 @@
(nop)
)
(func $b0-yes (type $i) (param $i1 i32)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
(func $b0-no (type $i) (param $i1 i32)
(block $topmost
@@ -32,313 +34,577 @@
)
)
(func $b1-yes (type $i) (param $i1 i32)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
)
(func $b2-yes (type $i) (param $i1 i32)
- (i32.const 5)
- (i32.const 10)
- (i32.const 15)
+ (drop
+ (i32.const 5)
+ )
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 15)
+ )
)
(func $b3-yes (type $i) (param $i1 i32)
- (i32.const 3)
- (i32.const 6)
- (i32.const 10)
- (i32.const 15)
- (i32.const 20)
+ (drop
+ (i32.const 3)
+ )
+ (drop
+ (i32.const 6)
+ )
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 15)
+ )
+ (drop
+ (i32.const 20)
+ )
)
(func $b4 (type $i) (param $i1 i32)
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
)
(func $b5 (type $i) (param $i1 i32)
(block $middle
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
(br $middle)
)
)
(func $b6 (type $i) (param $i1 i32)
- (i32.const 5)
+ (drop
+ (i32.const 5)
+ )
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
- (i32.const 15)
+ (drop
+ (i32.const 15)
+ )
)
(func $b7 (type $i) (param $i1 i32)
- (i32.const 3)
+ (drop
+ (i32.const 3)
+ )
(block $middle
- (i32.const 6)
+ (drop
+ (i32.const 6)
+ )
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
- (i32.const 15)
+ (drop
+ (i32.const 15)
+ )
(br $middle)
)
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
)
(func $unary (type $3)
(local $x i32)
- (i32.eqz
+ (drop
+ (i32.eqz
+ (block
+ (i32.const 10)
+ )
+ )
+ )
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
+ (i32.eqz
+ (i32.const 20)
+ )
)
)
- (i32.const 10)
- (i32.eqz
- (i32.const 20)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (i32.eqz
+ (i32.const 30)
+ )
+ )
)
- (i32.const 10)
- (i32.const 20)
- (i32.eqz
- (i32.const 30)
+ (drop
+ (i32.const 10)
)
- (i32.const 10)
(set_local $x
(i32.const 20)
)
- (i32.const 10)
- (i32.load
- (i32.const 20)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (i32.load
+ (i32.const 20)
+ )
+ )
+ )
+ (drop
+ (i32.const 10)
)
- (i32.const 10)
(return
(unreachable)
)
)
(func $binary (type $3)
- (i32.add
+ (drop
+ (i32.add
+ (block
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ )
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
+ (i32.add
+ (i32.const 20)
+ (i32.const 30)
+ )
)
- (i32.const 20)
)
- (i32.const 10)
- (i32.add
- (i32.const 20)
- (i32.const 30)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (i32.add
+ (i32.const 30)
+ (i32.const 40)
+ )
+ )
)
- (i32.const 10)
- (i32.const 20)
- (i32.add
- (i32.const 30)
- (i32.const 40)
+ (drop
+ (i32.add
+ (i32.const 10)
+ (block
+ (i32.const 20)
+ )
+ )
)
- (i32.add
- (i32.const 10)
+ (drop
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
+ (i32.add
+ (i32.const 10)
+ (i32.const 30)
+ )
)
)
- (i32.const 20)
- (i32.add
- (i32.const 10)
- (i32.const 30)
+ (drop
+ (block
+ (drop
+ (i32.const 20)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (i32.add
+ (i32.const 10)
+ (i32.const 40)
+ )
+ )
)
- (i32.const 20)
- (i32.const 30)
- (i32.add
- (i32.const 10)
- (i32.const 40)
+ (drop
+ (i32.add
+ (block
+ (i32.const 10)
+ )
+ (block
+ (i32.const 20)
+ )
+ )
)
- (i32.add
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (i32.add
+ (i32.const 20)
+ (i32.const 40)
+ )
)
+ )
+ (drop
(block
- (i32.const 20)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (drop
+ (i32.const 40)
+ )
+ (drop
+ (i32.const 50)
+ )
+ (i32.add
+ (i32.const 30)
+ (i32.const 60)
+ )
)
)
- (i32.const 10)
- (i32.const 30)
- (i32.add
+ (drop
(i32.const 20)
- (i32.const 40)
- )
- (i32.const 10)
- (i32.const 20)
- (i32.const 40)
- (i32.const 50)
- (i32.add
- (i32.const 30)
- (i32.const 60)
)
- (i32.const 20)
(i32.store
(i32.const 10)
(i32.const 30)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(i32.store
(i32.const 20)
(i32.const 30)
)
- (i32.add
- (unreachable)
- (block
- (i32.const 10)
- (i32.const 20)
+ (drop
+ (i32.add
+ (unreachable)
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
)
- (unreachable)
- (i32.const 20)
- (i32.add
- (i32.const 10)
- (i32.const 30)
+ (drop
+ (block
+ (unreachable)
+ (drop
+ (i32.const 20)
+ )
+ (i32.add
+ (i32.const 10)
+ (i32.const 30)
+ )
+ )
)
)
(func $trinary (type $3)
- (i32.const 10)
- (i32.const 30)
- (i32.const 50)
- (select
- (i32.const 20)
- (i32.const 40)
- (i32.const 60)
- )
- (i32.const 20)
- (i32.const 40)
- (select
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (drop
+ (i32.const 50)
+ )
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (i32.const 60)
+ )
)
- (i32.const 30)
- (i32.const 50)
)
- (i32.const 10)
- (i32.const 40)
- (select
- (i32.const 20)
+ (drop
(block
- (i32.const 30)
+ (drop
+ (i32.const 20)
+ )
+ (drop
+ (i32.const 40)
+ )
+ (select
+ (block
+ (i32.const 10)
+ )
+ (i32.const 30)
+ (i32.const 50)
+ )
)
- (i32.const 50)
)
- (i32.const 10)
- (i32.const 30)
- (select
- (i32.const 20)
- (i32.const 40)
+ (drop
(block
- (i32.const 50)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 40)
+ )
+ (select
+ (i32.const 20)
+ (block
+ (i32.const 30)
+ )
+ (i32.const 50)
+ )
)
)
- (i32.const 30)
- (select
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (block
+ (i32.const 50)
+ )
+ )
)
+ )
+ (drop
(block
- (i32.const 20)
+ (drop
+ (i32.const 30)
+ )
+ (select
+ (block
+ (i32.const 10)
+ )
+ (block
+ (i32.const 20)
+ )
+ (i32.const 40)
+ )
)
- (i32.const 40)
)
- (i32.const 20)
- (select
+ (drop
(block
- (i32.const 10)
+ (drop
+ (i32.const 20)
+ )
+ (select
+ (block
+ (i32.const 10)
+ )
+ (i32.const 30)
+ (block
+ (i32.const 40)
+ )
+ )
)
- (i32.const 30)
+ )
+ (drop
(block
- (i32.const 40)
+ (drop
+ (i32.const 10)
+ )
+ (select
+ (i32.const 20)
+ (block
+ (i32.const 30)
+ )
+ (block
+ (i32.const 40)
+ )
+ )
)
)
- (i32.const 10)
- (select
- (i32.const 20)
+ (drop
(block
- (i32.const 30)
+ (unreachable)
+ (drop
+ (i32.const 30)
+ )
+ (drop
+ (i32.const 50)
+ )
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (i32.const 60)
+ )
)
+ )
+ (drop
(block
- (i32.const 40)
+ (drop
+ (i32.const 10)
+ )
+ (select
+ (unreachable)
+ (block
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
+ )
)
)
- (unreachable)
- (i32.const 30)
- (i32.const 50)
- (select
- (i32.const 20)
- (i32.const 40)
- (i32.const 60)
- )
- (i32.const 10)
- (select
- (unreachable)
+ (drop
(block
- (i32.const 30)
- (i32.const 40)
+ (drop
+ (i32.const 10)
+ )
+ (unreachable)
+ (drop
+ (i32.const 50)
+ )
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (i32.const 60)
+ )
)
+ )
+ (drop
(block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (select
+ (i32.const 20)
+ (unreachable)
+ (block
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
+ )
)
)
- (i32.const 10)
- (unreachable)
- (i32.const 50)
- (select
- (i32.const 20)
- (i32.const 40)
- (i32.const 60)
- )
- (i32.const 10)
- (i32.const 30)
- (select
- (i32.const 20)
- (unreachable)
+ (drop
(block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (unreachable)
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (i32.const 60)
+ )
)
)
- (i32.const 10)
- (i32.const 30)
- (unreachable)
- (select
- (i32.const 20)
- (i32.const 40)
- (i32.const 60)
- )
- (i32.const 10)
- (i32.const 30)
- (i32.const 50)
- (select
- (i32.const 20)
- (i32.const 40)
- (unreachable)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (drop
+ (i32.const 50)
+ )
+ (select
+ (i32.const 20)
+ (i32.const 40)
+ (unreachable)
+ )
+ )
)
)
(func $breaks (type $3)
(block $out
- (i32.const 10)
- (br $out
- (i32.const 20)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ )
+ (br $out)
+ (drop
+ (i32.const 10)
)
- (i32.const 10)
(br_if $out
(i32.const 20)
)
- (i32.const 10)
- (i32.const 30)
+ (drop
+ (block
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ )
+ (drop
+ (i32.const 30)
+ )
(br_if $out
- (i32.const 20)
(i32.const 40)
)
- (i32.const 10)
- (br_table $out $out
- (i32.const 20)
+ (drop
+ (i32.const 10)
)
- (i32.const 10)
- (i32.const 30)
(br_table $out $out
(i32.const 20)
- (i32.const 40)
)
+ (drop
+ (block $out2
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (br_table $out2 $out2
+ (i32.const 20)
+ (i32.const 40)
+ )
+ )
+ )
+ (unreachable)
)
)
(func $calls (type $3)
@@ -347,65 +613,103 @@
(i32.const 10)
)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(call $call-i
(i32.const 20)
)
- (i32.const 10)
- (i32.const 20)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
(call $call-i
(i32.const 30)
)
- (i32.const 10)
- (i32.const 30)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
(call $call-ii
(i32.const 20)
(i32.const 40)
)
(unreachable)
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(call $call-ii
(i32.const 10)
(i32.const 30)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(call $call-ii
(unreachable)
(block
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
(i32.const 30)
)
)
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(unreachable)
(call $call-ii
(i32.const 20)
(i32.const 30)
)
- (i32.const 10)
- (i32.const 30)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
(call $call-ii
(i32.const 20)
(unreachable)
)
- (i32.const 10)
- (i32.const 30)
- (i32.const 50)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (drop
+ (i32.const 50)
+ )
(call $call-iii
(i32.const 20)
(i32.const 40)
(i32.const 60)
)
- (i32.const 10)
- (i32.const 40)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 40)
+ )
(call $call-iii
(i32.const 20)
(i32.const 30)
(i32.const 50)
)
- (i32.const 10)
- (i32.const 30)
- (i32.const 50)
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (drop
+ (i32.const 50)
+ )
(call_indirect $ii
(i32.const 20)
(i32.const 40)
@@ -414,11 +718,15 @@
(call_indirect $ii
(unreachable)
(block
- (i32.const 30)
+ (drop
+ (i32.const 30)
+ )
(i32.const 40)
)
(block
- (i32.const 50)
+ (drop
+ (i32.const 50)
+ )
(i32.const 60)
)
)
diff --git a/test/passes/remove-unused-names_merge-blocks.wast b/test/passes/remove-unused-names_merge-blocks.wast
index 85bb11da6..562c5bbba 100644
--- a/test/passes/remove-unused-names_merge-blocks.wast
+++ b/test/passes/remove-unused-names_merge-blocks.wast
@@ -1,23 +1,29 @@
(module
(memory 256 256)
(type $i (func (param i32)))
- (type $ii (func (param i32) (param i32)))
- (type $iii (func (param i32) (param i32) (param i32)))
+ (type $ii (func (param i32 i32)))
+ (type $iii (func (param i32 i32 i32)))
+ (type $3 (func))
(table $call-i)
- (func $call-i (param i32)
+ (func $call-i (type $i) (param $0 i32)
+ (nop)
)
- (func $call-ii (param i32) (param i32)
+ (func $call-ii (type $ii) (param $0 i32) (param $1 i32)
+ (nop)
)
- (func $call-iii (param i32) (param i32) (param i32)
+ (func $call-iii (type $iii) (param $0 i32) (param $1 i32) (param $2 i32)
+ (nop)
)
- (func $b0-yes (param $i1 i32)
+ (func $b0-yes (type $i) (param $i1 i32)
(block $topmost
- (block
- (i32.const 10)
+ (block $block0
+ (drop
+ (i32.const 10)
+ )
)
)
)
- (func $b0-no (param $i1 i32)
+ (func $b0-no (type $i) (param $i1 i32)
(block $topmost
(block $block0
(br $block0)
@@ -25,577 +31,836 @@
(br $topmost)
)
)
- (func $b0-br-but-ok (param $i1 i32)
+ (func $b0-br-but-ok (type $i) (param $i1 i32)
(block $topmost
(block $block0
(br $topmost)
)
)
)
- (func $b1-yes (param $i1 i32)
+ (func $b1-yes (type $i) (param $i1 i32)
(block $topmost
- (block
- (block
- (i32.const 10)
+ (block $block0
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
)
)
)
)
- (func $b2-yes (param $i1 i32)
+ (func $b2-yes (type $i) (param $i1 i32)
(block $topmost
- (i32.const 5)
- (block
- (i32.const 10)
+ (drop
+ (i32.const 5)
+ )
+ (block $block0
+ (drop
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.const 15)
)
- (i32.const 15)
)
)
- (func $b3-yes (param $i1 i32)
+ (func $b3-yes (type $i) (param $i1 i32)
(block $topmost
- (i32.const 3)
- (block
- (i32.const 6)
- (block
- (i32.const 10)
+ (drop
+ (i32.const 3)
+ )
+ (block $block0
+ (drop
+ (i32.const 6)
)
- (i32.const 15)
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.const 15)
+ )
+ )
+ (drop
+ (i32.const 20)
)
- (i32.const 20)
)
)
- (func $b4 (param $i1 i32)
+ (func $b4 (type $i) (param $i1 i32)
(block $topmost
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
)
)
- (func $b5 (param $i1 i32)
+ (func $b5 (type $i) (param $i1 i32)
(block $topmost
(block $middle
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
(br $middle)
)
)
)
- (func $b6 (param $i1 i32)
+ (func $b6 (type $i) (param $i1 i32)
(block $topmost
- (i32.const 5)
+ (drop
+ (i32.const 5)
+ )
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
- (i32.const 15)
+ (drop
+ (i32.const 15)
+ )
)
)
- (func $b7 (param $i1 i32)
+ (func $b7 (type $i) (param $i1 i32)
(block $topmost
- (i32.const 3)
+ (drop
+ (i32.const 3)
+ )
(block $middle
- (i32.const 6)
+ (drop
+ (i32.const 6)
+ )
(block $inner
- (i32.const 10)
+ (drop
+ (i32.const 10)
+ )
(br $inner)
)
- (i32.const 15)
+ (drop
+ (i32.const 15)
+ )
(br $middle)
)
- (i32.const 20)
+ (drop
+ (i32.const 20)
+ )
)
)
- (func $unary
+ (func $unary (type $3)
(local $x i32)
- (i32.eqz
- (block
- (i32.const 10)
+ (drop
+ (i32.eqz
+ (block $block0
+ (i32.const 10)
+ )
)
)
- (i32.eqz
- (block
- (i32.const 10)
- (i32.const 20)
+ (drop
+ (i32.eqz
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
)
- (i32.eqz
- (block
- (i32.const 10)
- (i32.const 20)
- (i32.const 30)
+ (drop
+ (i32.eqz
+ (block $block2
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
)
)
(set_local $x
- (block
- (i32.const 10)
+ (block $block3
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
)
- (i32.load
- (block
- (i32.const 10)
- (i32.const 20)
+ (drop
+ (i32.load
+ (block $block4
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
)
(return
- (block
- (i32.const 10)
+ (block $block5
+ (drop
+ (i32.const 10)
+ )
(unreachable)
)
)
)
- (func $binary
- (i32.add
- (block
- (i32.const 10)
- )
- (i32.const 20)
- )
- (i32.add
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (i32.const 30)
- )
- (i32.add
- (block
- (i32.const 10)
- (i32.const 20)
- (i32.const 30)
- )
- (i32.const 40)
- )
- (i32.add
- (i32.const 10)
- (block
+ (func $binary (type $3)
+ (drop
+ (i32.add
+ (block $block0
+ (i32.const 10)
+ )
(i32.const 20)
)
)
- (i32.add
- (i32.const 10)
- (block
- (i32.const 20)
+ (drop
+ (i32.add
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
(i32.const 30)
)
)
- (i32.add
- (i32.const 10)
- (block
- (i32.const 20)
- (i32.const 30)
+ (drop
+ (i32.add
+ (block $block2
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
(i32.const 40)
)
)
- (i32.add
- (block
+ (drop
+ (i32.add
(i32.const 10)
+ (block $block3
+ (i32.const 20)
+ )
)
- (block
- (i32.const 20)
+ )
+ (drop
+ (i32.add
+ (i32.const 10)
+ (block $block4
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
)
)
- (i32.add
- (block
+ (drop
+ (i32.add
(i32.const 10)
- (i32.const 20)
+ (block $block5
+ (drop
+ (i32.const 20)
+ )
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
)
- (block
- (i32.const 30)
- (i32.const 40)
+ )
+ (drop
+ (i32.add
+ (block $block6
+ (i32.const 10)
+ )
+ (block $block7
+ (i32.const 20)
+ )
)
)
- (i32.add
- (block
- (i32.const 10)
- (i32.const 20)
- (i32.const 30)
+ (drop
+ (i32.add
+ (block $block8
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block9
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
)
- (block
- (i32.const 40)
- (i32.const 50)
- (i32.const 60)
+ )
+ (drop
+ (i32.add
+ (block $block10
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
+ (block $block11
+ (drop
+ (i32.const 40)
+ )
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
(i32.store
(i32.const 10)
- (block
- (i32.const 20)
+ (block $block12
+ (drop
+ (i32.const 20)
+ )
(i32.const 30)
)
)
(i32.store
- (block
- (i32.const 10)
+ (block $block13
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
(i32.const 30)
)
- (i32.add
- (unreachable) ;; do not move across this TODO: move non-side-effecting
- (block
- (i32.const 10)
- (i32.const 20)
+ (drop
+ (i32.add
+ (unreachable)
+ (block $block14
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
)
- (i32.add
- (block
- (unreachable) ;; moves out, so does not block the rest
- (i32.const 10)
- )
- (block
- (i32.const 20)
- (i32.const 30)
+ (drop
+ (i32.add
+ (block $block15
+ (unreachable)
+ (i32.const 10)
+ )
+ (block $block16
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
)
)
)
- (func $trinary
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (i32.const 50)
- (i32.const 60)
+ (func $trinary (type $3)
+ (drop
+ (select
+ (block $block0
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block1
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block2
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- )
- (block
- (i32.const 20)
- (i32.const 30)
- )
- (block
- (i32.const 40)
- (i32.const 50)
+ (drop
+ (select
+ (block $block3
+ (i32.const 10)
+ )
+ (block $block4
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
+ (block $block5
+ (drop
+ (i32.const 40)
+ )
+ (i32.const 50)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- )
- (block
- (i32.const 40)
- (i32.const 50)
+ (drop
+ (select
+ (block $block6
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block7
+ (i32.const 30)
+ )
+ (block $block8
+ (drop
+ (i32.const 40)
+ )
+ (i32.const 50)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (i32.const 50)
+ (drop
+ (select
+ (block $block9
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block10
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block11
+ (i32.const 50)
+ )
)
)
- (select
- (block
- (i32.const 10)
- )
- (block
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
+ (drop
+ (select
+ (block $block12
+ (i32.const 10)
+ )
+ (block $block13
+ (i32.const 20)
+ )
+ (block $block14
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
)
)
- (select
- (block
- (i32.const 10)
- )
- (block
- (i32.const 20)
- (i32.const 30)
- )
- (block
- (i32.const 40)
+ (drop
+ (select
+ (block $block15
+ (i32.const 10)
+ )
+ (block $block16
+ (drop
+ (i32.const 20)
+ )
+ (i32.const 30)
+ )
+ (block $block17
+ (i32.const 40)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- )
- (block
- (i32.const 40)
+ (drop
+ (select
+ (block $block18
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block19
+ (i32.const 30)
+ )
+ (block $block20
+ (i32.const 40)
+ )
)
)
- ;; now for bad stuff
- (select
- (block
- (unreachable)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (select
+ (block $block21
+ (unreachable)
+ (i32.const 20)
+ )
+ (block $block22
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block23
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (unreachable)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (select
+ (block $block24
+ (drop
+ (i32.const 10)
+ )
+ (unreachable)
+ )
+ (block $block25
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block26
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (unreachable)
- (i32.const 40)
- )
- (block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (select
+ (block $block27
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block28
+ (unreachable)
+ (i32.const 40)
+ )
+ (block $block29
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (unreachable)
- )
- (block
- (i32.const 50)
- (i32.const 60)
+ (drop
+ (select
+ (block $block30
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block31
+ (drop
+ (i32.const 30)
+ )
+ (unreachable)
+ )
+ (block $block32
+ (drop
+ (i32.const 50)
+ )
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (unreachable)
- (i32.const 60)
+ (drop
+ (select
+ (block $block33
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block34
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block35
+ (unreachable)
+ (i32.const 60)
+ )
)
)
- (select
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
- )
- (block
- (i32.const 50)
- (unreachable)
+ (drop
+ (select
+ (block $block36
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block37
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ (block $block38
+ (drop
+ (i32.const 50)
+ )
+ (unreachable)
+ )
)
)
)
- (func $breaks
+ (func $breaks (type $3)
(block $out
- (br $out
- (block
- (i32.const 10)
- (i32.const 20)
+ (block
+ (drop
+ (block $block0
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
+ (br $out)
)
(br_if $out
- (block
- (i32.const 10)
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
)
- (br_if $out
- (block
- (i32.const 10)
- (i32.const 20)
+ (block
+ (drop
+ (block $block2
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
)
- (block
- (i32.const 30)
- (i32.const 40)
+ (br_if $out
+ (block $block3
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
)
)
(br_table $out $out
- (block
- (i32.const 10)
+ (block $block4
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
)
- (br_table $out $out
- (block
- (i32.const 10)
- (i32.const 20)
- )
- (block
- (i32.const 30)
- (i32.const 40)
+ (drop
+ (block $out2
+ (br_table $out2 $out2
+ (block $block5
+ (drop
+ (i32.const 10)
+ )
+ (i32.const 20)
+ )
+ (block $block6
+ (drop
+ (i32.const 30)
+ )
+ (i32.const 40)
+ )
+ )
)
)
+ (unreachable)
)
)
- (func $calls
+ (func $calls (type $3)
(call $call-i
- (block
+ (block $block0
(i32.const 10)
)
)
(call $call-i
- (block
- (i32.const 10)
+ (block $block1
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
)
(call $call-i
- (block
- (i32.const 10)
- (i32.const 20)
+ (block $block2
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 20)
+ )
(i32.const 30)
)
)
(call $call-ii
- (block
- (i32.const 10)
+ (block $block3
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
- (block
- (i32.const 30)
+ (block $block4
+ (drop
+ (i32.const 30)
+ )
(i32.const 40)
)
)
(call $call-ii
- (block
+ (block $block5
(unreachable)
(i32.const 10)
)
- (block
- (i32.const 20)
+ (block $block6
+ (drop
+ (i32.const 20)
+ )
(i32.const 30)
)
)
(call $call-ii
- (block
- (i32.const 10)
+ (block $block7
+ (drop
+ (i32.const 10)
+ )
(unreachable)
)
- (block
- (i32.const 20)
+ (block $block8
+ (drop
+ (i32.const 20)
+ )
(i32.const 30)
)
)
(call $call-ii
- (block
- (i32.const 10)
+ (block $block9
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
- (block
+ (block $block10
(unreachable)
(i32.const 30)
)
)
(call $call-ii
- (block
- (i32.const 10)
+ (block $block11
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
- (block
- (i32.const 30)
+ (block $block12
+ (drop
+ (i32.const 30)
+ )
(unreachable)
)
)
(call $call-iii
- (block
- (i32.const 10)
+ (block $block13
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
- (block
- (i32.const 30)
+ (block $block14
+ (drop
+ (i32.const 30)
+ )
(i32.const 40)
)
- (block
- (i32.const 50)
+ (block $block15
+ (drop
+ (i32.const 50)
+ )
(i32.const 60)
)
)
(call $call-iii
- (block
- (i32.const 10)
+ (block $block16
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
(i32.const 30)
- (block
- (i32.const 40)
+ (block $block17
+ (drop
+ (i32.const 40)
+ )
(i32.const 50)
)
)
(call_indirect $ii
- (block
- (i32.const 10)
+ (block $block18
+ (drop
+ (i32.const 10)
+ )
(i32.const 20)
)
- (block
- (i32.const 30)
+ (block $block19
+ (drop
+ (i32.const 30)
+ )
(i32.const 40)
)
- (block
- (i32.const 50)
+ (block $block20
+ (drop
+ (i32.const 50)
+ )
(i32.const 60)
)
)
(call_indirect $ii
(unreachable)
- (block
- (i32.const 30)
+ (block $block21
+ (drop
+ (i32.const 30)
+ )
(i32.const 40)
)
- (block
- (i32.const 50)
+ (block $block22
+ (drop
+ (i32.const 50)
+ )
(i32.const 60)
)
)
)
- (func $block-type-change
+ (func $block-type-change (type $3)
(local $0 f64)
(local $1 f64)
(if
(f64.gt
(get_local $0)
- (block
+ (block $block0
(nop)
(get_local $1)
)
@@ -604,4 +869,3 @@
)
)
)
-
diff --git a/test/passes/reorder-functions.wast b/test/passes/reorder-functions.wast
index 99a8363d4..a69afa3b9 100644
--- a/test/passes/reorder-functions.wast
+++ b/test/passes/reorder-functions.wast
@@ -1,6 +1,16 @@
(module
(memory 256 256)
- (func $a (call $a))
- (func $b (call $b) (call $b))
- (func $c (call $c) (call $c) (call $c))
+ (type $0 (func))
+ (func $a (type $0)
+ (call $a)
+ )
+ (func $b (type $0)
+ (call $b)
+ (call $b)
+ )
+ (func $c (type $0)
+ (call $c)
+ (call $c)
+ (call $c)
+ )
)
diff --git a/test/passes/reorder-locals.txt b/test/passes/reorder-locals.txt
index 7ecb7c4a4..c2b481cab 100644
--- a/test/passes/reorder-locals.txt
+++ b/test/passes/reorder-locals.txt
@@ -45,7 +45,9 @@
)
(func $zero (type $1)
(local $b i32)
- (get_local $b)
+ (drop
+ (get_local $b)
+ )
)
(func $null (type $1)
(nop)
diff --git a/test/passes/reorder-locals.wast b/test/passes/reorder-locals.wast
index 832889a78..872d352ee 100644
--- a/test/passes/reorder-locals.wast
+++ b/test/passes/reorder-locals.wast
@@ -1,29 +1,59 @@
(module
(memory 256 256)
- (func $b0-yes (param $a i32) (param $b i32)
+ (type $0 (func (param i32 i32)))
+ (type $1 (func))
+ (func $b0-yes (type $0) (param $a i32) (param $b i32)
(local $x i32)
(local $y i32)
(local $z i32)
-
- ;; Should reverse the order of the locals.
- (set_local $x (get_local $x))
- (set_local $y (get_local $y)) (set_local $y (get_local $y))
- (set_local $z (get_local $z)) (set_local $z (get_local $z)) (set_local $z (get_local $z))
-
- ;; Should not touch the args.
- (set_local $b (get_local $b)) (set_local $b (get_local $b)) (set_local $b (get_local $b))
- (set_local $b (get_local $b)) (set_local $b (get_local $b)) (set_local $b (get_local $b))
+ (set_local $x
+ (get_local $x)
+ )
+ (set_local $y
+ (get_local $y)
+ )
+ (set_local $y
+ (get_local $y)
+ )
+ (set_local $z
+ (get_local $z)
+ )
+ (set_local $z
+ (get_local $z)
+ )
+ (set_local $z
+ (get_local $z)
+ )
+ (set_local $b
+ (get_local $b)
+ )
+ (set_local $b
+ (get_local $b)
+ )
+ (set_local $b
+ (get_local $b)
+ )
+ (set_local $b
+ (get_local $b)
+ )
+ (set_local $b
+ (get_local $b)
+ )
+ (set_local $b
+ (get_local $b)
+ )
)
- (func $zero
+ (func $zero (type $1)
(local $a i32)
(local $b i32)
(local $c i32)
- (get_local $b) ;; a and c are untouched
+ (drop
+ (get_local $b)
+ )
)
- (func $null
+ (func $null (type $1)
(local $a i32)
(local $c i32)
- (nop) ;; a and c are untouched
+ (nop)
)
)
-
diff --git a/test/passes/simplify-locals.txt b/test/passes/simplify-locals.txt
index 0ca96893f..f2425b364 100644
--- a/test/passes/simplify-locals.txt
+++ b/test/passes/simplify-locals.txt
@@ -16,66 +16,128 @@
(local $y i32)
(local $a i32)
(local $b i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
(nop)
- (i32.const 5)
+ (drop
+ (i32.const 5)
+ )
(block $block0
(nop)
- (i32.const 7)
+ (drop
+ (i32.const 7)
+ )
)
(nop)
- (i32.const 11)
- (i32.const 9)
- (get_local $y)
+ (drop
+ (i32.const 11)
+ )
+ (drop
+ (i32.const 9)
+ )
+ (drop
+ (get_local $y)
+ )
(block $block1
- (i32.const 8)
+ (drop
+ (i32.const 8)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
+ (drop
+ (i32.const 11)
+ )
+ (drop
(get_local $y)
)
- (i32.const 11)
- (get_local $y)
(nop)
(nop)
(nop)
(nop)
(nop)
(nop)
- (i32.const 17)
+ (drop
+ (i32.const 17)
+ )
(block $block2
(nop)
(nop)
- (i32.const 1)
- (i32.const 2)
- (i32.const 3)
- (i32.const 4)
+ (drop
+ (i32.const 1)
+ )
+ (drop
+ (i32.const 2)
+ )
+ (drop
+ (i32.const 3)
+ )
+ (drop
+ (i32.const 4)
+ )
(nop)
(nop)
- (i32.const 6)
- (i32.const 5)
- (i32.const 7)
- (i32.const 8)
+ (drop
+ (i32.const 6)
+ )
+ (drop
+ (i32.const 5)
+ )
+ (drop
+ (i32.const 7)
+ )
+ (drop
+ (i32.const 8)
+ )
(nop)
(nop)
(call_import $waka)
- (i32.const 9)
- (i32.const 10)
- (i32.const 11)
- (i32.const 12)
+ (drop
+ (i32.const 9)
+ )
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 11)
+ )
+ (drop
+ (i32.const 12)
+ )
(nop)
(nop)
- (i32.load
- (i32.const 24)
+ (drop
+ (i32.load
+ (i32.const 24)
+ )
+ )
+ (drop
+ (i32.const 13)
+ )
+ (drop
+ (i32.const 14)
+ )
+ (drop
+ (i32.const 15)
+ )
+ (drop
+ (i32.const 16)
)
- (i32.const 13)
- (i32.const 14)
- (i32.const 15)
- (i32.const 16)
(nop)
(nop)
(i32.store
(i32.const 48)
(i32.const 96)
)
- (i32.const 17)
- (i32.const 18)
+ (drop
+ (i32.const 17)
+ )
+ (drop
+ (i32.const 18)
+ )
)
(block $block3
(nop)
@@ -87,15 +149,21 @@
(call_import $waka_int)
)
(call_import $waka)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
(set_local $a
(call_import $waka_int)
)
- (i32.load
- (i32.const 1)
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $a)
)
- (get_local $a)
(call_import $waka)
(set_local $a
(call_import $waka_int)
@@ -104,7 +172,9 @@
(i32.const 1)
(i32.const 2)
)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
(nop)
(set_local $a
@@ -114,8 +184,10 @@
)
(call_import $waka)
(nop)
- (i32.load
- (i32.const 1)
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
)
(set_local $a
(i32.load
@@ -129,7 +201,9 @@
)
)
(call_import $waka)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
(set_local $a
(i32.load
@@ -140,73 +214,123 @@
(i32.const 1)
(i32.const 2)
)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
(nop)
(set_local $a
- (i32.store
- (i32.const 104)
- (i32.const 105)
+ (block $block0
+ (block $block1
+ (nop)
+ (i32.store
+ (i32.const 104)
+ (tee_local $5
+ (i32.const 105)
+ )
+ )
+ )
+ (get_local $5)
)
)
(call_import $waka)
(set_local $a
- (i32.store
- (i32.const 106)
- (i32.const 107)
+ (block $block2
+ (block $block4
+ (nop)
+ (i32.store
+ (i32.const 106)
+ (tee_local $6
+ (i32.const 107)
+ )
+ )
+ )
+ (get_local $6)
)
)
(call_import $waka)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
(set_local $a
- (i32.store
- (i32.const 108)
- (i32.const 109)
+ (block $block5
+ (block $block6
+ (nop)
+ (i32.store
+ (i32.const 108)
+ (tee_local $7
+ (i32.const 109)
+ )
+ )
+ )
+ (get_local $7)
)
)
- (i32.load
- (i32.const 1)
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $a)
)
- (get_local $a)
(call_import $waka)
(set_local $a
- (i32.store
- (i32.const 110)
- (i32.const 111)
+ (block $block7
+ (block $block8
+ (nop)
+ (i32.store
+ (i32.const 110)
+ (tee_local $8
+ (i32.const 111)
+ )
+ )
+ )
+ (get_local $8)
)
)
(i32.store
(i32.const 1)
(i32.const 2)
)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
)
(block $out-of-block
(nop)
(nop)
- (block $b
- (block $c
- (br $b
- (i32.const 1337)
+ (drop
+ (block $b
+ (block $c
+ (br $b
+ (i32.const 1337)
+ )
)
+ (nop)
+ (i32.const 9876)
)
- (nop)
- (i32.const 9876)
)
)
(block $loopey
(set_local $a
(i32.const 1337)
)
- (loop $loop-out4 $loop-in5
- (get_local $a)
- (set_local $a
- (i32.const 9876)
+ (drop
+ (loop $loop-out4 $loop-in5
+ (drop
+ (get_local $a)
+ )
+ (tee_local $a
+ (i32.const 9876)
+ )
)
)
- (get_local $a)
+ (drop
+ (get_local $a)
+ )
)
)
(func $Ia (type $5) (param $a i32) (result i32)
@@ -229,7 +353,7 @@
)
(nop)
(i32.store8
- (set_local $bi3
+ (tee_local $bi3
(i32.const 1)
)
(get_local $bi3)
@@ -240,7 +364,7 @@
(get_local $bi3)
)
(set_local $di3
- (set_local $bi3
+ (tee_local $bi3
(i32.const 123)
)
)
@@ -248,7 +372,9 @@
(get_local $bi3)
(get_local $di3)
)
- (i32.const 456)
+ (drop
+ (i32.const 456)
+ )
)
(func $___remdi3 (type $FUNCSIG$iiiii) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32)
(local $$1$1 i32)
@@ -285,124 +411,126 @@
(nop)
(nop)
(nop)
- (call_import $___udivmoddi4
- (call_import $_i64Subtract
- (i32.xor
- (set_local $$1$0
- (i32.or
- (i32.shr_s
- (get_local $$a$1)
- (i32.const 31)
- )
- (i32.shl
- (if
- (i32.lt_s
- (get_local $$a$1)
+ (drop
+ (call_import $___udivmoddi4
+ (call_import $_i64Subtract
+ (i32.xor
+ (tee_local $$1$0
+ (i32.or
+ (i32.shr_s
+ (get_local $$a$1)
+ (i32.const 31)
+ )
+ (i32.shl
+ (if
+ (i32.lt_s
+ (get_local $$a$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $$a$0)
)
- (get_local $$a$0)
- )
- (i32.xor
- (set_local $$1$1
- (i32.or
- (i32.shr_s
- (if
- (i32.lt_s
- (get_local $$a$1)
+ (i32.xor
+ (tee_local $$1$1
+ (i32.or
+ (i32.shr_s
+ (if
+ (i32.lt_s
+ (get_local $$a$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (if
- (i32.lt_s
- (get_local $$a$1)
+ (i32.shl
+ (if
+ (i32.lt_s
+ (get_local $$a$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $$a$1)
)
- (get_local $$a$1)
+ (get_local $$1$0)
+ (get_local $$1$1)
)
- (get_local $$1$0)
- (get_local $$1$1)
- )
- (i32.load
- (i32.const 168)
- )
- (call_import $_i64Subtract
- (i32.xor
- (set_local $$2$0
- (i32.or
- (i32.shr_s
- (get_local $$b$1)
- (i32.const 31)
- )
- (i32.shl
- (if
- (i32.lt_s
- (get_local $$b$1)
+ (i32.load
+ (i32.const 168)
+ )
+ (call_import $_i64Subtract
+ (i32.xor
+ (tee_local $$2$0
+ (i32.or
+ (i32.shr_s
+ (get_local $$b$1)
+ (i32.const 31)
+ )
+ (i32.shl
+ (if
+ (i32.lt_s
+ (get_local $$b$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $$b$0)
)
- (get_local $$b$0)
- )
- (i32.xor
- (set_local $$2$1
- (i32.or
- (i32.shr_s
- (if
- (i32.lt_s
- (get_local $$b$1)
+ (i32.xor
+ (tee_local $$2$1
+ (i32.or
+ (i32.shr_s
+ (if
+ (i32.lt_s
+ (get_local $$b$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 31)
)
- (i32.const 31)
- )
- (i32.shl
- (if
- (i32.lt_s
- (get_local $$b$1)
+ (i32.shl
+ (if
+ (i32.lt_s
+ (get_local $$b$1)
+ (i32.const 0)
+ )
+ (i32.const -1)
(i32.const 0)
)
- (i32.const -1)
- (i32.const 0)
+ (i32.const 1)
)
- (i32.const 1)
)
)
+ (get_local $$b$1)
)
- (get_local $$b$1)
+ (get_local $$2$0)
+ (get_local $$2$1)
)
- (get_local $$2$0)
- (get_local $$2$1)
- )
- (i32.load
- (i32.const 168)
+ (i32.load
+ (i32.const 168)
+ )
+ (get_local $$rem)
)
- (get_local $$rem)
)
(set_local $$10$0
(call_import $_i64Subtract
@@ -458,7 +586,9 @@
)
(i32.const 1)
)
- (get_local $x)
+ (drop
+ (get_local $x)
+ )
(block $waka2
(set_local $x
(if
@@ -517,8 +647,12 @@
(get_local $r)
(get_local $t)
)
- (get_local $m)
- (get_local $t)
+ (drop
+ (get_local $m)
+ )
+ (drop
+ (get_local $t)
+ )
)
(func $switch-def (type $5) (param $i3 i32) (result i32)
(local $i1 i32)
diff --git a/test/passes/simplify-locals.wast b/test/passes/simplify-locals.wast
index 521e8bac4..07d7ccd03 100644
--- a/test/passes/simplify-locals.wast
+++ b/test/passes/simplify-locals.wast
@@ -1,153 +1,386 @@
(module
(memory 256 256)
+ (type $FUNCSIG$v (func))
+ (type $FUNCSIG$i (func (result i32)))
+ (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32)))
+ (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32)))
+ (type $4 (func (param i32)))
+ (type $5 (func (param i32) (result i32)))
+ (type $6 (func (param i32 i32 i32 i32 i32 i32)))
(import $waka "env" "waka")
(import $waka_int "env" "waka_int" (result i32))
(import $_i64Subtract "env" "i64sub" (param i32 i32 i32 i32) (result i32))
(import $___udivmoddi4 "env" "moddi" (param i32 i32 i32 i32 i32) (result i32))
- (func $b0-yes (param $i1 i32)
+ (func $b0-yes (type $4) (param $i1 i32)
(local $x i32)
(local $y i32)
(local $a i32)
(local $b i32)
- (set_local $x (i32.const 5))
- (get_local $x)
- (block
- (set_local $x (i32.const 7))
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (set_local $x
+ (i32.const 5)
+ )
+ (drop
(get_local $x)
)
- (set_local $x (i32.const 11))
- (get_local $x)
- (set_local $x (i32.const 9))
- (get_local $y)
- (block
- (set_local $x (i32.const 8))
+ (block $block0
+ (set_local $x
+ (i32.const 7)
+ )
+ (drop
+ (get_local $x)
+ )
+ )
+ (set_local $x
+ (i32.const 11)
+ )
+ (drop
+ (get_local $x)
+ )
+ (set_local $x
+ (i32.const 9)
+ )
+ (drop
(get_local $y)
)
- (set_local $x (i32.const 11))
- (get_local $y)
- (set_local $x (i32.const 17))
- (get_local $x)
- (get_local $x)
- (get_local $x)
- (get_local $x)
- (get_local $x)
- (get_local $x)
- (block
- (set_local $a (i32.const 1))
- (set_local $b (i32.const 2))
- (get_local $a)
- (get_local $b)
- (set_local $a (i32.const 3))
- (set_local $b (i32.const 4))
- (set_local $a (i32.const 5))
- (set_local $b (i32.const 6))
- (get_local $b)
- (get_local $a)
- (set_local $a (i32.const 7))
- (set_local $b (i32.const 8))
- (set_local $a (i32.const 9))
- (set_local $b (i32.const 10))
+ (block $block1
+ (set_local $x
+ (i32.const 8)
+ )
+ (drop
+ (get_local $y)
+ )
+ )
+ (set_local $x
+ (i32.const 11)
+ )
+ (drop
+ (get_local $y)
+ )
+ (set_local $x
+ (i32.const 17)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $x)
+ )
+ (block $block2
+ (set_local $a
+ (i32.const 1)
+ )
+ (set_local $b
+ (i32.const 2)
+ )
+ (drop
+ (get_local $a)
+ )
+ (drop
+ (get_local $b)
+ )
+ (set_local $a
+ (i32.const 3)
+ )
+ (set_local $b
+ (i32.const 4)
+ )
+ (set_local $a
+ (i32.const 5)
+ )
+ (set_local $b
+ (i32.const 6)
+ )
+ (drop
+ (get_local $b)
+ )
+ (drop
+ (get_local $a)
+ )
+ (set_local $a
+ (i32.const 7)
+ )
+ (set_local $b
+ (i32.const 8)
+ )
+ (set_local $a
+ (i32.const 9)
+ )
+ (set_local $b
+ (i32.const 10)
+ )
(call_import $waka)
- (get_local $a)
- (get_local $b)
- (set_local $a (i32.const 11))
- (set_local $b (i32.const 12))
- (set_local $a (i32.const 13))
- (set_local $b (i32.const 14))
- (i32.load
- (i32.const 24)
+ (drop
+ (get_local $a)
+ )
+ (drop
+ (get_local $b)
+ )
+ (set_local $a
+ (i32.const 11)
+ )
+ (set_local $b
+ (i32.const 12)
+ )
+ (set_local $a
+ (i32.const 13)
+ )
+ (set_local $b
+ (i32.const 14)
+ )
+ (drop
+ (i32.load
+ (i32.const 24)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
+ (drop
+ (get_local $b)
+ )
+ (set_local $a
+ (i32.const 15)
+ )
+ (set_local $b
+ (i32.const 16)
+ )
+ (set_local $a
+ (i32.const 17)
+ )
+ (set_local $b
+ (i32.const 18)
)
- (get_local $a)
- (get_local $b)
- (set_local $a (i32.const 15))
- (set_local $b (i32.const 16))
- (set_local $a (i32.const 17))
- (set_local $b (i32.const 18))
(i32.store
(i32.const 48)
(i32.const 96)
)
- (get_local $a)
- (get_local $b)
+ (drop
+ (get_local $a)
+ )
+ (drop
+ (get_local $b)
+ )
)
- (block
- (set_local $a (call_import $waka_int))
- (get_local $a) ;; yes
+ (block $block3
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (call_import $waka_int))
+ (set_local $a
+ (call_import $waka_int)
+ )
(call_import $waka)
- (get_local $a) ;; no
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (call_import $waka_int))
- (i32.load (i32.const 1))
- (get_local $a) ;; no
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (call_import $waka_int))
- (i32.store (i32.const 1) (i32.const 2))
- (get_local $a) ;; no
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 2)
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.load (i32.const 100)))
- (get_local $a) ;; yes
+ (set_local $a
+ (i32.load
+ (i32.const 100)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.load (i32.const 101)))
- (i32.load (i32.const 1))
- (get_local $a) ;; yes
+ (set_local $a
+ (i32.load
+ (i32.const 101)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.load (i32.const 102)))
+ (set_local $a
+ (i32.load
+ (i32.const 102)
+ )
+ )
(call_import $waka)
- (get_local $a) ;; no
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.load (i32.const 103)))
- (i32.store (i32.const 1) (i32.const 2))
- (get_local $a) ;; no
+ (set_local $a
+ (i32.load
+ (i32.const 103)
+ )
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 2)
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.store (i32.const 104) (i32.const 105)))
- (get_local $a) ;; yes
+ (set_local $a
+ (block
+ (block
+ (set_local $5
+ (i32.const 105)
+ )
+ (i32.store
+ (i32.const 104)
+ (get_local $5)
+ )
+ )
+ (get_local $5)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.store (i32.const 106) (i32.const 107)))
+ (set_local $a
+ (block
+ (block
+ (set_local $6
+ (i32.const 107)
+ )
+ (i32.store
+ (i32.const 106)
+ (get_local $6)
+ )
+ )
+ (get_local $6)
+ )
+ )
(call_import $waka)
- (get_local $a) ;; no
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.store (i32.const 108) (i32.const 109)))
- (i32.load (i32.const 1))
- (get_local $a) ;; no
+ (set_local $a
+ (block
+ (block
+ (set_local $7
+ (i32.const 109)
+ )
+ (i32.store
+ (i32.const 108)
+ (get_local $7)
+ )
+ )
+ (get_local $7)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
-
- (set_local $a (i32.store (i32.const 110) (i32.const 111)))
- (i32.store (i32.const 1) (i32.const 2))
- (get_local $a) ;; no
+ (set_local $a
+ (block
+ (block
+ (set_local $8
+ (i32.const 111)
+ )
+ (i32.store
+ (i32.const 110)
+ (get_local $8)
+ )
+ )
+ (get_local $8)
+ )
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 2)
+ )
+ (drop
+ (get_local $a)
+ )
(call_import $waka)
)
(block $out-of-block
- (set_local $a (i32.const 1337))
+ (set_local $a
+ (i32.const 1337)
+ )
(block $b
(block $c
(br $b)
)
- (set_local $a (i32.const 9876))
+ (set_local $a
+ (i32.const 9876)
+ )
+ )
+ (drop
+ (get_local $a)
)
- (get_local $a)
)
(block $loopey
- (set_local $a (i32.const 1337))
- (loop
+ (set_local $a
+ (i32.const 1337)
+ )
+ (drop
+ (loop $loop-out4 $loop-in5
+ (drop
+ (get_local $a)
+ )
+ (tee_local $a
+ (i32.const 9876)
+ )
+ )
+ )
+ (drop
(get_local $a)
- (set_local $a (i32.const 9876))
)
- (get_local $a)
)
)
- (func $Ia (param $a i32) (result i32)
+ (func $Ia (type $5) (param $a i32) (result i32)
(local $b i32)
(block $switch$0
(block $switch-default$6
@@ -160,7 +393,7 @@
(get_local $b)
)
)
- (func $memories (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32)
+ (func $memories (type $6) (param $i2 i32) (param $i3 i32) (param $bi2 i32) (param $bi3 i32) (param $ci3 i32) (param $di3 i32)
(local $set_with_no_get i32)
(set_local $i3
(i32.const 1)
@@ -184,15 +417,19 @@
(get_local $ci3)
)
(set_local $di3
- (set_local $bi3 (i32.const 123))
+ (tee_local $bi3
+ (i32.const 123)
+ )
)
(i32.store8
(get_local $bi3)
(get_local $di3)
)
- (set_local $set_with_no_get (i32.const 456))
+ (set_local $set_with_no_get
+ (i32.const 456)
+ )
)
- (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32)
+ (func $___remdi3 (type $FUNCSIG$iiiii) (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32)
(local $$1$1 i32)
(local $$1$0 i32)
(local $$rem i32)
@@ -325,30 +562,32 @@
(get_local $$1$1)
)
)
- (set_local $$4$1 ;; first this moves, then $$4$0 should be able to move
+ (set_local $$4$1
(i32.load
(i32.const 168)
)
)
- (call_import $___udivmoddi4
- (get_local $$4$0)
- (get_local $$4$1)
- (call_import $_i64Subtract
- (i32.xor
+ (drop
+ (call_import $___udivmoddi4
+ (get_local $$4$0)
+ (get_local $$4$1)
+ (call_import $_i64Subtract
+ (i32.xor
+ (get_local $$2$0)
+ (get_local $$b$0)
+ )
+ (i32.xor
+ (get_local $$2$1)
+ (get_local $$b$1)
+ )
(get_local $$2$0)
- (get_local $$b$0)
- )
- (i32.xor
(get_local $$2$1)
- (get_local $$b$1)
)
- (get_local $$2$0)
- (get_local $$2$1)
- )
- (i32.load
- (i32.const 168)
+ (i32.load
+ (i32.const 168)
+ )
+ (get_local $$rem)
)
- (get_local $$rem)
)
(set_local $$10$0
(call_import $_i64Subtract
@@ -378,7 +617,7 @@
(get_local $__stackBase__)
)
(return
- (block
+ (block $block12
(i32.store
(i32.const 168)
(get_local $$10$1)
@@ -387,46 +626,64 @@
)
)
)
- (func $block-returns
+ (func $block-returns (type $FUNCSIG$v)
(local $x i32)
(block $out
(block $waka
- (set_local $x (i32.const 12))
+ (set_local $x
+ (i32.const 12)
+ )
(br_if $waka
(i32.const 1)
)
- (set_local $x (i32.const 34))
+ (set_local $x
+ (i32.const 34)
+ )
)
- (br_if $out ;; barrier
+ (br_if $out
(i32.const 1)
)
- (get_local $x) ;; a use, so setlocals are not all killed
+ (drop
+ (get_local $x)
+ )
(block $waka2
(if
(i32.const 1)
- (set_local $x (i32.const 13))
- (set_local $x (i32.const 24))
+ (set_local $x
+ (i32.const 13)
+ )
+ (set_local $x
+ (i32.const 24)
+ )
)
(if
(i32.const 1)
- (block
- (set_local $x (i32.const 14))
+ (block $block3
+ (set_local $x
+ (i32.const 14)
+ )
)
- (block
- (set_local $x (i32.const 25))
+ (block $block5
+ (set_local $x
+ (i32.const 25)
+ )
)
)
)
- (br_if $out ;; barrier
+ (br_if $out
(i32.const 1)
)
(block $sink-out-of-me-i-have-but-one-exit
- (set_local $x (i32.const 99))
+ (set_local $x
+ (i32.const 99)
+ )
+ )
+ (drop
+ (get_local $x)
)
- (get_local $x)
)
)
- (func $multiple (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32)
+ (func $multiple (type $6) (param $s i32) (param $r i32) (param $f i32) (param $p i32) (param $t i32) (param $m i32)
(set_local $s
(get_local $m)
)
@@ -436,22 +693,26 @@
(get_local $p)
)
)
- (set_local $t ;; t is equal to p's original value; p must not be set to before t gets that value
+ (set_local $t
(get_local $p)
)
(set_local $p
(i32.load
- (i32.const r)
+ (i32.const 0)
)
)
(i32.store
(get_local $r)
(get_local $t)
)
- (get_local $s)
- (get_local $t)
+ (drop
+ (get_local $s)
+ )
+ (drop
+ (get_local $t)
+ )
)
- (func $switch-def (param $i3 i32) (result i32)
+ (func $switch-def (type $5) (param $i3 i32) (result i32)
(local $i1 i32)
(set_local $i1
(i32.const 10)
@@ -471,4 +732,3 @@
)
)
)
-
diff --git a/test/passes/vacuum.txt b/test/passes/vacuum.txt
index 7fa247bdd..c4004dd28 100644
--- a/test/passes/vacuum.txt
+++ b/test/passes/vacuum.txt
@@ -39,8 +39,18 @@
)
)
(func $binary (type $2) (result f32)
- (unreachable)
- (unreachable)
+ (drop
+ (f32.add
+ (unreachable)
+ (f32.const 3)
+ )
+ )
+ (drop
+ (f32.add
+ (f32.const 4)
+ (unreachable)
+ )
+ )
(f32.add
(unreachable)
(unreachable)
@@ -51,23 +61,45 @@
)
)
(func $select (type $3) (result i32)
- (unreachable)
- (unreachable)
- (unreachable)
+ (drop
+ (select
+ (unreachable)
+ (i32.const 4)
+ (i32.const 5)
+ )
+ )
+ (drop
+ (select
+ (i32.const 6)
+ (unreachable)
+ (i32.const 7)
+ )
+ )
+ (drop
+ (select
+ (i32.const 8)
+ (i32.const 9)
+ (unreachable)
+ )
+ )
(select
(unreachable)
(unreachable)
(i32.const 10)
)
- (select
- (unreachable)
- (i32.const 11)
- (unreachable)
+ (drop
+ (select
+ (unreachable)
+ (i32.const 11)
+ (unreachable)
+ )
)
- (select
- (i32.const 12)
- (unreachable)
- (unreachable)
+ (drop
+ (select
+ (i32.const 12)
+ (unreachable)
+ (unreachable)
+ )
)
(select
(unreachable)
@@ -110,7 +142,7 @@
(f64.ne
(f64.promote/f32
(f32.load
- (set_local $l
+ (tee_local $l
(i32.add
(get_local $b)
(i32.const 60)
diff --git a/test/passes/vacuum.wast b/test/passes/vacuum.wast
index a6f713123..7dc77eac6 100644
--- a/test/passes/vacuum.wast
+++ b/test/passes/vacuum.wast
@@ -1,36 +1,59 @@
(module
(memory 256 256)
- (func $b
- (i32.const 50)
+ (type $0 (func))
+ (type $1 (func (param i32)))
+ (type $2 (func (result f32)))
+ (type $3 (func (result i32)))
+ (type $4 (func (param i32 f64 i32 i32)))
+ (func $b (type $0)
+ (drop
+ (i32.const 50)
+ )
(nop)
- (i32.const 51)
+ (drop
+ (i32.const 51)
+ )
(nop)
(nop)
- (i32.const 52)
+ (drop
+ (i32.const 52)
+ )
(block $waka1
- (i32.const 53)
+ (drop
+ (i32.const 53)
+ )
(br $waka1)
- (i32.const 54)
+ (drop
+ (i32.const 54)
+ )
)
(block $waka2
(nop)
(br $waka2)
- (i32.const 56)
+ (drop
+ (i32.const 56)
+ )
)
(block $waka3
(br_table $waka3 $waka3 $waka3
(i32.const 57)
)
- (i32.const 58)
+ (drop
+ (i32.const 58)
+ )
)
(if
(i32.const 100)
(nop)
- (i32.const 101)
+ (drop
+ (i32.const 101)
+ )
)
(if
(i32.const 102)
- (i32.const 103)
+ (drop
+ (i32.const 103)
+ )
(nop)
)
(if
@@ -39,17 +62,27 @@
(nop)
)
)
- (func $l
+ (func $l (type $0)
(local $x i32)
(local $y i32)
- (get_local $x)
- (set_local $x (get_local $x))
- (block $in-a-block
+ (drop
(get_local $x)
)
- (block $two-in-a-block
+ (set_local $x
(get_local $x)
- (get_local $y)
+ )
+ (block $in-a-block
+ (drop
+ (get_local $x)
+ )
+ )
+ (block $two-in-a-block
+ (drop
+ (get_local $x)
+ )
+ (drop
+ (get_local $y)
+ )
)
(set_local $x
(block $result-used
@@ -58,82 +91,197 @@
)
(set_local $x
(block $two-and-result-used
- (get_local $x)
+ (drop
+ (get_local $x)
+ )
(get_local $y)
)
)
)
- (func $loopy (param $0 i32)
- (loop (nop))
- (loop
+ (func $loopy (type $1) (param $0 i32)
+ (loop $loop-out0 $loop-in1
+ (nop)
+ )
+ (loop $loop-out2 $loop-in3
(nop)
(nop)
)
- (loop
- (get_local $0)
- (i32.const 20)
+ (drop
+ (loop $loop-out4 $loop-in5
+ (drop
+ (get_local $0)
+ )
+ (i32.const 20)
+ )
)
)
- (func $unary (result f32)
- (f32.abs (f32.const 1.0)) ;; unneeded position
- (f32.abs (unreachable)) ;; side effects
-
- (f32.abs (f32.const 2.0)) ;; return position
+ (func $unary (type $2) (result f32)
+ (drop
+ (f32.abs
+ (f32.const 1)
+ )
+ )
+ (f32.abs
+ (unreachable)
+ )
+ (f32.abs
+ (f32.const 2)
+ )
)
- (func $binary (result f32)
- (f32.add (f32.const 1.0) (f32.const 2.0))
- (f32.add (unreachable) (f32.const 3.0))
- (f32.add (f32.const 4.0) (unreachable))
- (f32.add (unreachable) (unreachable))
-
- (f32.add (f32.const 5.0) (f32.const 6.0))
+ (func $binary (type $2) (result f32)
+ (drop
+ (f32.add
+ (f32.const 1)
+ (f32.const 2)
+ )
+ )
+ (drop
+ (f32.add
+ (unreachable)
+ (f32.const 3)
+ )
+ )
+ (drop
+ (f32.add
+ (f32.const 4)
+ (unreachable)
+ )
+ )
+ (f32.add
+ (unreachable)
+ (unreachable)
+ )
+ (f32.add
+ (f32.const 5)
+ (f32.const 6)
+ )
)
- (func $select (result i32)
- (select (i32.const 1) (i32.const 2) (i32.const 3))
- (select (unreachable) (i32.const 4) (i32.const 5))
- (select (i32.const 6) (unreachable) (i32.const 7))
- (select (i32.const 8) (i32.const 9) (unreachable))
- (select (unreachable) (unreachable) (i32.const 10))
- (select (unreachable) (i32.const 11) (unreachable))
- (select (i32.const 12) (unreachable) (unreachable))
- (select (unreachable) (unreachable) (unreachable))
-
- (select (i32.const 13) (i32.const 14) (i32.const 15))
+ (func $select (type $3) (result i32)
+ (drop
+ (select
+ (i32.const 1)
+ (i32.const 2)
+ (i32.const 3)
+ )
+ )
+ (drop
+ (select
+ (unreachable)
+ (i32.const 4)
+ (i32.const 5)
+ )
+ )
+ (drop
+ (select
+ (i32.const 6)
+ (unreachable)
+ (i32.const 7)
+ )
+ )
+ (drop
+ (select
+ (i32.const 8)
+ (i32.const 9)
+ (unreachable)
+ )
+ )
+ (select
+ (unreachable)
+ (unreachable)
+ (i32.const 10)
+ )
+ (drop
+ (select
+ (unreachable)
+ (i32.const 11)
+ (unreachable)
+ )
+ )
+ (drop
+ (select
+ (i32.const 12)
+ (unreachable)
+ (unreachable)
+ )
+ )
+ (select
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ )
+ (select
+ (i32.const 13)
+ (i32.const 14)
+ (i32.const 15)
+ )
)
- (func $block-to-one
- (block
- (nop) (nop)
+ (func $block-to-one (type $0)
+ (block $block0
+ (nop)
+ (nop)
)
- (block
- (nop) (unreachable)
+ (block $block1
+ (nop)
+ (unreachable)
)
- (block
- (nop) (unreachable) (nop)
+ (block $block2
+ (nop)
+ (unreachable)
+ (nop)
)
- (block
- (unreachable) (nop)
+ (block $block3
+ (unreachable)
+ (nop)
)
- (block
+ (block $block4
(unreachable)
)
)
- (func $recurse
+ (func $recurse (type $0)
(nop)
- (f32.abs (f32.abs (f32.abs (f32.abs (f32.abs (f32.abs (f32.const 1.0) ) ) ) ) ) )
+ (drop
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.const 1)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
)
- (func $func-block
- (f32.abs (f32.abs (f32.abs (f32.abs (f32.abs (f32.abs (f32.const 1.0) ) ) ) ) ) )
+ (func $func-block (type $0)
+ (drop
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.abs
+ (f32.const 1)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
)
- (func $Gu (param $b i32) (param $e f64) (param $l i32) (param $d i32)
- (if ;; if condition must remain valid
+ (func $Gu (type $4) (param $b i32) (param $e f64) (param $l i32) (param $d i32)
+ (if
(if
(get_local $d)
- (block
+ (block $block1
(nop)
(f64.ne
(f64.promote/f32
(f32.load
- (set_local $l
+ (tee_local $l
(i32.add
(get_local $b)
(i32.const 60)
@@ -150,4 +298,3 @@
)
)
)
-
diff --git a/test/two_sides.fromasm b/test/two_sides.fromasm
index 98ca149e1..0b1ed182d 100644
--- a/test/two_sides.fromasm
+++ b/test/two_sides.fromasm
@@ -14,7 +14,7 @@
(f64.convert_s/i32
(get_local $2)
)
- (set_local $5
+ (tee_local $5
(f64.convert_s/i32
(i32.mul
(get_local $1)
@@ -37,7 +37,7 @@
(f64.convert_s/i32
(get_local $2)
)
- (set_local $5
+ (tee_local $5
(f64.convert_s/i32
(i32.mul
(get_local $3)
diff --git a/test/two_sides.fromasm.imprecise b/test/two_sides.fromasm.imprecise
index ad7e9e61a..77ea9a202 100644
--- a/test/two_sides.fromasm.imprecise
+++ b/test/two_sides.fromasm.imprecise
@@ -12,7 +12,7 @@
(f64.convert_s/i32
(get_local $2)
)
- (set_local $5
+ (tee_local $5
(f64.convert_s/i32
(i32.mul
(get_local $1)
@@ -35,7 +35,7 @@
(f64.convert_s/i32
(get_local $2)
)
- (set_local $5
+ (tee_local $5
(f64.convert_s/i32
(i32.mul
(get_local $3)
diff --git a/test/unit.asm.js b/test/unit.asm.js
index 380c97b41..5eb48f776 100644
--- a/test/unit.asm.js
+++ b/test/unit.asm.js
@@ -261,6 +261,16 @@ function asm(global, env, buffer) {
return x | 0;
}
+ function smallIf() {
+ do {
+ if (2) {
+ lb(3) | 0;
+ } else {
+ break;
+ }
+ } while (0);
+ }
+
function z() {
}
function w() {
diff --git a/test/unit.fromasm b/test/unit.fromasm
index 49189df43..5a790c92f 100644
--- a/test/unit.fromasm
+++ b/test/unit.fromasm
@@ -96,13 +96,19 @@
(local $0 f64)
(local $1 f32)
(local $2 i32)
- (call_import $f64-to-int
- (get_local $0)
- )
- (set_local $2
+ (drop
(call_import $f64-to-int
- (f64.promote/f32
- (get_local $1)
+ (get_local $0)
+ )
+ )
+ (drop
+ (f64.convert_s/i32
+ (tee_local $2
+ (call_import $f64-to-int
+ (f64.promote/f32
+ (get_local $1)
+ )
+ )
)
)
)
@@ -350,23 +356,29 @@
(nop)
)
(func $recursiveBlockMerging (param $0 i32) (result i32)
- (call $lb
- (i32.add
+ (drop
+ (call $lb
(i32.add
(i32.add
- (get_local $0)
- (i32.const 3)
+ (i32.add
+ (get_local $0)
+ (i32.const 3)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 12)
)
- (i32.const 12)
)
)
- (call $lb
- (i32.const 1)
+ (drop
+ (call $lb
+ (i32.const 1)
+ )
)
- (call $lb
- (i32.const 2)
+ (drop
+ (call $lb
+ (i32.const 2)
+ )
)
(i32.add
(i32.add
@@ -377,14 +389,20 @@
)
)
(block
- (call $lb
- (i32.const 4)
+ (drop
+ (call $lb
+ (i32.const 4)
+ )
)
- (call $lb
- (i32.const 5)
+ (drop
+ (call $lb
+ (i32.const 5)
+ )
)
- (call $lb
- (i32.const 6)
+ (drop
+ (call $lb
+ (i32.const 6)
+ )
)
(call $lb
(i32.const 7)
@@ -392,17 +410,25 @@
)
)
(block
- (call $lb
- (i32.const 8)
+ (drop
+ (call $lb
+ (i32.const 8)
+ )
)
- (call $lb
- (i32.const 9)
+ (drop
+ (call $lb
+ (i32.const 9)
+ )
)
- (call $lb
- (i32.const 10)
+ (drop
+ (call $lb
+ (i32.const 10)
+ )
)
- (call $lb
- (i32.const 11)
+ (drop
+ (call $lb
+ (i32.const 11)
+ )
)
(call $lb
(i32.const 12)
@@ -464,4 +490,12 @@
(i32.const 1)
)
)
+ (func $smallIf
+ (if
+ (i32.const 2)
+ (call $lb
+ (i32.const 3)
+ )
+ )
+ )
)
diff --git a/test/unit.fromasm.imprecise b/test/unit.fromasm.imprecise
index d2c10b549..f81663fa1 100644
--- a/test/unit.fromasm.imprecise
+++ b/test/unit.fromasm.imprecise
@@ -91,9 +91,13 @@
(func $conversions
(local $0 f32)
(local $1 i32)
- (set_local $1
- (i32.trunc_s/f32
- (get_local $0)
+ (drop
+ (f64.convert_s/i32
+ (tee_local $1
+ (i32.trunc_s/f32
+ (get_local $0)
+ )
+ )
)
)
)
@@ -334,23 +338,29 @@
(nop)
)
(func $recursiveBlockMerging (param $0 i32) (result i32)
- (call $lb
- (i32.add
+ (drop
+ (call $lb
(i32.add
(i32.add
- (get_local $0)
- (i32.const 3)
+ (i32.add
+ (get_local $0)
+ (i32.const 3)
+ )
+ (i32.const 7)
)
- (i32.const 7)
+ (i32.const 12)
)
- (i32.const 12)
)
)
- (call $lb
- (i32.const 1)
+ (drop
+ (call $lb
+ (i32.const 1)
+ )
)
- (call $lb
- (i32.const 2)
+ (drop
+ (call $lb
+ (i32.const 2)
+ )
)
(i32.add
(i32.add
@@ -361,14 +371,20 @@
)
)
(block
- (call $lb
- (i32.const 4)
+ (drop
+ (call $lb
+ (i32.const 4)
+ )
)
- (call $lb
- (i32.const 5)
+ (drop
+ (call $lb
+ (i32.const 5)
+ )
)
- (call $lb
- (i32.const 6)
+ (drop
+ (call $lb
+ (i32.const 6)
+ )
)
(call $lb
(i32.const 7)
@@ -376,17 +392,25 @@
)
)
(block
- (call $lb
- (i32.const 8)
+ (drop
+ (call $lb
+ (i32.const 8)
+ )
)
- (call $lb
- (i32.const 9)
+ (drop
+ (call $lb
+ (i32.const 9)
+ )
)
- (call $lb
- (i32.const 10)
+ (drop
+ (call $lb
+ (i32.const 10)
+ )
)
- (call $lb
- (i32.const 11)
+ (drop
+ (call $lb
+ (i32.const 11)
+ )
)
(call $lb
(i32.const 12)
@@ -448,4 +472,12 @@
(i32.const 1)
)
)
+ (func $smallIf
+ (if
+ (i32.const 2)
+ (call $lb
+ (i32.const 3)
+ )
+ )
+ )
)
diff --git a/test/unit.fromasm.imprecise.no-opts b/test/unit.fromasm.imprecise.no-opts
index 7037a6c1c..083e6f888 100644
--- a/test/unit.fromasm.imprecise.no-opts
+++ b/test/unit.fromasm.imprecise.no-opts
@@ -177,11 +177,15 @@
(set_local $J
(f64.sub
(block
- (f64.const 0.1)
+ (drop
+ (f64.const 0.1)
+ )
(f64.const 5.1)
)
(block
- (f64.const 3.2)
+ (drop
+ (f64.const 3.2)
+ )
(f64.const 4.2)
)
)
@@ -340,14 +344,28 @@
(func $fr (param $x f32)
(local $y f32)
(local $z f64)
- (f32.demote/f64
- (get_local $z)
+ (drop
+ (block
+ (drop
+ (f32.demote/f64
+ (get_local $z)
+ )
+ )
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (f32.const 0)
+ )
)
- (get_local $y)
- (f32.const 5)
- (f32.const 0)
- (f32.const 5)
- (f32.const 0)
)
(func $negZero (result f64)
(return
@@ -420,9 +438,11 @@
)
(func $___syscall_ret
(local $$0 i32)
- (i32.gt_u
- (get_local $$0)
- (i32.const -4096)
+ (drop
+ (i32.gt_u
+ (get_local $$0)
+ (i32.const -4096)
+ )
)
)
(func $smallCompare (result i32)
@@ -558,57 +578,87 @@
)
(func $bitcasts (param $i i32) (param $f f32)
(local $d f64)
- (f32.reinterpret/i32
- (get_local $i)
- )
- (f64.promote/f32
- (f32.reinterpret/i32
- (get_local $i)
- )
- )
- (i32.reinterpret/f32
- (get_local $f)
- )
- (i32.reinterpret/f32
- (f32.demote/f64
- (get_local $d)
+ (drop
+ (block
+ (drop
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (get_local $f)
+ )
+ )
+ (i32.reinterpret/f32
+ (f32.demote/f64
+ (get_local $d)
+ )
+ )
)
)
)
(func $recursiveBlockMerging (param $x i32) (result i32)
- (call $lb
- (i32.add
+ (drop
+ (call $lb
(i32.add
(i32.add
- (block
- (i32.const 1)
- (get_local $x)
- )
- (block
- (i32.const 2)
- (i32.const 3)
+ (i32.add
+ (block
+ (drop
+ (i32.const 1)
+ )
+ (get_local $x)
+ )
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (i32.const 3)
+ )
)
- )
- (block
(block
- (block
- (i32.const 4)
- (i32.const 5)
+ (drop
+ (block
+ (drop
+ (block
+ (drop
+ (i32.const 4)
+ )
+ (i32.const 5)
+ )
+ )
+ (i32.const 6)
+ )
)
- (i32.const 6)
+ (i32.const 7)
)
- (i32.const 7)
)
- )
- (block
- (i32.const 8)
(block
- (i32.const 9)
+ (drop
+ (i32.const 8)
+ )
(block
- (i32.const 10)
+ (drop
+ (i32.const 9)
+ )
(block
- (i32.const 11)
- (i32.const 12)
+ (drop
+ (i32.const 10)
+ )
+ (block
+ (drop
+ (i32.const 11)
+ )
+ (i32.const 12)
+ )
)
)
)
@@ -620,14 +670,18 @@
(i32.add
(i32.add
(block
- (call $lb
- (i32.const 1)
+ (drop
+ (call $lb
+ (i32.const 1)
+ )
)
(get_local $x)
)
(block
- (call $lb
- (i32.const 2)
+ (drop
+ (call $lb
+ (i32.const 2)
+ )
)
(call $lb
(i32.const 3)
@@ -635,18 +689,24 @@
)
)
(block
- (block
+ (drop
(block
- (call $lb
- (i32.const 4)
+ (drop
+ (block
+ (drop
+ (call $lb
+ (i32.const 4)
+ )
+ )
+ (call $lb
+ (i32.const 5)
+ )
+ )
)
(call $lb
- (i32.const 5)
+ (i32.const 6)
)
)
- (call $lb
- (i32.const 6)
- )
)
(call $lb
(i32.const 7)
@@ -654,20 +714,28 @@
)
)
(block
- (call $lb
- (i32.const 8)
+ (drop
+ (call $lb
+ (i32.const 8)
+ )
)
(block
- (call $lb
- (i32.const 9)
+ (drop
+ (call $lb
+ (i32.const 9)
+ )
)
(block
- (call $lb
- (i32.const 10)
+ (drop
+ (call $lb
+ (i32.const 10)
+ )
)
(block
- (call $lb
- (i32.const 11)
+ (drop
+ (call $lb
+ (i32.const 11)
+ )
)
(call $lb
(i32.const 12)
@@ -700,10 +768,14 @@
)
)
(func $forgetMe
- (f64.const 123.456)
+ (drop
+ (f64.const 123.456)
+ )
)
(func $exportMe
- (f64.const -3.14159)
+ (drop
+ (f64.const -3.14159)
+ )
)
(func $zeroInit (param $x i32)
(local $y i32)
@@ -757,6 +829,20 @@
(get_local $x)
)
)
+ (func $smallIf
+ (block $do-once$0
+ (drop
+ (if
+ (i32.const 2)
+ (call $lb
+ (i32.const 3)
+ )
+ (br $do-once$0)
+ )
+ )
+ (nop)
+ )
+ )
(func $z
(nop)
)
diff --git a/test/unit.fromasm.no-opts b/test/unit.fromasm.no-opts
index 51ae345b9..3f561465a 100644
--- a/test/unit.fromasm.no-opts
+++ b/test/unit.fromasm.no-opts
@@ -183,11 +183,15 @@
(set_local $J
(f64.sub
(block
- (f64.const 0.1)
+ (drop
+ (f64.const 0.1)
+ )
(f64.const 5.1)
)
(block
- (f64.const 3.2)
+ (drop
+ (f64.const 3.2)
+ )
(f64.const 4.2)
)
)
@@ -346,14 +350,28 @@
(func $fr (param $x f32)
(local $y f32)
(local $z f64)
- (f32.demote/f64
- (get_local $z)
+ (drop
+ (block
+ (drop
+ (f32.demote/f64
+ (get_local $z)
+ )
+ )
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (f32.const 0)
+ )
)
- (get_local $y)
- (f32.const 5)
- (f32.const 0)
- (f32.const 5)
- (f32.const 0)
)
(func $negZero (result f64)
(return
@@ -426,9 +444,11 @@
)
(func $___syscall_ret
(local $$0 i32)
- (i32.gt_u
- (get_local $$0)
- (i32.const -4096)
+ (drop
+ (i32.gt_u
+ (get_local $$0)
+ (i32.const -4096)
+ )
)
)
(func $smallCompare (result i32)
@@ -564,57 +584,87 @@
)
(func $bitcasts (param $i i32) (param $f f32)
(local $d f64)
- (f32.reinterpret/i32
- (get_local $i)
- )
- (f64.promote/f32
- (f32.reinterpret/i32
- (get_local $i)
- )
- )
- (i32.reinterpret/f32
- (get_local $f)
- )
- (i32.reinterpret/f32
- (f32.demote/f64
- (get_local $d)
+ (drop
+ (block
+ (drop
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ (drop
+ (f64.promote/f32
+ (f32.reinterpret/i32
+ (get_local $i)
+ )
+ )
+ )
+ (drop
+ (i32.reinterpret/f32
+ (get_local $f)
+ )
+ )
+ (i32.reinterpret/f32
+ (f32.demote/f64
+ (get_local $d)
+ )
+ )
)
)
)
(func $recursiveBlockMerging (param $x i32) (result i32)
- (call $lb
- (i32.add
+ (drop
+ (call $lb
(i32.add
(i32.add
- (block
- (i32.const 1)
- (get_local $x)
- )
- (block
- (i32.const 2)
- (i32.const 3)
+ (i32.add
+ (block
+ (drop
+ (i32.const 1)
+ )
+ (get_local $x)
+ )
+ (block
+ (drop
+ (i32.const 2)
+ )
+ (i32.const 3)
+ )
)
- )
- (block
(block
- (block
- (i32.const 4)
- (i32.const 5)
+ (drop
+ (block
+ (drop
+ (block
+ (drop
+ (i32.const 4)
+ )
+ (i32.const 5)
+ )
+ )
+ (i32.const 6)
+ )
)
- (i32.const 6)
+ (i32.const 7)
)
- (i32.const 7)
)
- )
- (block
- (i32.const 8)
(block
- (i32.const 9)
+ (drop
+ (i32.const 8)
+ )
(block
- (i32.const 10)
+ (drop
+ (i32.const 9)
+ )
(block
- (i32.const 11)
- (i32.const 12)
+ (drop
+ (i32.const 10)
+ )
+ (block
+ (drop
+ (i32.const 11)
+ )
+ (i32.const 12)
+ )
)
)
)
@@ -626,14 +676,18 @@
(i32.add
(i32.add
(block
- (call $lb
- (i32.const 1)
+ (drop
+ (call $lb
+ (i32.const 1)
+ )
)
(get_local $x)
)
(block
- (call $lb
- (i32.const 2)
+ (drop
+ (call $lb
+ (i32.const 2)
+ )
)
(call $lb
(i32.const 3)
@@ -641,18 +695,24 @@
)
)
(block
- (block
+ (drop
(block
- (call $lb
- (i32.const 4)
+ (drop
+ (block
+ (drop
+ (call $lb
+ (i32.const 4)
+ )
+ )
+ (call $lb
+ (i32.const 5)
+ )
+ )
)
(call $lb
- (i32.const 5)
+ (i32.const 6)
)
)
- (call $lb
- (i32.const 6)
- )
)
(call $lb
(i32.const 7)
@@ -660,20 +720,28 @@
)
)
(block
- (call $lb
- (i32.const 8)
+ (drop
+ (call $lb
+ (i32.const 8)
+ )
)
(block
- (call $lb
- (i32.const 9)
+ (drop
+ (call $lb
+ (i32.const 9)
+ )
)
(block
- (call $lb
- (i32.const 10)
+ (drop
+ (call $lb
+ (i32.const 10)
+ )
)
(block
- (call $lb
- (i32.const 11)
+ (drop
+ (call $lb
+ (i32.const 11)
+ )
)
(call $lb
(i32.const 12)
@@ -706,10 +774,14 @@
)
)
(func $forgetMe
- (f64.const 123.456)
+ (drop
+ (f64.const 123.456)
+ )
)
(func $exportMe
- (f64.const -3.14159)
+ (drop
+ (f64.const -3.14159)
+ )
)
(func $zeroInit (param $x i32)
(local $y i32)
@@ -763,6 +835,20 @@
(get_local $x)
)
)
+ (func $smallIf
+ (block $do-once$0
+ (drop
+ (if
+ (i32.const 2)
+ (call $lb
+ (i32.const 3)
+ )
+ (br $do-once$0)
+ )
+ )
+ (nop)
+ )
+ )
(func $z
(nop)
)
diff --git a/test/unit.wast b/test/unit.wast
index 2e21d44dd..aece78930 100644
--- a/test/unit.wast
+++ b/test/unit.wast
@@ -139,12 +139,14 @@
)
)
(func $hexLiterals (type $FUNCSIG$v)
- (i32.add
+ (drop
(i32.add
- (i32.const 0)
- (i32.const 313249263)
+ (i32.add
+ (i32.const 0)
+ (i32.const 313249263)
+ )
+ (i32.const -19088752)
)
- (i32.const -19088752)
)
)
(func $conversions (type $FUNCSIG$v)
@@ -176,11 +178,15 @@
(set_local $J
(f64.sub
(block $block0
- (f64.const 0.1)
+ (drop
+ (f64.const 0.1)
+ )
(f64.const 5.1)
)
(block $block1
- (f64.const 3.2)
+ (drop
+ (f64.const 3.2)
+ )
(f64.const 4.2)
)
)
@@ -302,14 +308,26 @@
(local $y f32)
(local $z f64)
(block $block0
- (f32.demote/f64
- (get_local $z)
+ (drop
+ (f32.demote/f64
+ (get_local $z)
+ )
+ )
+ (drop
+ (get_local $y)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
)
- (get_local $y)
- (f32.const 5)
- (f32.const 0)
- (f32.const 5)
- (f32.const 0)
)
)
(func $negZero (type $4) (result f64)
@@ -385,12 +403,14 @@
)
(func $___syscall_ret (type $FUNCSIG$v)
(local $$0 i32)
- (i32.gt_u
- (i32.shr_u
- (get_local $$0)
- (i32.const 0)
+ (drop
+ (i32.gt_u
+ (i32.shr_u
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (i32.const -4096)
)
- (i32.const -4096)
)
)
(func $z (type $FUNCSIG$v)
@@ -401,14 +421,18 @@
)
(func $block_and_after (type $5) (result i32)
(block $waka
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
(br $waka)
)
(i32.const 0)
)
(func $loop-roundtrip (type $7) (param $0 f64) (result f64)
(loop $loop-out0 $loop-in1
- (get_local $0)
+ (drop
+ (get_local $0)
+ )
(get_local $0)
)
)
diff --git a/test/unit.wast.fromBinary b/test/unit.wast.fromBinary
index 29d53598a..621f9aeb6 100644
--- a/test/unit.wast.fromBinary
+++ b/test/unit.wast.fromBinary
@@ -151,12 +151,14 @@
)
)
(func $hexLiterals (type $1)
- (i32.add
+ (drop
(i32.add
- (i32.const 0)
- (i32.const 313249263)
+ (i32.add
+ (i32.const 0)
+ (i32.const 313249263)
+ )
+ (i32.const -19088752)
)
- (i32.const -19088752)
)
)
(func $conversions (type $1)
@@ -188,11 +190,15 @@
(set_local $var$0
(f64.sub
(block $label$0
- (f64.const 0.1)
+ (drop
+ (f64.const 0.1)
+ )
(f64.const 5.1)
)
(block $label$1
- (f64.const 3.2)
+ (drop
+ (f64.const 3.2)
+ )
(f64.const 4.2)
)
)
@@ -310,14 +316,26 @@
(local $var$1 f32)
(local $var$2 f64)
(block $label$0
- (f32.demote/f64
- (get_local $var$2)
+ (drop
+ (f32.demote/f64
+ (get_local $var$2)
+ )
+ )
+ (drop
+ (get_local $var$1)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
+ )
+ (drop
+ (f32.const 5)
+ )
+ (drop
+ (f32.const 0)
)
- (get_local $var$1)
- (f32.const 5)
- (f32.const 0)
- (f32.const 5)
- (f32.const 0)
)
)
(func $negZero (type $4) (result f64)
@@ -393,12 +411,14 @@
)
(func $___syscall_ret (type $1)
(local $var$0 i32)
- (i32.gt_u
- (i32.shr_u
- (get_local $var$0)
- (i32.const 0)
+ (drop
+ (i32.gt_u
+ (i32.shr_u
+ (get_local $var$0)
+ (i32.const 0)
+ )
+ (i32.const -4096)
)
- (i32.const -4096)
)
)
(func $z (type $1)
@@ -410,7 +430,9 @@
(func $block_and_after (type $5) (result i32)
(block $label$0
(block $label$1
- (i32.const 1)
+ (drop
+ (i32.const 1)
+ )
(br $label$1)
)
(i32.const 0)
@@ -418,7 +440,9 @@
)
(func $loop-roundtrip (type $7) (param $var$0 f64) (result f64)
(loop $label$0 $label$1
- (get_local $var$0)
+ (drop
+ (get_local $var$0)
+ )
(get_local $var$0)
)
)