summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/Inlining.cpp50
-rw-r--r--test/dynamicLibrary.fromasm1
-rw-r--r--test/dynamicLibrary.fromasm.clamp1
-rw-r--r--test/dynamicLibrary.fromasm.imprecise1
-rw-r--r--test/emcc_O2_hello_world.fromasm115
-rw-r--r--test/emcc_O2_hello_world.fromasm.clamp115
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise121
-rw-r--r--test/emcc_hello_world.fromasm123
-rw-r--r--test/emcc_hello_world.fromasm.clamp127
-rw-r--r--test/emcc_hello_world.fromasm.imprecise127
-rw-r--r--test/memorygrowth.fromasm91
-rw-r--r--test/memorygrowth.fromasm.clamp91
-rw-r--r--test/memorygrowth.fromasm.imprecise105
-rw-r--r--test/passes/inlining-optimizing.txt16
-rw-r--r--test/passes/inlining-optimizing.wast16
-rw-r--r--test/passes/inlining-optimizing_optimize-level=3.txt12
-rw-r--r--test/passes/inlining.txt19
-rw-r--r--test/passes/inlining_optimize-level=3.txt10
-rw-r--r--test/wasm-only.fromasm43
-rw-r--r--test/wasm-only.fromasm.clamp43
-rw-r--r--test/wasm-only.fromasm.imprecise64
21 files changed, 420 insertions, 871 deletions
diff --git a/src/passes/Inlining.cpp b/src/passes/Inlining.cpp
index 79785811c..3a244948a 100644
--- a/src/passes/Inlining.cpp
+++ b/src/passes/Inlining.cpp
@@ -46,6 +46,10 @@ static const int CAREFUL_SIZE_LIMIT = 15;
// functions (i32s-div, f64-to-int, etc.), that can affect perf.
static const int FLEXIBLE_SIZE_LIMIT = 20;
+// A size so small that after optimizations, the inlined code will be
+// smaller than the call instruction itself.
+static const int INLINING_OPTIMIZING_WILL_DECREASE_SIZE_LIMIT = 1;
+
// Useful into on a function, helping us decide if we can inline it
struct FunctionInfo {
std::atomic<Index> calls;
@@ -60,9 +64,14 @@ struct FunctionInfo {
usedGlobally = false;
}
- bool worthInlining(PassOptions& options, bool allowMultipleInliningsPerFunction) {
+ bool worthInlining(PassOptions& options,
+ bool allowMultipleInliningsPerFunction,
+ bool optimizing) {
// if it's big, it's just not worth doing (TODO: investigate more)
if (size > FLEXIBLE_SIZE_LIMIT) return false;
+ // if it's so small we have a guarantee that after we optimize the
+ // size will not increase, inline it
+ if (optimizing && size <= INLINING_OPTIMIZING_WILL_DECREASE_SIZE_LIMIT) return true;
// if it has one use, then inlining it would likely reduce code size
// since we are just moving code around, + optimizing, so worth it
// if small enough that we are pretty sure its ok
@@ -130,9 +139,11 @@ struct Planner : public WalkerPass<PostWalker<Planner>> {
void visitCall(Call* curr) {
// plan to inline if we know this is valid to inline, and if the call is
- // actually performed - if it is dead code, it's pointless to inline
+ // actually performed - if it is dead code, it's pointless to inline.
+ // we also cannot inline ourselves.
if (state->worthInlining.count(curr->target) &&
- curr->type != unreachable) {
+ curr->type != unreachable &&
+ curr->target != getFunction()->name) {
// nest the call in a block. that way the location of the pointer to the call will not
// change even if we inline multiple times into the same function, otherwise
// call1(call2()) might be a problem
@@ -144,11 +155,7 @@ struct Planner : public WalkerPass<PostWalker<Planner>> {
}
void doWalkFunction(Function* func) {
- // we shouldn't inline into us if we are to be inlined
- // ourselves - that has the risk of cycles
- if (state->worthInlining.count(func->name) == 0) {
- walk(func->body);
- }
+ walk(func->body);
}
private:
@@ -261,7 +268,9 @@ struct Inlining : public Pass {
InliningState state;
for (auto& func : module->functions) {
// on the first iteration, allow multiple inlinings per function
- if (infos[func->name].worthInlining(runner->options, firstIteration /* allowMultipleInliningsPerFunction */)) {
+ if (infos[func->name].worthInlining(runner->options,
+ firstIteration /* allowMultipleInliningsPerFunction */,
+ optimize)) {
state.worthInlining.insert(func->name);
}
}
@@ -281,8 +290,22 @@ struct Inlining : public Pass {
std::unordered_map<Name, Index> inlinedUses; // how many uses we inlined
std::unordered_set<Function*> inlinedInto; // which functions were inlined into
for (auto& func : module->functions) {
+ // if we've inlined a function, don't inline into it in this iteration,
+ // avoid risk of loops
+ // note that we do not risk stalling progress, as each iteration() will
+ // inline at least one call before hitting this
+ if (inlinedUses.count(func->name)) continue;
for (auto& action : state.actionsForFunction[func->name]) {
- Name inlinedName = action.contents->name;
+ auto* inlinedFunction = action.contents;
+ // if we've inlined into a function, don't inline it in this iteration,
+ // avoid risk of loops
+ // note that we do not risk stalling progress, as each iteration() will
+ // inline at least one call before hitting this
+ if (inlinedInto.count(inlinedFunction)) continue;
+ Name inlinedName = inlinedFunction->name;
+#ifdef INLINING_DEBUG
+ std::cout << "inline " << inlinedName << " into " << func->name << '\n';
+#endif
doInlining(module, func.get(), action);
inlinedUses[inlinedName]++;
inlinedInto.insert(func.get());
@@ -301,7 +324,11 @@ struct Inlining : public Pass {
funcs.erase(std::remove_if(funcs.begin(), funcs.end(), [&](const std::unique_ptr<Function>& curr) {
auto name = curr->name;
auto& info = infos[name];
- return inlinedUses.count(name) && inlinedUses[name] == info.calls && !info.usedGlobally;
+ bool canRemove = inlinedUses.count(name) && inlinedUses[name] == info.calls && !info.usedGlobally;
+#ifdef INLINING_DEBUG
+ std::cout << "removing " << name << '\n';
+#endif
+ return canRemove;
}), funcs.end());
// return whether we did any work
return inlinedUses.size() > 0;
@@ -329,6 +356,7 @@ struct Inlining : public Pass {
runner.add("reorder-locals");
runner.add("remove-unused-brs");
runner.add("merge-blocks");
+ runner.add("vacuum");
runner.run();
// restore all the funcs
for (auto& func : module->functions) {
diff --git a/test/dynamicLibrary.fromasm b/test/dynamicLibrary.fromasm
index 2d849c931..295451b4c 100644
--- a/test/dynamicLibrary.fromasm
+++ b/test/dynamicLibrary.fromasm
@@ -58,7 +58,6 @@
(i32.const 5242880)
)
)
- (call $runPostSets)
(call $__ZN3FooC2Ev
(i32.add
(get_global $memoryBase)
diff --git a/test/dynamicLibrary.fromasm.clamp b/test/dynamicLibrary.fromasm.clamp
index 2d849c931..295451b4c 100644
--- a/test/dynamicLibrary.fromasm.clamp
+++ b/test/dynamicLibrary.fromasm.clamp
@@ -58,7 +58,6 @@
(i32.const 5242880)
)
)
- (call $runPostSets)
(call $__ZN3FooC2Ev
(i32.add
(get_global $memoryBase)
diff --git a/test/dynamicLibrary.fromasm.imprecise b/test/dynamicLibrary.fromasm.imprecise
index 09619276a..58d9559ad 100644
--- a/test/dynamicLibrary.fromasm.imprecise
+++ b/test/dynamicLibrary.fromasm.imprecise
@@ -56,7 +56,6 @@
(i32.const 5242880)
)
)
- (call $runPostSets)
(call $__ZN3FooC2Ev
(i32.add
(get_global $memoryBase)
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index 082240fc4..b046c9fe9 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -8288,7 +8288,7 @@
(i32.const -1)
)
(block
- (set_local $2
+ (set_local $1
(call $___fflush_unlocked
(get_local $0)
)
@@ -8297,23 +8297,13 @@
)
)
(set_local $1
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
- (set_local $2
(call $___fflush_unlocked
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $1)
- )
- (call $___unlockfile
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8335,16 +8325,16 @@
(i32.const 36)
)
(if
- (tee_local $2
+ (tee_local $1
(i32.load
(i32.const 32)
)
)
(block
- (set_local $1
- (get_local $2)
- )
(set_local $2
+ (get_local $1)
+ )
+ (set_local $1
(get_local $0)
)
(loop $while-in
@@ -8352,50 +8342,42 @@
(if (result i32)
(i32.gt_s
(i32.load offset=76
- (get_local $1)
+ (get_local $2)
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
(if
(i32.gt_u
(i32.load offset=20
- (get_local $1)
+ (get_local $2)
)
(i32.load offset=28
- (get_local $1)
+ (get_local $2)
)
)
- (set_local $2
+ (set_local $1
(i32.or
(call $___fflush_unlocked
- (get_local $1)
+ (get_local $2)
)
- (get_local $2)
+ (get_local $1)
)
)
)
- (if
- (get_local $0)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
- (tee_local $1
+ (tee_local $2
(i32.load offset=56
- (get_local $1)
+ (get_local $2)
)
)
)
)
)
- (set_local $2
+ (set_local $1
(get_local $0)
)
)
@@ -8405,7 +8387,7 @@
)
)
)
- (get_local $2)
+ (get_local $1)
)
(func $_strlen (; 20 ;) (param $0 i32) (result i32)
(local $1 i32)
@@ -9133,9 +9115,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9211,12 +9191,6 @@
)
)
)
- (if
- (get_local $3)
- (call $___unlockfile
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9374,7 +9348,6 @@
)
(func $_fwrite (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9388,28 +9361,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $___lockfile
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $___fwritex
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $___unlockfile
- (get_local $3)
- )
+ (set_local $0
+ (call $___fwritex
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9631,13 +9587,8 @@
)
)
(func $_cleanup_418 (; 38 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
@@ -9684,16 +9635,10 @@
)
(i32.const 0)
)
- (func $___unlockfile (; 45 ;) (param $0 i32)
- (nop)
- )
- (func $___lockfile (; 46 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $getTempRet0 (; 47 ;) (result i32)
+ (func $getTempRet0 (; 45 ;) (result i32)
(get_global $tempRet0)
)
- (func $_main (; 48 ;) (result i32)
+ (func $_main (; 46 ;) (result i32)
(drop
(call $_puts
(i32.const 672)
@@ -9701,10 +9646,10 @@
)
(i32.const 0)
)
- (func $stackSave (; 49 ;) (result i32)
+ (func $stackSave (; 47 ;) (result i32)
(get_global $STACKTOP)
)
- (func $b2 (; 50 ;) (param $0 i32)
+ (func $b2 (; 48 ;) (param $0 i32)
(call $abort
(i32.const 2)
)
diff --git a/test/emcc_O2_hello_world.fromasm.clamp b/test/emcc_O2_hello_world.fromasm.clamp
index 082240fc4..b046c9fe9 100644
--- a/test/emcc_O2_hello_world.fromasm.clamp
+++ b/test/emcc_O2_hello_world.fromasm.clamp
@@ -8288,7 +8288,7 @@
(i32.const -1)
)
(block
- (set_local $2
+ (set_local $1
(call $___fflush_unlocked
(get_local $0)
)
@@ -8297,23 +8297,13 @@
)
)
(set_local $1
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
- (set_local $2
(call $___fflush_unlocked
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $1)
- )
- (call $___unlockfile
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8335,16 +8325,16 @@
(i32.const 36)
)
(if
- (tee_local $2
+ (tee_local $1
(i32.load
(i32.const 32)
)
)
(block
- (set_local $1
- (get_local $2)
- )
(set_local $2
+ (get_local $1)
+ )
+ (set_local $1
(get_local $0)
)
(loop $while-in
@@ -8352,50 +8342,42 @@
(if (result i32)
(i32.gt_s
(i32.load offset=76
- (get_local $1)
+ (get_local $2)
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
(if
(i32.gt_u
(i32.load offset=20
- (get_local $1)
+ (get_local $2)
)
(i32.load offset=28
- (get_local $1)
+ (get_local $2)
)
)
- (set_local $2
+ (set_local $1
(i32.or
(call $___fflush_unlocked
- (get_local $1)
+ (get_local $2)
)
- (get_local $2)
+ (get_local $1)
)
)
)
- (if
- (get_local $0)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
- (tee_local $1
+ (tee_local $2
(i32.load offset=56
- (get_local $1)
+ (get_local $2)
)
)
)
)
)
- (set_local $2
+ (set_local $1
(get_local $0)
)
)
@@ -8405,7 +8387,7 @@
)
)
)
- (get_local $2)
+ (get_local $1)
)
(func $_strlen (; 20 ;) (param $0 i32) (result i32)
(local $1 i32)
@@ -9133,9 +9115,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9211,12 +9191,6 @@
)
)
)
- (if
- (get_local $3)
- (call $___unlockfile
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9374,7 +9348,6 @@
)
(func $_fwrite (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9388,28 +9361,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $___lockfile
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $___fwritex
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $___unlockfile
- (get_local $3)
- )
+ (set_local $0
+ (call $___fwritex
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9631,13 +9587,8 @@
)
)
(func $_cleanup_418 (; 38 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
@@ -9684,16 +9635,10 @@
)
(i32.const 0)
)
- (func $___unlockfile (; 45 ;) (param $0 i32)
- (nop)
- )
- (func $___lockfile (; 46 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $getTempRet0 (; 47 ;) (result i32)
+ (func $getTempRet0 (; 45 ;) (result i32)
(get_global $tempRet0)
)
- (func $_main (; 48 ;) (result i32)
+ (func $_main (; 46 ;) (result i32)
(drop
(call $_puts
(i32.const 672)
@@ -9701,10 +9646,10 @@
)
(i32.const 0)
)
- (func $stackSave (; 49 ;) (result i32)
+ (func $stackSave (; 47 ;) (result i32)
(get_global $STACKTOP)
)
- (func $b2 (; 50 ;) (param $0 i32)
+ (func $b2 (; 48 ;) (param $0 i32)
(call $abort
(i32.const 2)
)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise
index 0bad341fb..ff0fa1fe3 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise
+++ b/test/emcc_O2_hello_world.fromasm.imprecise
@@ -8287,7 +8287,7 @@
(i32.const -1)
)
(block
- (set_local $2
+ (set_local $1
(call $___fflush_unlocked
(get_local $0)
)
@@ -8296,23 +8296,13 @@
)
)
(set_local $1
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
- (set_local $2
(call $___fflush_unlocked
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $1)
- )
- (call $___unlockfile
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8334,67 +8324,59 @@
(i32.const 36)
)
(if
- (tee_local $2
+ (tee_local $1
(i32.load
(i32.const 32)
)
)
(block
- (set_local $1
- (get_local $2)
- )
(set_local $2
+ (get_local $1)
+ )
+ (set_local $1
(get_local $0)
)
(loop $while-in
(set_local $0
- (if (result i32)
+ (select
+ (i32.const 0)
+ (i32.const 0)
(i32.gt_s
(i32.load offset=76
- (get_local $1)
+ (get_local $2)
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
- (i32.const 0)
)
)
(if
(i32.gt_u
(i32.load offset=20
- (get_local $1)
+ (get_local $2)
)
(i32.load offset=28
- (get_local $1)
+ (get_local $2)
)
)
- (set_local $2
+ (set_local $1
(i32.or
(call $___fflush_unlocked
- (get_local $1)
+ (get_local $2)
)
- (get_local $2)
+ (get_local $1)
)
)
)
- (if
- (get_local $0)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
- (tee_local $1
+ (tee_local $2
(i32.load offset=56
- (get_local $1)
+ (get_local $2)
)
)
)
)
)
- (set_local $2
+ (set_local $1
(get_local $0)
)
)
@@ -8404,7 +8386,7 @@
)
)
)
- (get_local $2)
+ (get_local $1)
)
(func $_strlen (; 20 ;) (param $0 i32) (result i32)
(local $1 i32)
@@ -9132,9 +9114,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9210,12 +9190,6 @@
)
)
)
- (if
- (get_local $3)
- (call $___unlockfile
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9373,7 +9347,6 @@
)
(func $_fwrite (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9387,28 +9360,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $___lockfile
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $___fwritex
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $___unlockfile
- (get_local $3)
- )
+ (set_local $0
+ (call $___fwritex
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9626,16 +9582,7 @@
)
)
(func $_cleanup_418 (; 38 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
- (get_local $0)
- )
- )
+ (nop)
)
(func $establishStackSpace (; 39 ;) (param $0 i32) (param $1 i32)
(set_global $STACKTOP
@@ -9679,16 +9626,10 @@
)
(i32.const 0)
)
- (func $___unlockfile (; 45 ;) (param $0 i32)
- (nop)
- )
- (func $___lockfile (; 46 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $getTempRet0 (; 47 ;) (result i32)
+ (func $getTempRet0 (; 45 ;) (result i32)
(get_global $tempRet0)
)
- (func $_main (; 48 ;) (result i32)
+ (func $_main (; 46 ;) (result i32)
(drop
(call $_puts
(i32.const 672)
@@ -9696,10 +9637,10 @@
)
(i32.const 0)
)
- (func $stackSave (; 49 ;) (result i32)
+ (func $stackSave (; 47 ;) (result i32)
(get_global $STACKTOP)
)
- (func $b2 (; 50 ;) (param $0 i32)
+ (func $b2 (; 48 ;) (param $0 i32)
(call $abort
(i32.const 2)
)
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index 849b42aac..fa4ef94fd 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -566,13 +566,6 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
(set_local $1
(call $___fflush_unlocked
(get_local $0)
@@ -580,14 +573,13 @@
)
(set_local $0
(if (result i32)
- (get_local $2)
- (get_local $1)
- (block (result i32)
- (call $___unlockfile
- (get_local $0)
+ (tee_local $2
+ (i32.eqz
+ (i32.const 0)
)
- (get_local $1)
)
+ (get_local $1)
+ (get_local $1)
)
)
)
@@ -623,9 +615,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -647,12 +637,6 @@
)
)
)
- (if
- (get_local $2)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -709,13 +693,7 @@
)
(get_local $0)
)
- (func $___lockfile (; 35 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $___unlockfile (; 36 ;) (param $0 i32)
- (nop)
- )
- (func $___stdio_write (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___stdio_write (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1061,7 +1039,7 @@
)
(get_local $2)
)
- (func $_vfprintf (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_vfprintf (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1163,9 +1141,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $0)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -1331,12 +1307,6 @@
)
)
)
- (if
- (get_local $14)
- (call $___unlockfile
- (get_local $0)
- )
- )
(select
(i32.const -1)
(get_local $1)
@@ -1353,7 +1323,7 @@
)
(get_local $0)
)
- (func $___fwritex (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___fwritex (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1539,7 +1509,7 @@
)
(get_local $3)
)
- (func $___towrite (; 40 ;) (param $0 i32) (result i32)
+ (func $___towrite (; 38 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(set_local $1
@@ -1617,7 +1587,7 @@
)
)
)
- (func $_wcrtomb (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_wcrtomb (; 39 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $do-once (result i32)
(if (result i32)
(get_local $0)
@@ -1791,7 +1761,7 @@
)
)
)
- (func $_wctomb (; 42 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $_wctomb (; 40 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $0)
(call $_wcrtomb
@@ -1802,7 +1772,7 @@
(i32.const 0)
)
)
- (func $_memchr (; 43 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 41 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -2033,7 +2003,7 @@
(get_local $0)
)
)
- (func $___syscall_ret (; 44 ;) (param $0 i32) (result i32)
+ (func $___syscall_ret (; 42 ;) (param $0 i32) (result i32)
(if (result i32)
(i32.gt_u
(get_local $0)
@@ -2052,7 +2022,7 @@
(get_local $0)
)
)
- (func $___fflush_unlocked (; 45 ;) (param $0 i32) (result i32)
+ (func $___fflush_unlocked (; 43 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -2174,19 +2144,14 @@
)
)
)
- (func $_cleanup (; 46 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
+ (func $_cleanup (; 44 ;) (param $0 i32)
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
)
- (func $i32s-div (; 47 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32s-div (; 45 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(if (result i32)
@@ -2209,7 +2174,7 @@
(i32.const 0)
)
)
- (func $i32u-rem (; 48 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32u-rem (; 46 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(i32.rem_u
@@ -2219,7 +2184,7 @@
(i32.const 0)
)
)
- (func $i32u-div (; 49 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32u-div (; 47 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(i32.div_u
@@ -2229,7 +2194,7 @@
(i32.const 0)
)
)
- (func $_printf_core (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
+ (func $_printf_core (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7113,7 +7078,7 @@
)
(get_local $16)
)
- (func $_pop_arg_336 (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $_pop_arg_336 (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 f64)
(local $5 i32)
@@ -7513,7 +7478,7 @@
)
)
)
- (func $_fmt_u (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_fmt_u (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(if
@@ -7635,7 +7600,7 @@
)
(get_local $2)
)
- (func $_pad (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
+ (func $_pad (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7783,7 +7748,7 @@
(get_local $7)
)
)
- (func $_malloc (; 54 ;) (param $0 i32) (result i32)
+ (func $_malloc (; 52 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -13232,7 +13197,7 @@
(i32.const 8)
)
)
- (func $_free (; 55 ;) (param $0 i32)
+ (func $_free (; 53 ;) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -15009,10 +14974,10 @@
(i32.const -1)
)
)
- (func $runPostSets (; 56 ;)
+ (func $runPostSets (; 54 ;)
(nop)
)
- (func $_i64Subtract (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Subtract (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(set_global $tempRet0
(i32.sub
(i32.sub
@@ -15030,7 +14995,7 @@
(get_local $2)
)
)
- (func $_i64Add (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Add (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_global $tempRet0
(i32.add
@@ -15051,7 +15016,7 @@
)
(get_local $4)
)
- (func $_memset (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memset (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -15189,7 +15154,7 @@
(get_local $2)
)
)
- (func $_bitshift64Lshr (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Lshr (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15239,7 +15204,7 @@
)
)
)
- (func $_bitshift64Shl (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Shl (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15295,7 +15260,7 @@
)
(i32.const 0)
)
- (func $_memcpy (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memcpy (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.ge_s
@@ -15442,7 +15407,7 @@
)
(get_local $3)
)
- (func $___udivdi3 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___udivdi3 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call $___udivmoddi4
(get_local $0)
(get_local $1)
@@ -15451,7 +15416,7 @@
(i32.const 0)
)
)
- (func $___uremdi3 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___uremdi3 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_local $4
(get_global $STACKTOP)
@@ -15485,7 +15450,7 @@
(get_local $0)
)
)
- (func $___udivmoddi4 (; 65 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
+ (func $___udivmoddi4 (; 63 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
(local $x64 i64)
(local $y64 i64)
(set_local $x64
@@ -15542,7 +15507,7 @@
(get_local $x64)
)
)
- (func $dynCall_ii (; 66 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $dynCall_ii (; 64 ;) (param $0 i32) (param $1 i32) (result i32)
(call_indirect (type $FUNCSIG$ii)
(get_local $1)
(i32.and
@@ -15551,7 +15516,7 @@
)
)
)
- (func $dynCall_iiii (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $dynCall_iiii (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call_indirect (type $FUNCSIG$iiii)
(get_local $1)
(get_local $2)
@@ -15565,7 +15530,7 @@
)
)
)
- (func $dynCall_vi (; 68 ;) (param $0 i32) (param $1 i32)
+ (func $dynCall_vi (; 66 ;) (param $0 i32) (param $1 i32)
(call_indirect (type $FUNCSIG$vi)
(get_local $1)
(i32.add
@@ -15577,19 +15542,19 @@
)
)
)
- (func $b0 (; 69 ;) (param $0 i32) (result i32)
+ (func $b0 (; 67 ;) (param $0 i32) (result i32)
(call $nullFunc_ii
(i32.const 0)
)
(i32.const 0)
)
- (func $b1 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $b1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $nullFunc_iiii
(i32.const 1)
)
(i32.const 0)
)
- (func $b2 (; 71 ;) (param $0 i32)
+ (func $b2 (; 69 ;) (param $0 i32)
(call $nullFunc_vi
(i32.const 2)
)
diff --git a/test/emcc_hello_world.fromasm.clamp b/test/emcc_hello_world.fromasm.clamp
index 1a55405ac..c1c7f1485 100644
--- a/test/emcc_hello_world.fromasm.clamp
+++ b/test/emcc_hello_world.fromasm.clamp
@@ -564,13 +564,6 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
(set_local $1
(call $___fflush_unlocked
(get_local $0)
@@ -578,14 +571,13 @@
)
(set_local $0
(if (result i32)
- (get_local $2)
- (get_local $1)
- (block (result i32)
- (call $___unlockfile
- (get_local $0)
+ (tee_local $2
+ (i32.eqz
+ (i32.const 0)
)
- (get_local $1)
)
+ (get_local $1)
+ (get_local $1)
)
)
)
@@ -621,9 +613,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -645,12 +635,6 @@
)
)
)
- (if
- (get_local $2)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -707,13 +691,7 @@
)
(get_local $0)
)
- (func $___lockfile (; 34 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $___unlockfile (; 35 ;) (param $0 i32)
- (nop)
- )
- (func $___stdio_write (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___stdio_write (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1059,7 +1037,7 @@
)
(get_local $2)
)
- (func $_vfprintf (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_vfprintf (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1161,9 +1139,7 @@
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $0)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -1329,12 +1305,6 @@
)
)
)
- (if
- (get_local $14)
- (call $___unlockfile
- (get_local $0)
- )
- )
(select
(i32.const -1)
(get_local $1)
@@ -1351,7 +1321,7 @@
)
(get_local $0)
)
- (func $___fwritex (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___fwritex (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1537,7 +1507,7 @@
)
(get_local $3)
)
- (func $___towrite (; 39 ;) (param $0 i32) (result i32)
+ (func $___towrite (; 37 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(set_local $1
@@ -1615,7 +1585,7 @@
)
)
)
- (func $_wcrtomb (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_wcrtomb (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $do-once (result i32)
(if (result i32)
(get_local $0)
@@ -1789,7 +1759,7 @@
)
)
)
- (func $_wctomb (; 41 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $_wctomb (; 39 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $0)
(call $_wcrtomb
@@ -1800,7 +1770,7 @@
(i32.const 0)
)
)
- (func $_memchr (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -2031,7 +2001,7 @@
(get_local $0)
)
)
- (func $___syscall_ret (; 43 ;) (param $0 i32) (result i32)
+ (func $___syscall_ret (; 41 ;) (param $0 i32) (result i32)
(if (result i32)
(i32.gt_u
(get_local $0)
@@ -2050,7 +2020,7 @@
(get_local $0)
)
)
- (func $___fflush_unlocked (; 44 ;) (param $0 i32) (result i32)
+ (func $___fflush_unlocked (; 42 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -2172,19 +2142,14 @@
)
)
)
- (func $_cleanup (; 45 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
+ (func $_cleanup (; 43 ;) (param $0 i32)
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
)
- (func $f64-to-int (; 46 ;) (param $0 f64) (result i32)
+ (func $f64-to-int (; 44 ;) (param $0 f64) (result i32)
(if (result i32)
(f64.ne
(get_local $0)
@@ -2210,7 +2175,7 @@
)
)
)
- (func $f64-to-uint (; 47 ;) (param $0 f64) (result i32)
+ (func $f64-to-uint (; 45 ;) (param $0 f64) (result i32)
(if (result i32)
(f64.ne
(get_local $0)
@@ -2236,7 +2201,7 @@
)
)
)
- (func $i32s-div (; 48 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32s-div (; 46 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(if (result i32)
@@ -2259,7 +2224,7 @@
(i32.const 0)
)
)
- (func $i32u-rem (; 49 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32u-rem (; 47 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(i32.rem_u
@@ -2269,7 +2234,7 @@
(i32.const 0)
)
)
- (func $i32u-div (; 50 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $i32u-div (; 48 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
(i32.div_u
@@ -2279,7 +2244,7 @@
(i32.const 0)
)
)
- (func $_printf_core (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
+ (func $_printf_core (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7163,7 +7128,7 @@
)
(get_local $16)
)
- (func $_pop_arg_336 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $_pop_arg_336 (; 50 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 f64)
(local $5 i32)
@@ -7563,7 +7528,7 @@
)
)
)
- (func $_fmt_u (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_fmt_u (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(if
@@ -7685,7 +7650,7 @@
)
(get_local $2)
)
- (func $_pad (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
+ (func $_pad (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7833,7 +7798,7 @@
(get_local $7)
)
)
- (func $_malloc (; 55 ;) (param $0 i32) (result i32)
+ (func $_malloc (; 53 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -13282,7 +13247,7 @@
(i32.const 8)
)
)
- (func $_free (; 56 ;) (param $0 i32)
+ (func $_free (; 54 ;) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -15059,10 +15024,10 @@
(i32.const -1)
)
)
- (func $runPostSets (; 57 ;)
+ (func $runPostSets (; 55 ;)
(nop)
)
- (func $_i64Subtract (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Subtract (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(set_global $tempRet0
(i32.sub
(i32.sub
@@ -15080,7 +15045,7 @@
(get_local $2)
)
)
- (func $_i64Add (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Add (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_global $tempRet0
(i32.add
@@ -15101,7 +15066,7 @@
)
(get_local $4)
)
- (func $_memset (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memset (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -15239,7 +15204,7 @@
(get_local $2)
)
)
- (func $_bitshift64Lshr (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Lshr (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15289,7 +15254,7 @@
)
)
)
- (func $_bitshift64Shl (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Shl (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15345,7 +15310,7 @@
)
(i32.const 0)
)
- (func $_memcpy (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memcpy (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.ge_s
@@ -15492,7 +15457,7 @@
)
(get_local $3)
)
- (func $___udivdi3 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___udivdi3 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call $___udivmoddi4
(get_local $0)
(get_local $1)
@@ -15501,7 +15466,7 @@
(i32.const 0)
)
)
- (func $___uremdi3 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___uremdi3 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_local $4
(get_global $STACKTOP)
@@ -15535,7 +15500,7 @@
(get_local $0)
)
)
- (func $___udivmoddi4 (; 66 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
+ (func $___udivmoddi4 (; 64 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
(local $x64 i64)
(local $y64 i64)
(set_local $x64
@@ -15592,7 +15557,7 @@
(get_local $x64)
)
)
- (func $dynCall_ii (; 67 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $dynCall_ii (; 65 ;) (param $0 i32) (param $1 i32) (result i32)
(call_indirect (type $FUNCSIG$ii)
(get_local $1)
(i32.and
@@ -15601,7 +15566,7 @@
)
)
)
- (func $dynCall_iiii (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $dynCall_iiii (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call_indirect (type $FUNCSIG$iiii)
(get_local $1)
(get_local $2)
@@ -15615,7 +15580,7 @@
)
)
)
- (func $dynCall_vi (; 69 ;) (param $0 i32) (param $1 i32)
+ (func $dynCall_vi (; 67 ;) (param $0 i32) (param $1 i32)
(call_indirect (type $FUNCSIG$vi)
(get_local $1)
(i32.add
@@ -15627,19 +15592,19 @@
)
)
)
- (func $b0 (; 70 ;) (param $0 i32) (result i32)
+ (func $b0 (; 68 ;) (param $0 i32) (result i32)
(call $nullFunc_ii
(i32.const 0)
)
(i32.const 0)
)
- (func $b1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $b1 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $nullFunc_iiii
(i32.const 1)
)
(i32.const 0)
)
- (func $b2 (; 72 ;) (param $0 i32)
+ (func $b2 (; 70 ;) (param $0 i32)
(call $nullFunc_vi
(i32.const 2)
)
diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise
index 34f3e1c95..b19993aa8 100644
--- a/test/emcc_hello_world.fromasm.imprecise
+++ b/test/emcc_hello_world.fromasm.imprecise
@@ -563,13 +563,6 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $___lockfile
- (get_local $0)
- )
- )
- )
(set_local $1
(call $___fflush_unlocked
(get_local $0)
@@ -577,14 +570,13 @@
)
(set_local $0
(if (result i32)
- (get_local $2)
- (get_local $1)
- (block (result i32)
- (call $___unlockfile
- (get_local $0)
+ (tee_local $2
+ (i32.eqz
+ (i32.const 0)
)
- (get_local $1)
)
+ (get_local $1)
+ (get_local $1)
)
)
)
@@ -613,17 +605,15 @@
)
(loop $while-in
(set_local $2
- (if (result i32)
+ (select
+ (i32.const 0)
+ (i32.const 0)
(i32.gt_s
(i32.load offset=76
(get_local $1)
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $1)
- )
- (i32.const 0)
)
)
(if
@@ -644,12 +634,6 @@
)
)
)
- (if
- (get_local $2)
- (call $___unlockfile
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -706,13 +690,7 @@
)
(get_local $0)
)
- (func $___lockfile (; 34 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $___unlockfile (; 35 ;) (param $0 i32)
- (nop)
- )
- (func $___stdio_write (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___stdio_write (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1058,7 +1036,7 @@
)
(get_local $2)
)
- (func $_vfprintf (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_vfprintf (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1153,17 +1131,15 @@
(i32.const -1)
(block (result i32)
(set_local $14
- (if (result i32)
+ (select
+ (i32.const 0)
+ (i32.const 0)
(i32.gt_s
(i32.load offset=76
(get_local $0)
)
(i32.const -1)
)
- (call $___lockfile
- (get_local $0)
- )
- (i32.const 0)
)
)
(set_local $10
@@ -1328,12 +1304,6 @@
)
)
)
- (if
- (get_local $14)
- (call $___unlockfile
- (get_local $0)
- )
- )
(select
(i32.const -1)
(get_local $1)
@@ -1350,7 +1320,7 @@
)
(get_local $0)
)
- (func $___fwritex (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___fwritex (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -1536,7 +1506,7 @@
)
(get_local $3)
)
- (func $___towrite (; 39 ;) (param $0 i32) (result i32)
+ (func $___towrite (; 37 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(set_local $1
@@ -1614,7 +1584,7 @@
)
)
)
- (func $_wcrtomb (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_wcrtomb (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(block $do-once (result i32)
(if (result i32)
(get_local $0)
@@ -1788,7 +1758,7 @@
)
)
)
- (func $_wctomb (; 41 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $_wctomb (; 39 ;) (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $0)
(call $_wcrtomb
@@ -1799,7 +1769,7 @@
(i32.const 0)
)
)
- (func $_memchr (; 42 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 40 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -2030,7 +2000,7 @@
(get_local $0)
)
)
- (func $___syscall_ret (; 43 ;) (param $0 i32) (result i32)
+ (func $___syscall_ret (; 41 ;) (param $0 i32) (result i32)
(if (result i32)
(i32.gt_u
(get_local $0)
@@ -2049,7 +2019,7 @@
(get_local $0)
)
)
- (func $___fflush_unlocked (; 44 ;) (param $0 i32) (result i32)
+ (func $___fflush_unlocked (; 42 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -2171,19 +2141,10 @@
)
)
)
- (func $_cleanup (; 45 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $___unlockfile
- (get_local $0)
- )
- )
+ (func $_cleanup (; 43 ;) (param $0 i32)
+ (nop)
)
- (func $_printf_core (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
+ (func $_printf_core (; 44 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (result i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7052,7 +7013,7 @@
)
(get_local $16)
)
- (func $_pop_arg_336 (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $_pop_arg_336 (; 45 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 f64)
(local $5 i32)
@@ -7452,7 +7413,7 @@
)
)
)
- (func $_fmt_u (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_fmt_u (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(if
@@ -7574,7 +7535,7 @@
)
(get_local $2)
)
- (func $_pad (; 49 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
+ (func $_pad (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
@@ -7722,7 +7683,7 @@
(get_local $7)
)
)
- (func $_malloc (; 50 ;) (param $0 i32) (result i32)
+ (func $_malloc (; 48 ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -13171,7 +13132,7 @@
(i32.const 8)
)
)
- (func $_free (; 51 ;) (param $0 i32)
+ (func $_free (; 49 ;) (param $0 i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
@@ -14947,10 +14908,10 @@
(i32.const -1)
)
)
- (func $runPostSets (; 52 ;)
+ (func $runPostSets (; 50 ;)
(nop)
)
- (func $_i64Subtract (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Subtract (; 51 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(set_global $tempRet0
(i32.sub
(i32.sub
@@ -14968,7 +14929,7 @@
(get_local $2)
)
)
- (func $_i64Add (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $_i64Add (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_global $tempRet0
(i32.add
@@ -14989,7 +14950,7 @@
)
(get_local $4)
)
- (func $_memset (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memset (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -15127,7 +15088,7 @@
(get_local $2)
)
)
- (func $_bitshift64Lshr (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Lshr (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15177,7 +15138,7 @@
)
)
)
- (func $_bitshift64Shl (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_bitshift64Shl (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(if
(i32.lt_s
(get_local $2)
@@ -15233,7 +15194,7 @@
)
(i32.const 0)
)
- (func $_memcpy (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memcpy (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.ge_s
@@ -15380,7 +15341,7 @@
)
(get_local $3)
)
- (func $___udivdi3 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___udivdi3 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call $___udivmoddi4
(get_local $0)
(get_local $1)
@@ -15389,7 +15350,7 @@
(i32.const 0)
)
)
- (func $___uremdi3 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $___uremdi3 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(set_local $4
(get_global $STACKTOP)
@@ -15423,7 +15384,7 @@
(get_local $0)
)
)
- (func $___udivmoddi4 (; 61 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
+ (func $___udivmoddi4 (; 59 ;) (param $xl i32) (param $xh i32) (param $yl i32) (param $yh i32) (param $r i32) (result i32)
(local $x64 i64)
(local $y64 i64)
(set_local $x64
@@ -15480,7 +15441,7 @@
(get_local $x64)
)
)
- (func $dynCall_ii (; 62 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $dynCall_ii (; 60 ;) (param $0 i32) (param $1 i32) (result i32)
(call_indirect (type $FUNCSIG$ii)
(get_local $1)
(i32.and
@@ -15489,7 +15450,7 @@
)
)
)
- (func $dynCall_iiii (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
+ (func $dynCall_iiii (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(call_indirect (type $FUNCSIG$iiii)
(get_local $1)
(get_local $2)
@@ -15503,7 +15464,7 @@
)
)
)
- (func $dynCall_vi (; 64 ;) (param $0 i32) (param $1 i32)
+ (func $dynCall_vi (; 62 ;) (param $0 i32) (param $1 i32)
(call_indirect (type $FUNCSIG$vi)
(get_local $1)
(i32.add
@@ -15515,19 +15476,19 @@
)
)
)
- (func $b0 (; 65 ;) (param $0 i32) (result i32)
+ (func $b0 (; 63 ;) (param $0 i32) (result i32)
(call $nullFunc_ii
(i32.const 0)
)
(i32.const 0)
)
- (func $b1 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $b1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $nullFunc_iiii
(i32.const 1)
)
(i32.const 0)
)
- (func $b2 (; 67 ;) (param $0 i32)
+ (func $b2 (; 65 ;) (param $0 i32)
(call $nullFunc_vi
(i32.const 2)
)
diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm
index 291cd515d..5b67a3408 100644
--- a/test/memorygrowth.fromasm
+++ b/test/memorygrowth.fromasm
@@ -8491,24 +8491,14 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $Ya
- (get_local $0)
- )
- )
- )
(set_local $1
(call $$a
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $2)
- )
- (call $Ta
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8551,9 +8541,7 @@
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -8575,12 +8563,6 @@
)
)
)
- (if
- (get_local $0)
- (call $Ta
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -9193,9 +9175,7 @@
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9272,12 +9252,6 @@
)
)
)
- (if
- (get_local $3)
- (call $Ta
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9366,7 +9340,6 @@
)
(func $bb (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9380,28 +9353,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $Ya
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $Wa
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $Ta
- (get_local $3)
- )
+ (set_local $0
+ (call $Wa
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9627,7 +9583,7 @@
(i32.const 1160)
)
(i32.load offset=64
- (call $ib)
+ (i32.const 0)
)
(i32.const 1204)
)
@@ -9699,13 +9655,8 @@
)
)
(func $Sa (; 37 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $Ta
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
@@ -9744,34 +9695,28 @@
)
(i32.const 0)
)
- (func $Ya (; 42 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $Ta (; 43 ;) (param $0 i32)
- (nop)
- )
- (func $pb (; 44 ;) (param $0 i32)
+ (func $pb (; 42 ;) (param $0 i32)
(call $ja
(i32.const 2)
)
)
- (func $La (; 45 ;) (param $0 i32)
+ (func $La (; 43 ;) (param $0 i32)
(set_global $K
(get_local $0)
)
)
- (func $Ga (; 46 ;) (param $0 i32)
+ (func $Ga (; 44 ;) (param $0 i32)
(set_global $r
(get_local $0)
)
)
- (func $Ma (; 47 ;) (result i32)
+ (func $Ma (; 45 ;) (result i32)
(get_global $K)
)
- (func $Fa (; 48 ;) (result i32)
+ (func $Fa (; 46 ;) (result i32)
(get_global $r)
)
- (func $ib (; 49 ;) (result i32)
+ (func $ib (; 47 ;) (result i32)
(i32.const 0)
)
)
diff --git a/test/memorygrowth.fromasm.clamp b/test/memorygrowth.fromasm.clamp
index 291cd515d..5b67a3408 100644
--- a/test/memorygrowth.fromasm.clamp
+++ b/test/memorygrowth.fromasm.clamp
@@ -8491,24 +8491,14 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $Ya
- (get_local $0)
- )
- )
- )
(set_local $1
(call $$a
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $2)
- )
- (call $Ta
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8551,9 +8541,7 @@
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -8575,12 +8563,6 @@
)
)
)
- (if
- (get_local $0)
- (call $Ta
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -9193,9 +9175,7 @@
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9272,12 +9252,6 @@
)
)
)
- (if
- (get_local $3)
- (call $Ta
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9366,7 +9340,6 @@
)
(func $bb (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9380,28 +9353,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $Ya
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $Wa
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $Ta
- (get_local $3)
- )
+ (set_local $0
+ (call $Wa
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9627,7 +9583,7 @@
(i32.const 1160)
)
(i32.load offset=64
- (call $ib)
+ (i32.const 0)
)
(i32.const 1204)
)
@@ -9699,13 +9655,8 @@
)
)
(func $Sa (; 37 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $Ta
+ (drop
+ (i32.load offset=68
(get_local $0)
)
)
@@ -9744,34 +9695,28 @@
)
(i32.const 0)
)
- (func $Ya (; 42 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $Ta (; 43 ;) (param $0 i32)
- (nop)
- )
- (func $pb (; 44 ;) (param $0 i32)
+ (func $pb (; 42 ;) (param $0 i32)
(call $ja
(i32.const 2)
)
)
- (func $La (; 45 ;) (param $0 i32)
+ (func $La (; 43 ;) (param $0 i32)
(set_global $K
(get_local $0)
)
)
- (func $Ga (; 46 ;) (param $0 i32)
+ (func $Ga (; 44 ;) (param $0 i32)
(set_global $r
(get_local $0)
)
)
- (func $Ma (; 47 ;) (result i32)
+ (func $Ma (; 45 ;) (result i32)
(get_global $K)
)
- (func $Fa (; 48 ;) (result i32)
+ (func $Fa (; 46 ;) (result i32)
(get_global $r)
)
- (func $ib (; 49 ;) (result i32)
+ (func $ib (; 47 ;) (result i32)
(i32.const 0)
)
)
diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise
index bb9d95844..f36b78409 100644
--- a/test/memorygrowth.fromasm.imprecise
+++ b/test/memorygrowth.fromasm.imprecise
@@ -8489,24 +8489,14 @@
(br $do-once)
)
)
- (set_local $2
- (i32.eqz
- (call $Ya
- (get_local $0)
- )
- )
- )
(set_local $1
(call $$a
(get_local $0)
)
)
- (if
+ (set_local $2
(i32.eqz
- (get_local $2)
- )
- (call $Ta
- (get_local $0)
+ (i32.const 0)
)
)
)
@@ -8542,17 +8532,15 @@
)
(loop $while-in
(set_local $0
- (if (result i32)
+ (select
+ (i32.const 0)
+ (i32.const 0)
(i32.gt_s
(i32.load offset=76
(get_local $1)
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
- (i32.const 0)
)
)
(if
@@ -8573,12 +8561,6 @@
)
)
)
- (if
- (get_local $0)
- (call $Ta
- (get_local $1)
- )
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -9191,9 +9173,7 @@
)
(i32.const -1)
)
- (call $Ya
- (get_local $1)
- )
+ (i32.const 0)
(i32.const 0)
)
)
@@ -9270,12 +9250,6 @@
)
)
)
- (if
- (get_local $3)
- (call $Ta
- (get_local $1)
- )
- )
(i32.shr_s
(i32.shl
(get_local $0)
@@ -9364,7 +9338,6 @@
)
(func $bb (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
- (local $5 i32)
(set_local $4
(i32.mul
(get_local $2)
@@ -9378,28 +9351,11 @@
)
(i32.const -1)
)
- (block
- (set_local $5
- (i32.eqz
- (call $Ya
- (get_local $3)
- )
- )
- )
- (set_local $0
- (call $Wa
- (get_local $0)
- (get_local $4)
- (get_local $3)
- )
- )
- (if
- (i32.eqz
- (get_local $5)
- )
- (call $Ta
- (get_local $3)
- )
+ (set_local $0
+ (call $Wa
+ (get_local $0)
+ (get_local $4)
+ (get_local $3)
)
)
(set_local $0
@@ -9616,14 +9572,14 @@
)
)
(func $Qa (; 31 ;) (result i32)
- (if (result i32)
- (i32.load
- (i32.const 1160)
- )
+ (select
(i32.load offset=64
- (call $ib)
+ (i32.const 0)
)
(i32.const 1204)
+ (i32.load
+ (i32.const 1160)
+ )
)
)
(func $lb (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
@@ -9693,16 +9649,7 @@
)
)
(func $Sa (; 37 ;) (param $0 i32)
- (if
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
- )
- (call $Ta
- (get_local $0)
- )
- )
+ (nop)
)
(func $mb (; 38 ;) (param $0 i32) (param $1 i32)
(call_indirect (type $FUNCSIG$vi)
@@ -9738,34 +9685,28 @@
)
(i32.const 0)
)
- (func $Ya (; 42 ;) (param $0 i32) (result i32)
- (i32.const 0)
- )
- (func $Ta (; 43 ;) (param $0 i32)
- (nop)
- )
- (func $pb (; 44 ;) (param $0 i32)
+ (func $pb (; 42 ;) (param $0 i32)
(call $ja
(i32.const 2)
)
)
- (func $La (; 45 ;) (param $0 i32)
+ (func $La (; 43 ;) (param $0 i32)
(set_global $K
(get_local $0)
)
)
- (func $Ga (; 46 ;) (param $0 i32)
+ (func $Ga (; 44 ;) (param $0 i32)
(set_global $r
(get_local $0)
)
)
- (func $Ma (; 47 ;) (result i32)
+ (func $Ma (; 45 ;) (result i32)
(get_global $K)
)
- (func $Fa (; 48 ;) (result i32)
+ (func $Fa (; 46 ;) (result i32)
(get_global $r)
)
- (func $ib (; 49 ;) (result i32)
+ (func $ib (; 47 ;) (result i32)
(i32.const 0)
)
)
diff --git a/test/passes/inlining-optimizing.txt b/test/passes/inlining-optimizing.txt
index d4de780d5..eab52a9de 100644
--- a/test/passes/inlining-optimizing.txt
+++ b/test/passes/inlining-optimizing.txt
@@ -7,6 +7,7 @@
(elem (i32.const 0) $tabled)
(export "user" (func $user))
(export "exported" (func $exported))
+ (export "exported_small" (func $exported_small))
(func $user (; 0 ;) (type $0)
(call $exported)
(call $tabled)
@@ -15,21 +16,24 @@
)
(func $exported (; 1 ;) (type $0)
(nop)
+ (nop)
+ )
+ (func $exported_small (; 2 ;) (type $0)
+ (nop)
)
- (func $recursive (; 2 ;) (type $0)
+ (func $recursive (; 3 ;) (type $0)
(call $recursive)
)
- (func $tabled (; 3 ;) (type $0)
+ (func $tabled (; 4 ;) (type $0)
+ (nop)
(nop)
)
- (func $cycle1 (; 4 ;) (type $0)
- (call $cycle2)
- )
- (func $cycle2 (; 5 ;) (type $0)
+ (func $cycle1 (; 5 ;) (type $0)
(call $cycle1)
)
(func $multi (; 6 ;) (type $0)
(nop)
+ (nop)
)
)
(module
diff --git a/test/passes/inlining-optimizing.wast b/test/passes/inlining-optimizing.wast
index aac4706fe..dbe511b1f 100644
--- a/test/passes/inlining-optimizing.wast
+++ b/test/passes/inlining-optimizing.wast
@@ -5,9 +5,13 @@
(local $x i32)
(local $y f64)
(call $exported)
+ (call $exported_small)
(call $tabled)
+ (call $tabled_small)
(call $multi)
(call $multi)
+ (call $multi_small)
+ (call $multi_small)
(call $ok)
(drop (call $int))
(drop (call $double))
@@ -21,12 +25,20 @@
)
(func $exported (export "exported")
(nop)
+ (nop)
+ )
+ (func $exported_small (export "exported_small")
+ (nop)
)
(func $recursive
(call $recursive)
)
(func $tabled
(nop)
+ (nop)
+ )
+ (func $tabled_small
+ (nop)
)
(func $cycle1
(call $cycle2)
@@ -36,6 +48,10 @@
)
(func $multi
(nop)
+ (nop)
+ )
+ (func $multi_small
+ (nop)
)
(func $ok
(drop (i32.const 1))
diff --git a/test/passes/inlining-optimizing_optimize-level=3.txt b/test/passes/inlining-optimizing_optimize-level=3.txt
index 1bc6fe742..b742b1596 100644
--- a/test/passes/inlining-optimizing_optimize-level=3.txt
+++ b/test/passes/inlining-optimizing_optimize-level=3.txt
@@ -645,9 +645,6 @@
)
)
)
- (drop
- (get_local $2)
- )
(br_if $while-in
(tee_local $1
(i32.load offset=56
@@ -1318,9 +1315,6 @@
)
)
)
- (drop
- (get_local $14)
- )
(select
(i32.const -1)
(get_local $1)
@@ -2176,10 +2170,8 @@
)
(func $_cleanup (; 43 ;) (type $FUNCSIG$vi) (param $0 i32)
(drop
- (i32.eqz
- (i32.load offset=68
- (get_local $0)
- )
+ (i32.load offset=68
+ (get_local $0)
)
)
)
diff --git a/test/passes/inlining.txt b/test/passes/inlining.txt
index e1e47176f..9ce569da7 100644
--- a/test/passes/inlining.txt
+++ b/test/passes/inlining.txt
@@ -86,9 +86,11 @@
(block
(block $__inlined_func$multipass
(block
- (block $__inlined_func$multipass2
- (drop
- (i32.const 6)
+ (block
+ (block $__inlined_func$multipass2
+ (drop
+ (i32.const 6)
+ )
)
)
)
@@ -129,12 +131,13 @@
(nop)
)
(func $cycle1 (; 4 ;) (type $0)
- (call $cycle2)
- )
- (func $cycle2 (; 5 ;) (type $0)
- (call $cycle1)
+ (block $__inlined_func$cycle2
+ (block
+ (call $cycle1)
+ )
+ )
)
- (func $multi (; 6 ;) (type $0)
+ (func $multi (; 5 ;) (type $0)
(nop)
)
)
diff --git a/test/passes/inlining_optimize-level=3.txt b/test/passes/inlining_optimize-level=3.txt
index b245396c7..06486e401 100644
--- a/test/passes/inlining_optimize-level=3.txt
+++ b/test/passes/inlining_optimize-level=3.txt
@@ -86,8 +86,14 @@
)
(drop
(block (result i32)
- (block $__inlined_func$yes-calls-but-one-use (result i32)
- (call $yes)
+ (block (result i32)
+ (block $__inlined_func$yes-calls-but-one-use (result i32)
+ (block (result i32)
+ (block $__inlined_func$yes0 (result i32)
+ (i32.const 1)
+ )
+ )
+ )
)
)
)
diff --git a/test/wasm-only.fromasm b/test/wasm-only.fromasm
index 2e648f208..784edcf4c 100644
--- a/test/wasm-only.fromasm
+++ b/test/wasm-only.fromasm
@@ -533,21 +533,18 @@
)
(i64.const 245127260211081)
)
- (func $returnCastConst (; 19 ;) (result i64)
- (i64.const 0)
- )
- (func $ifValue64 (; 20 ;) (param $0 i64) (param $1 i64) (result i64)
+ (func $ifValue64 (; 19 ;) (param $0 i64) (param $1 i64) (result i64)
(call $call2
(get_local $0)
)
)
- (func $ifValue32 (; 21 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $ifValue32 (; 20 ;) (param $0 i32) (param $1 i32) (result i32)
(call $ifValue32
(get_local $0)
(get_local $1)
)
)
- (func $switch64 (; 22 ;) (param $0 i64) (result i32)
+ (func $switch64 (; 21 ;) (param $0 i64) (result i32)
(block $switch (result i32)
(block $switch-default
(block $switch-case0
@@ -582,7 +579,7 @@
(i32.const 1)
)
)
- (func $unreachable_leftovers (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $unreachable_leftovers (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(block $__rjto$0
(if
(i32.eqz
@@ -605,7 +602,7 @@
)
)
)
- (func $switch64TOOMUCH (; 24 ;) (param $0 i64) (result i32)
+ (func $switch64TOOMUCH (; 23 ;) (param $0 i64) (result i32)
(local $1 i32)
(local $2 i64)
(block $switch-default
@@ -682,7 +679,7 @@
)
(i32.const 44)
)
- (func $_memchr (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -913,7 +910,7 @@
(get_local $0)
)
)
- (func $keepAlive (; 26 ;)
+ (func $keepAlive (; 25 ;)
(call $loads)
(call $loads)
(call $stores)
@@ -953,12 +950,6 @@
)
)
(drop
- (call $returnCastConst)
- )
- (drop
- (call $returnCastConst)
- )
- (drop
(call $ifValue64
(i64.const 0)
(i64.const 0)
@@ -1023,10 +1014,7 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
(if
(i32.eqz
@@ -1037,13 +1025,10 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
)
- (func $legalstub$illegalParam (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
+ (func $legalstub$illegalParam (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
(call $illegalParam
(get_local $0)
(i64.or
@@ -1060,13 +1045,13 @@
(get_local $3)
)
)
- (func $legalstub$illegalResult (; 28 ;) (result i32)
+ (func $legalstub$illegalResult (; 27 ;) (result i32)
(set_global $tempRet0
(i32.const 2)
)
(i32.const 1)
)
- (func $legalfunc$illegalImport (; 29 ;) (param $0 f64) (param $1 i64) (param $2 i32)
+ (func $legalfunc$illegalImport (; 28 ;) (param $0 f64) (param $1 i64) (param $2 i32)
(call $legalimport$illegalImport
(get_local $0)
(i32.wrap/i64
@@ -1081,7 +1066,7 @@
(get_local $2)
)
)
- (func $legalfunc$_fabsf (; 30 ;) (param $0 f32) (result f32)
+ (func $legalfunc$_fabsf (; 29 ;) (param $0 f32) (result f32)
(f32.demote/f64
(call $legalimport$_fabsf
(f64.promote/f32
@@ -1090,7 +1075,7 @@
)
)
)
- (func $legalfunc$do_i64 (; 31 ;) (result i64)
+ (func $legalfunc$do_i64 (; 30 ;) (result i64)
(i64.or
(i64.extend_u/i32
(call $legalimport$do_i64)
diff --git a/test/wasm-only.fromasm.clamp b/test/wasm-only.fromasm.clamp
index 2e648f208..784edcf4c 100644
--- a/test/wasm-only.fromasm.clamp
+++ b/test/wasm-only.fromasm.clamp
@@ -533,21 +533,18 @@
)
(i64.const 245127260211081)
)
- (func $returnCastConst (; 19 ;) (result i64)
- (i64.const 0)
- )
- (func $ifValue64 (; 20 ;) (param $0 i64) (param $1 i64) (result i64)
+ (func $ifValue64 (; 19 ;) (param $0 i64) (param $1 i64) (result i64)
(call $call2
(get_local $0)
)
)
- (func $ifValue32 (; 21 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $ifValue32 (; 20 ;) (param $0 i32) (param $1 i32) (result i32)
(call $ifValue32
(get_local $0)
(get_local $1)
)
)
- (func $switch64 (; 22 ;) (param $0 i64) (result i32)
+ (func $switch64 (; 21 ;) (param $0 i64) (result i32)
(block $switch (result i32)
(block $switch-default
(block $switch-case0
@@ -582,7 +579,7 @@
(i32.const 1)
)
)
- (func $unreachable_leftovers (; 23 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $unreachable_leftovers (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(block $__rjto$0
(if
(i32.eqz
@@ -605,7 +602,7 @@
)
)
)
- (func $switch64TOOMUCH (; 24 ;) (param $0 i64) (result i32)
+ (func $switch64TOOMUCH (; 23 ;) (param $0 i64) (result i32)
(local $1 i32)
(local $2 i64)
(block $switch-default
@@ -682,7 +679,7 @@
)
(i32.const 44)
)
- (func $_memchr (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -913,7 +910,7 @@
(get_local $0)
)
)
- (func $keepAlive (; 26 ;)
+ (func $keepAlive (; 25 ;)
(call $loads)
(call $loads)
(call $stores)
@@ -953,12 +950,6 @@
)
)
(drop
- (call $returnCastConst)
- )
- (drop
- (call $returnCastConst)
- )
- (drop
(call $ifValue64
(i64.const 0)
(i64.const 0)
@@ -1023,10 +1014,7 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
(if
(i32.eqz
@@ -1037,13 +1025,10 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
)
- (func $legalstub$illegalParam (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
+ (func $legalstub$illegalParam (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
(call $illegalParam
(get_local $0)
(i64.or
@@ -1060,13 +1045,13 @@
(get_local $3)
)
)
- (func $legalstub$illegalResult (; 28 ;) (result i32)
+ (func $legalstub$illegalResult (; 27 ;) (result i32)
(set_global $tempRet0
(i32.const 2)
)
(i32.const 1)
)
- (func $legalfunc$illegalImport (; 29 ;) (param $0 f64) (param $1 i64) (param $2 i32)
+ (func $legalfunc$illegalImport (; 28 ;) (param $0 f64) (param $1 i64) (param $2 i32)
(call $legalimport$illegalImport
(get_local $0)
(i32.wrap/i64
@@ -1081,7 +1066,7 @@
(get_local $2)
)
)
- (func $legalfunc$_fabsf (; 30 ;) (param $0 f32) (result f32)
+ (func $legalfunc$_fabsf (; 29 ;) (param $0 f32) (result f32)
(f32.demote/f64
(call $legalimport$_fabsf
(f64.promote/f32
@@ -1090,7 +1075,7 @@
)
)
)
- (func $legalfunc$do_i64 (; 31 ;) (result i64)
+ (func $legalfunc$do_i64 (; 30 ;) (result i64)
(i64.or
(i64.extend_u/i32
(call $legalimport$do_i64)
diff --git a/test/wasm-only.fromasm.imprecise b/test/wasm-only.fromasm.imprecise
index 30a26bf5d..a35dda983 100644
--- a/test/wasm-only.fromasm.imprecise
+++ b/test/wasm-only.fromasm.imprecise
@@ -17,10 +17,7 @@
(export "illegalParam" (func $legalstub$illegalParam))
(export "illegalResult" (func $legalstub$illegalResult))
(export "keepAlive" (func $keepAlive))
- (func $loads (; 5 ;)
- (nop)
- )
- (func $stores (; 6 ;)
+ (func $stores (; 5 ;)
(local $0 i32)
(local $1 f64)
(local $2 f32)
@@ -113,7 +110,7 @@
(get_local $1)
)
)
- (func $test (; 7 ;)
+ (func $test (; 6 ;)
(local $0 f32)
(local $1 i32)
(set_local $1
@@ -122,7 +119,7 @@
)
)
)
- (func $test64 (; 8 ;)
+ (func $test64 (; 7 ;)
(local $0 i64)
(local $1 i32)
(local $2 i64)
@@ -164,7 +161,7 @@
)
)
)
- (func $imports (; 9 ;) (result i64)
+ (func $imports (; 8 ;) (result i64)
(call $legalfunc$illegalImport
(f64.const -3.13159)
(i64.const 94489280523)
@@ -182,7 +179,7 @@
)
)
)
- (func $arg (; 10 ;) (param $0 i64)
+ (func $arg (; 9 ;) (param $0 i64)
(i64.store
(i32.const 100)
(get_local $0)
@@ -191,7 +188,7 @@
(get_local $0)
)
)
- (func $illegalParam (; 11 ;) (param $0 i32) (param $1 i64) (param $2 f64)
+ (func $illegalParam (; 10 ;) (param $0 i32) (param $1 i64) (param $2 f64)
(i64.store
(i32.const 100)
(get_local $1)
@@ -202,12 +199,12 @@
(f64.const 12.34)
)
)
- (func $call1 (; 12 ;) (param $0 i64) (result i64)
+ (func $call1 (; 11 ;) (param $0 i64) (result i64)
(call $call1
(get_local $0)
)
)
- (func $call2 (; 13 ;) (param $0 i64) (result i64)
+ (func $call2 (; 12 ;) (param $0 i64) (result i64)
(drop
(call $call2
(call $call2
@@ -217,21 +214,18 @@
)
(i64.const 245127260211081)
)
- (func $returnCastConst (; 14 ;) (result i64)
- (i64.const 0)
- )
- (func $ifValue64 (; 15 ;) (param $0 i64) (param $1 i64) (result i64)
+ (func $ifValue64 (; 13 ;) (param $0 i64) (param $1 i64) (result i64)
(call $call2
(get_local $0)
)
)
- (func $ifValue32 (; 16 ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $ifValue32 (; 14 ;) (param $0 i32) (param $1 i32) (result i32)
(call $ifValue32
(get_local $0)
(get_local $1)
)
)
- (func $switch64 (; 17 ;) (param $0 i64) (result i32)
+ (func $switch64 (; 15 ;) (param $0 i64) (result i32)
(block $switch (result i32)
(block $switch-default
(block $switch-case0
@@ -266,7 +260,7 @@
(i32.const 1)
)
)
- (func $unreachable_leftovers (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (func $unreachable_leftovers (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32)
(block $__rjto$0
(if
(i32.eqz
@@ -289,7 +283,7 @@
)
)
)
- (func $switch64TOOMUCH (; 19 ;) (param $0 i64) (result i32)
+ (func $switch64TOOMUCH (; 17 ;) (param $0 i64) (result i32)
(local $1 i32)
(local $2 i64)
(block $switch-default
@@ -366,7 +360,7 @@
)
(i32.const 44)
)
- (func $_memchr (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $_memchr (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
@@ -597,9 +591,7 @@
(get_local $0)
)
)
- (func $keepAlive (; 21 ;)
- (call $loads)
- (call $loads)
+ (func $keepAlive (; 19 ;)
(call $stores)
(call $stores)
(call $test)
@@ -637,12 +629,6 @@
)
)
(drop
- (call $returnCastConst)
- )
- (drop
- (call $returnCastConst)
- )
- (drop
(call $ifValue64
(i64.const 0)
(i64.const 0)
@@ -707,10 +693,7 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
(if
(i32.eqz
@@ -721,13 +704,10 @@
)
)
)
- (block
- (nop)
- (call $abort)
- )
+ (call $abort)
)
)
- (func $legalstub$illegalParam (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
+ (func $legalstub$illegalParam (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 f64)
(call $illegalParam
(get_local $0)
(i64.or
@@ -744,13 +724,13 @@
(get_local $3)
)
)
- (func $legalstub$illegalResult (; 23 ;) (result i32)
+ (func $legalstub$illegalResult (; 21 ;) (result i32)
(set_global $tempRet0
(i32.const 2)
)
(i32.const 1)
)
- (func $legalfunc$illegalImport (; 24 ;) (param $0 f64) (param $1 i64) (param $2 i32)
+ (func $legalfunc$illegalImport (; 22 ;) (param $0 f64) (param $1 i64) (param $2 i32)
(call $legalimport$illegalImport
(get_local $0)
(i32.wrap/i64
@@ -765,7 +745,7 @@
(get_local $2)
)
)
- (func $legalfunc$_fabsf (; 25 ;) (param $0 f32) (result f32)
+ (func $legalfunc$_fabsf (; 23 ;) (param $0 f32) (result f32)
(f32.demote/f64
(call $legalimport$_fabsf
(f64.promote/f32
@@ -774,7 +754,7 @@
)
)
)
- (func $legalfunc$do_i64 (; 26 ;) (result i64)
+ (func $legalfunc$do_i64 (; 24 ;) (result i64)
(i64.or
(i64.extend_u/i32
(call $legalimport$do_i64)