summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/address.2asm.js143
-rw-r--r--test/br_table_temp.2asm.js675
-rw-r--r--test/empty_imported_table.2asm.js85
-rw-r--r--test/empty_table.2asm.js85
-rw-r--r--test/forward.2asm.js113
-rw-r--r--test/hello_world.2asm.js91
-rw-r--r--test/i32.2asm.js255
-rw-r--r--test/passes/flatten-control-flow.bin.txt123
-rw-r--r--test/passes/flatten-control-flow.txt1184
-rw-r--r--test/passes/flatten.bin.txt276
-rw-r--r--test/passes/flatten.txt2402
-rw-r--r--test/passes/flatten.wasm (renamed from test/passes/flatten-control-flow.wasm)bin458 -> 458 bytes
-rw-r--r--test/passes/flatten.wast (renamed from test/passes/flatten-control-flow.wast)231
-rw-r--r--test/passes/flatten_rereloop.txt45
-rw-r--r--test/passes/flatten_rereloop.wast12
-rw-r--r--test/wasm2asm.asserts.js97
-rw-r--r--test/wasm2asm.traps.js97
17 files changed, 4212 insertions, 1702 deletions
diff --git a/test/address.2asm.js b/test/address.2asm.js
index b2c78fca9..8dfe2dce9 100644
--- a/test/address.2asm.js
+++ b/test/address.2asm.js
@@ -15,62 +15,153 @@ function asmFunc(global, env, buffer) {
var print = env.print;
function $$0(i) {
i = i | 0;
- var wasm2asm_i32$0 = 0;
- print(HEAPU8[i >> 0] | 0 | 0);
- print(HEAPU8[(i + 1 | 0) >> 0] | 0 | 0);
- print(HEAPU8[(i + 2 | 0) >> 0] | 0 | 0);
- print(HEAPU8[(i + 25 | 0) >> 0] | 0 | 0);
- print(HEAPU16[i >> 1] | 0 | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[wasm2asm_i32$0 >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0) << 8) | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8) | 0);
- print(HEAPU16[(i + 2 | 0) >> 1] | 0 | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8) | 0);
- print(HEAPU32[i >> 2] | 0 | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 24) | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 24) | 0);
- print((wasm2asm_i32$0 = i, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 27 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 28 | 0) >> 0] | 0 | 0) << 24) | 0);
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, $$21 = 0, $$22 = 0, $$23 = 0, $$24 = 0, $$25 = 0, $$26 = 0, wasm2asm_i32$0 = 0;
+ $$1 = i;
+ $$2 = HEAPU8[$$1 >> 0] | 0;
+ print($$2 | 0);
+ $$3 = i;
+ $$4 = HEAPU8[($$3 + 1 | 0) >> 0] | 0;
+ print($$4 | 0);
+ $$5 = i;
+ $$6 = HEAPU8[($$5 + 2 | 0) >> 0] | 0;
+ print($$6 | 0);
+ $$7 = i;
+ $$8 = HEAPU8[($$7 + 25 | 0) >> 0] | 0;
+ print($$8 | 0);
+ $$9 = i;
+ $$10 = HEAPU16[$$9 >> 1] | 0;
+ print($$10 | 0);
+ $$11 = i;
+ $$12 = (wasm2asm_i32$0 = $$11, HEAPU8[wasm2asm_i32$0 >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0) << 8);
+ print($$12 | 0);
+ $$13 = i;
+ $$14 = (wasm2asm_i32$0 = $$13, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8);
+ print($$14 | 0);
+ $$15 = i;
+ $$16 = HEAPU16[($$15 + 2 | 0) >> 1] | 0;
+ print($$16 | 0);
+ $$17 = i;
+ $$18 = (wasm2asm_i32$0 = $$17, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8);
+ print($$18 | 0);
+ $$19 = i;
+ $$20 = HEAPU32[$$19 >> 2] | 0;
+ print($$20 | 0);
+ $$21 = i;
+ $$22 = (wasm2asm_i32$0 = $$21, HEAPU8[(wasm2asm_i32$0 + 1 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 24);
+ print($$22 | 0);
+ $$23 = i;
+ $$24 = (wasm2asm_i32$0 = $$23, HEAPU8[(wasm2asm_i32$0 + 2 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 3 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 4 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 5 | 0) >> 0] | 0 | 0) << 24);
+ print($$24 | 0);
+ $$25 = i;
+ $$26 = (wasm2asm_i32$0 = $$25, HEAPU8[(wasm2asm_i32$0 + 25 | 0) >> 0] | 0 | 0 | (HEAPU8[(wasm2asm_i32$0 + 26 | 0) >> 0] | 0 | 0) << 8 | (HEAPU8[(wasm2asm_i32$0 + 27 | 0) >> 0] | 0 | 0) << 16 | (HEAPU8[(wasm2asm_i32$0 + 28 | 0) >> 0] | 0 | 0) << 24);
+ print($$26 | 0);
}
function $$1(i) {
i = i | 0;
- HEAPU32[(i + 4294967295 | 0) >> 2] | 0;
+ var $$1 = 0, $$2 = 0;
+ $$1 = i;
+ $$2 = HEAPU32[($$1 + 4294967295 | 0) >> 2] | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/br_table_temp.2asm.js b/test/br_table_temp.2asm.js
index 5089246e1..748f1eec9 100644
--- a/test/br_table_temp.2asm.js
+++ b/test/br_table_temp.2asm.js
@@ -33,7 +33,7 @@ function asmFunc(global, env, buffer) {
}
function $$5() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 1;
$$1 = $$0;
@@ -44,11 +44,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$6() {
- var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
block : {
$i64toi32_block_1 : {
$i64toi32_block_0 : {
@@ -56,7 +57,8 @@ function asmFunc(global, env, buffer) {
$$3 = 2;
$$4 = $$3;
$$5 = $$4;
- $$6 = $$4;
+ $$6 = $$5;
+ $$7 = $$5;
switch (0 | 0) {
case 0:
break $i64toi32_block_0;
@@ -64,21 +66,28 @@ function asmFunc(global, env, buffer) {
break $i64toi32_block_1;
};
};
- i64toi32_i32$1 = $$5;
- i64toi32_i32$2 = i64toi32_i32$0;
- $$7 = i64toi32_i32$1;
+ $$8 = $$6;
+ i64toi32_i32$1 = $$8;
+ $$9 = i64toi32_i32$0;
+ i64toi32_i32$2 = $$9;
+ $$10 = i64toi32_i32$1;
+ $$11 = $$10;
break block;
};
- i64toi32_i32$1 = $$6;
- i64toi32_i32$2 = i64toi32_i32$0;
- $$7 = i64toi32_i32$1;
+ $$12 = $$7;
+ i64toi32_i32$1 = $$12;
+ $$13 = i64toi32_i32$0;
+ i64toi32_i32$2 = $$13;
+ $$14 = i64toi32_i32$1;
+ $$11 = $$14;
break block;
};
- return $$7 | 0;
+ $$15 = $$11;
+ return $$15 | 0;
}
function $$7() {
- var $$0 = Math_fround(0), $$1 = Math_fround(0);
+ var $$0 = Math_fround(0), $$1 = Math_fround(0), $$2 = Math_fround(0);
block : {
$$0 = Math_fround(3.0);
$$1 = $$0;
@@ -89,11 +98,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return Math_fround($$1);
+ $$2 = $$1;
+ return Math_fround($$2);
}
function $$8() {
- var $$0 = 0.0, $$1 = 0.0;
+ var $$0 = 0.0, $$1 = 0.0, $$2 = 0.0;
block : {
$$0 = 4.0;
$$1 = $$0;
@@ -104,42 +114,48 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return +$$1;
+ $$2 = $$1;
+ return +$$2;
}
function $$9($$0) {
$$0 = $$0 | 0;
- var $$1 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0;
block : {
- switch ($$0 | 0) {
+ $$1 = $$0;
+ switch ($$1 | 0) {
default:
break block;
};
};
- $$1 = 22;
- return $$1 | 0;
+ $$2 = 22;
+ $$3 = $$2;
+ return $$3 | 0;
}
function $$10($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
block : {
- $$1 = 33;
- $$2 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 33;
+ $$3 = $$2;
+ switch ($$1 | 0) {
default:
break block;
};
};
- return $$2 | 0;
+ $$4 = $$3;
+ return $$4 | 0;
}
function $$11($$0) {
$$0 = $$0 | 0;
- var $$1 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0;
block : {
block0 : {
- switch ($$0 | 0) {
+ $$1 = $$0;
+ switch ($$1 | 0) {
case 0:
break block;
default:
@@ -148,39 +164,44 @@ function asmFunc(global, env, buffer) {
};
return 20 | 0;
};
- $$1 = 22;
- return $$1 | 0;
+ $$2 = 22;
+ $$3 = $$2;
+ return $$3 | 0;
}
function $$12($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
block : {
block1 : {
- $$1 = 33;
- $$2 = $$1;
- $$3 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 33;
+ $$3 = $$2;
+ $$4 = $$2;
+ switch ($$1 | 0) {
case 0:
break block1;
default:
break block;
};
};
+ $$5 = $$4;
$$3 = 32;
};
- return $$3 | 0;
+ $$6 = $$3;
+ return $$6 | 0;
}
function $$13($$0) {
$$0 = $$0 | 0;
- var $$1 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0;
block : {
block2 : {
block3 : {
block4 : {
block5 : {
- switch ($$0 | 0) {
+ $$1 = $$0;
+ switch ($$1 | 0) {
case 0:
break block2;
case 1:
@@ -201,25 +222,27 @@ function asmFunc(global, env, buffer) {
};
return 103 | 0;
};
- $$1 = 104;
- return $$1 | 0;
+ $$2 = 104;
+ $$3 = $$2;
+ return $$3 | 0;
}
function $$14($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0, $$21 = 0, $$22 = 0, $$23 = 0, $$24 = 0, $$25 = 0, $$26 = 0, $$27 = 0;
block : {
block6 : {
block7 : {
block8 : {
block9 : {
- $$2 = 200;
- $$3 = $$2;
- $$4 = $$2;
- $$5 = $$2;
- $$6 = $$2;
- $$7 = $$2;
- switch ($$0 | 0) {
+ $$2 = $$0;
+ $$3 = 200;
+ $$4 = $$3;
+ $$5 = $$3;
+ $$6 = $$3;
+ $$7 = $$3;
+ $$8 = $$3;
+ switch ($$2 | 0) {
case 0:
break block6;
case 1:
@@ -232,28 +255,46 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- $$1 = $$6;
- return $$1 + 10 | 0 | 0;
+ $$11 = $$8;
+ $$1 = $$11;
+ $$12 = $$1;
+ $$13 = $$12 + 10 | 0;
+ return $$13 | 0;
};
- $$1 = $$5;
- return $$1 + 11 | 0 | 0;
+ $$14 = $$7;
+ $$1 = $$14;
+ $$15 = $$1;
+ $$16 = $$15 + 11 | 0;
+ return $$16 | 0;
};
- $$1 = $$4;
- return $$1 + 12 | 0 | 0;
+ $$17 = $$6;
+ $$1 = $$17;
+ $$18 = $$1;
+ $$19 = $$18 + 12 | 0;
+ return $$19 | 0;
};
- $$1 = $$3;
- return $$1 + 13 | 0 | 0;
+ $$20 = $$5;
+ $$1 = $$20;
+ $$21 = $$1;
+ $$22 = $$21 + 13 | 0;
+ return $$22 | 0;
};
- $$1 = $$7;
- $$8 = $$1 + 14 | 0;
- return $$8 | 0;
+ $$23 = $$4;
+ $$1 = $$23;
+ $$24 = $$1;
+ $$25 = $$24 + 14 | 0;
+ $$26 = $$25;
+ $$27 = $$26;
+ return $$27 | 0;
}
function $$15($$0) {
$$0 = $$0 | 0;
+ var $$1 = 0;
block : {
block10 : {
- switch ($$0 | 0) {
+ $$1 = $$0;
+ switch ($$1 | 0) {
case 0:
break block10;
case 1:
@@ -49526,7 +49567,7 @@ function asmFunc(global, env, buffer) {
}
function $$19() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
dummy();
$$0 = 2;
@@ -49540,11 +49581,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$20() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
fake_return_waka123 : {
loop_in : do {
$$0 = 3;
@@ -49558,11 +49600,12 @@ function asmFunc(global, env, buffer) {
break loop_in;
} while (1);
};
- return $$1 | 0;
+ $$6 = $$1;
+ return $$6 | 0;
}
function $$21() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
fake_return_waka123 : {
loop_in : do {
dummy();
@@ -49579,11 +49622,12 @@ function asmFunc(global, env, buffer) {
break loop_in;
} while (1);
};
- return $$1 | 0;
+ $$6 = $$1;
+ return $$6 | 0;
}
function $$22() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
fake_return_waka123 : {
loop_in : do {
dummy();
@@ -49600,16 +49644,18 @@ function asmFunc(global, env, buffer) {
break loop_in;
} while (1);
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$23() {
- var $$0 = 0;
+ var $$0 = 0, $$1 = 0;
block : {
$$0 = 9;
break block;
};
- return $$0 | 0;
+ $$1 = $$0;
+ return $$1 | 0;
}
function $$24() {
@@ -49617,7 +49663,7 @@ function asmFunc(global, env, buffer) {
}
function $$25() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 8;
$$1 = $$0;
@@ -49626,11 +49672,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$26() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 9;
$$1 = $$0;
@@ -49641,7 +49688,8 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$27() {
@@ -49649,7 +49697,7 @@ function asmFunc(global, env, buffer) {
}
function $$28() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 10;
$$1 = $$0;
@@ -49658,11 +49706,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$29() {
- var $$0 = 0, $$1 = 0, $$2 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
block : {
$$0 = 11;
$$1 = $$0;
@@ -49671,72 +49720,92 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$3 = $$1;
+ return $$3 | 0;
}
function $$30() {
- var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0;
block : {
$i64toi32_block_0 : {
i64toi32_i32$0 = 0;
$$3 = 7;
$$4 = $$3;
$$5 = $$4;
+ $$6 = $$5;
switch (0 | 0) {
default:
break $i64toi32_block_0;
};
};
- i64toi32_i32$1 = $$5;
- i64toi32_i32$2 = i64toi32_i32$0;
- $$6 = i64toi32_i32$1;
+ $$7 = $$6;
+ i64toi32_i32$1 = $$7;
+ $$8 = i64toi32_i32$0;
+ i64toi32_i32$2 = $$8;
+ $$9 = i64toi32_i32$1;
+ $$10 = $$9;
break block;
};
- return $$6 | 0;
+ $$11 = $$10;
+ return $$11 | 0;
}
function $$31() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
- $$if : {
- $$0 = 2;
- $$1 = $$0;
- switch (0 | 0) {
- default:
- break $$if;
+ var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ block : {
+ $$if : {
+ $$0 = 2;
+ $$1 = $$0;
+ switch (0 | 0) {
+ default:
+ break $$if;
+ };
};
+ $$4 = $$1;
+ $$5 = $$4;
};
- $$3 = $$1;
- return $$3 | 0;
+ $$6 = $$5;
+ return $$6 | 0;
}
function $$32($$0, $$1) {
$$0 = $$0 | 0;
$$1 = $$1 | 0;
- var $$2 = 0, $$3 = 0, $$4 = 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
block : {
- if ($$0) {
- $$2 = 3;
- $$3 = $$2;
+ $$2 = $$0;
+ if ($$2) {
+ $$3 = 3;
+ $$4 = $$3;
switch (0 | 0) {
default:
break block;
};
- } else $$4 = $$1;
- $$3 = $$4;
+ } else {
+ $$5 = $$1;
+ $$6 = $$5;
+ }
+ $$7 = $$6;
+ $$4 = $$7;
};
- return $$3 | 0;
+ $$8 = $$4;
+ return $$8 | 0;
}
function $$33($$0, $$1) {
$$0 = $$0 | 0;
$$1 = $$1 | 0;
- var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
block : {
$$if : {
- if ($$0) $$5 = $$1; else {
- $$2 = 4;
- $$3 = $$2;
- $$4 = $$2;
+ $$2 = $$0;
+ if ($$2) {
+ $$3 = $$1;
+ $$7 = $$3;
+ } else {
+ $$4 = 4;
+ $$5 = $$4;
+ $$6 = $$4;
switch (0 | 0) {
case 0:
break block;
@@ -49744,17 +49813,20 @@ function asmFunc(global, env, buffer) {
break $$if;
};
}
- $$4 = $$5;
+ $$8 = $$7;
+ $$6 = $$8;
};
- $$3 = $$4;
+ $$9 = $$6;
+ $$5 = $$9;
};
- return $$3 | 0;
+ $$10 = $$5;
+ return $$10 | 0;
}
function $$34($$0, $$1) {
$$0 = $$0 | 0;
$$1 = $$1 | 0;
- var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
block : {
$$2 = 5;
$$3 = $$2;
@@ -49763,30 +49835,30 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$3 | 0;
+ $$6 = $$3;
+ return $$6 | 0;
}
function $$35($$0, $$1) {
$$0 = $$0 | 0;
$$1 = $$1 | 0;
- var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
block : {
- $$4 = $$0;
- $$2 = 6;
- $$3 = $$2;
+ $$2 = $$0;
+ $$3 = 6;
+ $$4 = $$3;
switch (1 | 0) {
default:
break block;
};
};
- return $$3 | 0;
+ $$6 = $$4;
+ return $$6 | 0;
}
function $$36() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 0;
- $$3 = 1;
$$0 = 7;
$$1 = $$0;
switch (1 | 0) {
@@ -49794,18 +49866,21 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function f($$0, $$1, $$2) {
$$0 = $$0 | 0;
$$1 = $$1 | 0;
$$2 = $$2 | 0;
+ var wasm2asm_i32$0 = 0;
return 4294967295 | 0;
+ return wasm2asm_i32$0 | 0;
}
function $$38() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 12;
$$1 = $$0;
@@ -49814,13 +49889,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$39() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 1;
$$0 = 13;
$$1 = $$0;
switch (1 | 0) {
@@ -49828,14 +49903,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$40() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 1;
- $$3 = 2;
$$0 = 14;
$$1 = $$0;
switch (1 | 0) {
@@ -49843,11 +49917,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$41() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 20;
$$1 = $$0;
@@ -49856,13 +49931,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$42() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 0;
$$0 = 21;
$$1 = $$0;
switch (1 | 0) {
@@ -49870,14 +49945,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$43() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 0;
- $$3 = 1;
$$0 = 22;
$$1 = $$0;
switch (1 | 0) {
@@ -49885,15 +49959,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$44() {
- var $$0 = 0, $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 0;
- $$3 = 1;
- $$4 = 2;
$$0 = 23;
$$1 = $$0;
switch (1 | 0) {
@@ -49901,11 +49973,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$45() {
- var $$0 = Math_fround(0), $$1 = 0, $$2 = 0;
+ var $$0 = Math_fround(0), $$1 = 0, $$2 = 0, $$3 = 0;
block : {
$$1 = 17;
$$2 = $$1;
@@ -49914,11 +49987,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$2 | 0;
+ $$3 = $$2;
+ return $$3 | 0;
}
function $$46() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 2;
$$1 = $$0;
@@ -49927,32 +50001,38 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$47() {
- var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0;
block : {
$i64toi32_block_0 : {
i64toi32_i32$0 = 0;
$$3 = 30;
$$4 = $$3;
$$5 = $$4;
+ $$6 = $$5;
switch (1 | 0) {
default:
break $i64toi32_block_0;
};
};
- i64toi32_i32$1 = $$5;
- i64toi32_i32$2 = i64toi32_i32$0;
- $$6 = i64toi32_i32$1;
+ $$7 = $$6;
+ i64toi32_i32$1 = $$7;
+ $$8 = i64toi32_i32$0;
+ i64toi32_i32$2 = $$8;
+ $$9 = i64toi32_i32$1;
+ $$10 = $$9;
break block;
};
- return $$6 | 0;
+ $$11 = $$10;
+ return $$11 | 0;
}
function $$48() {
- var $$0 = 0, $$1 = 0, $$2 = 0.0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 30;
$$1 = $$0;
@@ -49961,13 +50041,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$49() {
var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 2;
$$0 = 31;
$$1 = $$0;
switch (1 | 0) {
@@ -49975,7 +50055,8 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$50() {
@@ -49988,13 +50069,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$51() {
var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = 2;
$$0 = 33;
$$1 = $$0;
switch (0 | 0) {
@@ -50002,11 +50083,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$52() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 3;
$$1 = $$0;
@@ -50015,7 +50097,8 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$53() {
@@ -50030,34 +50113,41 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$54() {
- var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
+ var i64toi32_i32$0 = 0, i64toi32_i32$1 = 0, i64toi32_i32$2 = 0, i64toi32_i32$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0;
block : {
i64toi32_i32$0 = 0;
$$4 = 10;
+ $$5 = $$4;
$i64toi32_block_0 : {
i64toi32_i32$1 = 0;
- $$5 = 45;
- $$6 = $$5;
+ $$6 = 45;
$$7 = $$6;
+ $$8 = $$7;
+ $$9 = $$8;
switch (0 | 0) {
default:
break $i64toi32_block_0;
};
};
- i64toi32_i32$2 = $$7;
- i64toi32_i32$3 = i64toi32_i32$1;
- $$8 = i64toi32_i32$2;
+ $$10 = $$9;
+ i64toi32_i32$2 = $$10;
+ $$11 = i64toi32_i32$1;
+ i64toi32_i32$3 = $$11;
+ $$12 = i64toi32_i32$2;
+ $$13 = $$12;
break block;
};
- return $$8 | 0;
+ $$14 = $$13;
+ return $$14 | 0;
}
function $$55() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 44;
$$1 = $$0;
@@ -50066,11 +50156,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$56() {
- var $$0 = 0, $$1 = 0, $$2 = 0.0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 43;
$$1 = $$0;
@@ -50081,13 +50172,13 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$57() {
- var $$0 = 0, $$1 = 0, $$2 = Math_fround(0);
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
- $$2 = Math_fround(10.0);
$$0 = 42;
$$1 = $$0;
switch (0 | 0) {
@@ -50095,11 +50186,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$58() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 41;
$$1 = $$0;
@@ -50108,11 +50200,12 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$59() {
- var $$0 = 0, $$1 = 0;
+ var $$0 = 0, $$1 = 0, $$2 = 0;
block : {
$$0 = 40;
$$1 = $$0;
@@ -50121,23 +50214,22 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- return $$1 | 0;
+ $$2 = $$1;
+ return $$2 | 0;
}
function $$60($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
block : {
- $$8 = 1;
block11 : {
- $$6 = 2;
block12 : {
- $$5 = 8;
- $$1 = 16;
- $$2 = $$1;
- $$3 = $$1;
- $$4 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 16;
+ $$3 = $$2;
+ $$4 = $$2;
+ $$5 = $$2;
+ switch ($$1 | 0) {
case 0:
break block12;
case 1:
@@ -50146,27 +50238,30 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- $$7 = $$6 + $$2 | 0;
- $$3 = $$7;
+ $$6 = $$5;
+ $$7 = 2 + $$6 | 0;
+ $$4 = $$7;
};
- $$9 = $$8 + $$3 | 0;
- $$4 = $$9;
+ $$8 = $$4;
+ $$9 = 1 + $$8 | 0;
+ $$3 = $$9;
};
- return $$4 | 0;
+ $$10 = $$3;
+ return $$10 | 0;
}
function $$61($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0;
block : {
- $$5 = 1;
block13 : {
block14 : {
- $$1 = 8;
- $$2 = $$1;
- $$3 = $$1;
- $$4 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 8;
+ $$3 = $$2;
+ $$4 = $$2;
+ $$5 = $$2;
+ switch ($$1 | 0) {
case 0:
break block;
case 1:
@@ -50175,26 +50270,29 @@ function asmFunc(global, env, buffer) {
break block14;
};
};
- $$3 = 16;
+ $$6 = $$5;
+ $$4 = 16;
};
- $$6 = $$5 + $$3 | 0;
- $$2 = $$6;
+ $$7 = $$4;
+ $$8 = 1 + $$7 | 0;
+ $$3 = $$8;
};
- return $$2 | 0;
+ $$9 = $$3;
+ return $$9 | 0;
}
function $$62($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0;
block : {
- $$5 = 1;
block15 : {
block16 : {
- $$1 = 8;
- $$2 = $$1;
- $$3 = $$1;
- $$4 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 8;
+ $$3 = $$2;
+ $$4 = $$2;
+ $$5 = $$2;
+ switch ($$1 | 0) {
case 0:
break block16;
case 1:
@@ -50203,24 +50301,27 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- $$3 = 16;
+ $$6 = $$5;
+ $$4 = 16;
};
- $$6 = $$5 + $$3 | 0;
- $$4 = $$6;
+ $$7 = $$4;
+ $$8 = 1 + $$7 | 0;
+ $$3 = $$8;
};
- return $$4 | 0;
+ $$9 = $$3;
+ return $$9 | 0;
}
function $$63($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
block : {
- $$4 = 1;
block17 : {
- $$1 = 8;
- $$2 = $$1;
- $$3 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 8;
+ $$3 = $$2;
+ $$4 = $$2;
+ switch ($$1 | 0) {
case 0:
break block17;
case 1:
@@ -50229,24 +50330,26 @@ function asmFunc(global, env, buffer) {
break block17;
};
};
- $$5 = $$4 + $$2 | 0;
- $$3 = $$5;
+ $$5 = $$4;
+ $$6 = 1 + $$5 | 0;
+ $$3 = $$6;
};
- return $$3 | 0;
+ $$7 = $$3;
+ return $$7 | 0;
}
function $$64($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0;
block : {
- $$5 = 1;
block18 : {
block19 : {
- $$1 = 8;
- $$2 = $$1;
- $$3 = $$1;
- $$4 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 8;
+ $$3 = $$2;
+ $$4 = $$2;
+ $$5 = $$2;
+ switch ($$1 | 0) {
case 0:
break block19;
case 1:
@@ -50255,24 +50358,27 @@ function asmFunc(global, env, buffer) {
break block;
};
};
- $$3 = 16;
+ $$6 = $$5;
+ $$4 = 16;
};
- $$6 = $$5 + $$3 | 0;
- $$4 = $$6;
+ $$7 = $$4;
+ $$8 = 1 + $$7 | 0;
+ $$3 = $$8;
};
- return $$4 | 0;
+ $$9 = $$3;
+ return $$9 | 0;
}
function $$65($$0) {
$$0 = $$0 | 0;
- var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0;
block : {
- $$5 = 1;
block20 : {
- $$1 = 8;
- $$2 = $$1;
- $$3 = $$1;
- switch ($$0 | 0) {
+ $$1 = $$0;
+ $$2 = 8;
+ $$3 = $$2;
+ $$4 = $$2;
+ switch ($$1 | 0) {
case 0:
break block20;
case 1:
@@ -50281,47 +50387,112 @@ function asmFunc(global, env, buffer) {
break block20;
};
};
- $$6 = $$5 + $$2 | 0;
- $$3 = $$6;
+ $$6 = $$4;
+ $$7 = 1 + $$6 | 0;
+ $$3 = $$7;
};
- return $$3 | 0;
+ $$8 = $$3;
+ return $$8 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
var FUNCTION_TABLE_iiii = [f];
diff --git a/test/empty_imported_table.2asm.js b/test/empty_imported_table.2asm.js
index 3f93e9568..9dcdcad54 100644
--- a/test/empty_imported_table.2asm.js
+++ b/test/empty_imported_table.2asm.js
@@ -15,39 +15,102 @@ function asmFunc(global, env, buffer) {
var import$table$0 = env.table;
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/empty_table.2asm.js b/test/empty_table.2asm.js
index b3f981530..3c68223df 100644
--- a/test/empty_table.2asm.js
+++ b/test/empty_table.2asm.js
@@ -14,39 +14,102 @@ function asmFunc(global, env, buffer) {
var Math_clz32 = global.Math.clz32;
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/forward.2asm.js b/test/forward.2asm.js
index fdfd8684a..479f560d4 100644
--- a/test/forward.2asm.js
+++ b/test/forward.2asm.js
@@ -14,53 +14,132 @@ function asmFunc(global, env, buffer) {
var Math_clz32 = global.Math.clz32;
function even(n) {
n = n | 0;
- var $$1 = 0;
- if ((n | 0) == (0 | 0)) $$1 = 1; else $$1 = odd(n - 1 | 0 | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
+ $$1 = n;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$6 = 1; else {
+ $$3 = n;
+ $$4 = $$3 - 1 | 0;
+ $$5 = odd($$4 | 0) | 0;
+ $$6 = $$5;
+ }
+ $$7 = $$6;
+ return $$7 | 0;
}
function odd(n) {
n = n | 0;
- var $$1 = 0;
- if ((n | 0) == (0 | 0)) $$1 = 0; else $$1 = even(n - 1 | 0 | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0;
+ $$1 = n;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$6 = 0; else {
+ $$3 = n;
+ $$4 = $$3 - 1 | 0;
+ $$5 = even($$4 | 0) | 0;
+ $$6 = $$5;
+ }
+ $$7 = $$6;
+ return $$7 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/hello_world.2asm.js b/test/hello_world.2asm.js
index 05c7a5343..b12c6ed10 100644
--- a/test/hello_world.2asm.js
+++ b/test/hello_world.2asm.js
@@ -15,44 +15,111 @@ function asmFunc(global, env, buffer) {
function add(x, y) {
x = x | 0;
y = y | 0;
- return x + y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 + $$3 | 0;
+ return $$4 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/i32.2asm.js b/test/i32.2asm.js
index 0c94f23b7..4e3532a09 100644
--- a/test/i32.2asm.js
+++ b/test/i32.2asm.js
@@ -15,208 +15,383 @@ function asmFunc(global, env, buffer) {
function $$0(x, y) {
x = x | 0;
y = y | 0;
- return x + y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 + $$3 | 0;
+ return $$4 | 0;
}
function $$1(x, y) {
x = x | 0;
y = y | 0;
- return x - y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 - $$3 | 0;
+ return $$4 | 0;
}
function $$2(x, y) {
x = x | 0;
y = y | 0;
- return Math_imul(x, y) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = Math_imul($$2, $$3);
+ return $$4 | 0;
}
function $$3(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) / (y | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) / ($$3 | 0) | 0;
+ return $$4 | 0;
}
function $$4(x, y) {
x = x | 0;
y = y | 0;
- return (x >>> 0) / (y >>> 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 >>> 0) / ($$3 >>> 0) | 0;
+ return $$4 | 0;
}
function $$5(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) % (y | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) % ($$3 | 0) | 0;
+ return $$4 | 0;
}
function $$6(x, y) {
x = x | 0;
y = y | 0;
- return (x >>> 0) % (y >>> 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 >>> 0) % ($$3 >>> 0) | 0;
+ return $$4 | 0;
}
function $$7(x, y) {
x = x | 0;
y = y | 0;
- return x & y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 & $$3 | 0;
+ return $$4 | 0;
}
function $$8(x, y) {
x = x | 0;
y = y | 0;
- return x | y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 | $$3 | 0;
+ return $$4 | 0;
}
function $$9(x, y) {
x = x | 0;
y = y | 0;
- return x ^ y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 ^ $$3 | 0;
+ return $$4 | 0;
}
function $$10(x, y) {
x = x | 0;
y = y | 0;
- return x << y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 << $$3 | 0;
+ return $$4 | 0;
}
function $$11(x, y) {
x = x | 0;
y = y | 0;
- return x >> y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >> $$3 | 0;
+ return $$4 | 0;
}
function $$12(x, y) {
x = x | 0;
y = y | 0;
- return x >>> y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >>> $$3 | 0;
+ return $$4 | 0;
}
function $$13(x, y) {
x = x | 0;
y = y | 0;
- return __wasm_rotl_i32(x, y) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = __wasm_rotl_i32($$2, $$3) | 0;
+ return $$4 | 0;
}
function $$14(x, y) {
x = x | 0;
y = y | 0;
- return __wasm_rotr_i32(x, y) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = __wasm_rotr_i32($$2, $$3) | 0;
+ return $$4 | 0;
}
function $$15(x) {
x = x | 0;
- return Math_clz32(x) | 0;
+ var $$1 = 0, $$2 = 0;
+ $$1 = x;
+ $$2 = Math_clz32($$1);
+ return $$2 | 0;
}
function $$16(x) {
x = x | 0;
- return __wasm_ctz_i32(x) | 0 | 0;
+ var $$1 = 0, $$2 = 0;
+ $$1 = x;
+ $$2 = __wasm_ctz_i32($$1) | 0;
+ return $$2 | 0;
}
function $$17(x) {
x = x | 0;
- return __wasm_popcnt_i32(x) | 0 | 0;
+ var $$1 = 0, $$2 = 0;
+ $$1 = x;
+ $$2 = __wasm_popcnt_i32($$1) | 0;
+ return $$2 | 0;
}
function $$18(x) {
x = x | 0;
- return (x | 0) == (0 | 0) | 0;
+ var $$1 = 0, $$2 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ return $$2 | 0;
}
function $$19(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) == (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) == ($$3 | 0);
+ return $$4 | 0;
}
function $$20(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) != (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) != ($$3 | 0);
+ return $$4 | 0;
}
function $$21(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) < (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) < ($$3 | 0);
+ return $$4 | 0;
}
function $$22(x, y) {
x = x | 0;
y = y | 0;
- return x >>> 0 < y >>> 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >>> 0 < $$3 >>> 0;
+ return $$4 | 0;
}
function $$23(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) <= (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) <= ($$3 | 0);
+ return $$4 | 0;
}
function $$24(x, y) {
x = x | 0;
y = y | 0;
- return x >>> 0 <= y >>> 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >>> 0 <= $$3 >>> 0;
+ return $$4 | 0;
}
function $$25(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) > (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) > ($$3 | 0);
+ return $$4 | 0;
}
function $$26(x, y) {
x = x | 0;
y = y | 0;
- return x >>> 0 > y >>> 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >>> 0 > $$3 >>> 0;
+ return $$4 | 0;
}
function $$27(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) >= (y | 0) | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) >= ($$3 | 0);
+ return $$4 | 0;
}
function $$28(x, y) {
x = x | 0;
y = y | 0;
- return x >>> 0 >= y >>> 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 >>> 0 >= $$3 >>> 0;
+ return $$4 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/passes/flatten-control-flow.bin.txt b/test/passes/flatten-control-flow.bin.txt
deleted file mode 100644
index 93fbff864..000000000
--- a/test/passes/flatten-control-flow.bin.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-(module
- (type $0 (func (result i32)))
- (type $1 (func (result i64)))
- (type $2 (func (result f32)))
- (type $3 (func (result f64)))
- (type $4 (func (param i32) (result i32)))
- (type $5 (func (param i64) (result i64)))
- (type $6 (func (param f32) (result f32)))
- (type $7 (func (param f64) (result f64)))
- (type $8 (func (param i64 f32 f64 i32 i32)))
- (type $9 (func (param i64 f32 f64 i32 i32) (result f64)))
- (memory $0 0)
- (export "type-local-i32" (func $0))
- (export "type-local-i64" (func $1))
- (export "type-local-f32" (func $2))
- (export "type-local-f64" (func $3))
- (export "type-param-i32" (func $4))
- (export "type-param-i64" (func $5))
- (export "tÿÿe-param-f32" (func $6))
- (export "type-param-f64" (func $7))
- (export "type-mixed" (func $8))
- (export "read" (func $9))
- (func $0 (type $0) (result i32)
- (local $var$0 i32)
- (get_local $var$0)
- )
- (func $1 (type $1) (result i64)
- (local $var$0 i64)
- (get_local $var$0)
- )
- (func $2 (type $2) (result f32)
- (local $var$0 f32)
- (get_local $var$0)
- )
- (func $3 (type $3) (result f64)
- (local $var$0 f64)
- (get_local $var$0)
- )
- (func $4 (type $4) (param $var$0 i32) (result i32)
- (get_local $var$0)
- )
- (func $5 (type $5) (param $var$0 i64) (result i64)
- (get_local $var$0)
- )
- (func $6 (type $6) (param $var$0 f32) (result f32)
- (get_local $var$0)
- )
- (func $7 (type $7) (param $var$0 f64) (result f64)
- (get_local $var$0)
- )
- (func $8 (type $8) (param $var$0 i64) (param $var$1 f32) (param $var$2 f64) (param $var$3 i32) (param $var$4 i32)
- (local $var$5 i64)
- (local $var$6 i64)
- (local $var$7 f32)
- (local $var$8 f64)
- (block $label$1
- (nop)
- (unreachable)
- )
- )
- (func $9 (type $9) (param $var$0 i64) (param $var$1 f32) (param $var$2 f64) (param $var$3 i32) (param $var$4 i32) (result f64)
- (local $var$5 i64)
- (local $var$6 i64)
- (local $var$7 f32)
- (local $var$8 f64)
- (local $9 f64)
- (block $label$1
- (set_local $var$7
- (f32.const 5.5)
- )
- (set_local $var$5
- (i64.const 6)
- )
- (set_local $var$8
- (f64.const 8)
- )
- (set_local $9
- (f64.add
- (f64.convert_u/i64
- (get_local $var$0)
- )
- (f64.add
- (f64.promote/f32
- (get_local $var$1)
- )
- (f64.add
- (get_local $var$2)
- (f64.add
- (f64.convert_u/i32
- (get_local $var$3)
- )
- (f64.add
- (f64.convert_s/i32
- (get_local $var$4)
- )
- (f64.add
- (f64.promote/f32
- (get_local $var$7)
- )
- (f64.add
- (f64.convert_u/i64
- (get_local $var$5)
- )
- (f64.add
- (f64.convert_u/i64
- (get_local $var$6)
- )
- (get_local $var$8)
- )
- )
- )
- )
- )
- )
- )
- )
- )
- )
- (return
- (get_local $9)
- )
- )
-)
diff --git a/test/passes/flatten-control-flow.txt b/test/passes/flatten-control-flow.txt
deleted file mode 100644
index 65e7196fb..000000000
--- a/test/passes/flatten-control-flow.txt
+++ /dev/null
@@ -1,1184 +0,0 @@
-(module
- (type $ii (func (param i32 i32)))
- (type $1 (func))
- (type $2 (func (result i32)))
- (type $3 (func (param i32) (result i32)))
- (type $4 (func (param i64 i64) (result i64)))
- (global $x (mut i32) (i32.const 0))
- (table 1 1 anyfunc)
- (elem (i32.const 0) $call-me)
- (memory $0 10)
- (func $call-me (type $ii) (param $0 i32) (param $1 i32)
- (nop)
- )
- (func $code-to-kill (type $1)
- (local $x i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (local $7 i32)
- (local $8 i32)
- (local $9 i32)
- (local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local $13 i32)
- (local $14 i32)
- (local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local $18 i32)
- (local $19 i32)
- (local $20 i32)
- (block $out
- (br $out)
- (drop
- (i32.const 0)
- )
- (if
- (i32.const 1)
- (drop
- (i32.const 2)
- )
- )
- (br_table $out $out $out $out
- (i32.const 3)
- )
- (call $code-to-kill)
- )
- (if
- (i32.const 0)
- (block $out1
- (unreachable)
- (drop
- (i32.const 0)
- )
- )
- )
- (if
- (i32.const 0)
- (block $out3
- (return)
- (drop
- (i32.const 0)
- )
- )
- )
- (block $out4
- (br_table $out4 $out4 $out4 $out4
- (i32.const 4)
- )
- (drop
- (i32.const 0)
- )
- )
- (block $out5
- (br_if $out5
- (i32.const 3)
- )
- (drop
- (i32.const 0)
- )
- )
- (if
- (i32.const 0)
- (block $block4
- (if
- (i32.const 0)
- (block $out8
- (unreachable)
- (drop
- (i32.const 0)
- )
- )
- (block $out9
- (unreachable)
- (drop
- (i32.const 0)
- )
- )
- )
- (drop
- (i32.const 0)
- )
- )
- )
- (if
- (i32.const 0)
- (block $out11
- (unreachable)
- (drop
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 0)
- (block $out13
- (unreachable)
- (drop
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 0)
- (block $out15
- (unreachable)
- (drop
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (block $out16
- (block $in
- (br_if $out16
- (i32.const 1)
- )
- )
- (unreachable)
- )
- (if
- (i32.const 0)
- (block $block11
- (block $out18
- (block $in19
- (br_if $in19
- (i32.const 1)
- )
- )
- (unreachable)
- )
- (drop
- (i32.const 10)
- )
- )
- )
- (block $out20
- (block $in21
- (br_table $out20 $in21
- (i32.const 1)
- )
- )
- (unreachable)
- )
- (block $out22
- (block $in23
- (br_table $in23 $out22
- (i32.const 1)
- )
- )
- (unreachable)
- )
- (if
- (i32.const 0)
- (block $block13
- (block $out25
- (block $in26
- (br_table $in26 $in26
- (i32.const 1)
- )
- )
- (unreachable)
- )
- (drop
- (i32.const 10)
- )
- )
- )
- (if
- (i32.const 0)
- (block $block15
- (drop
- (i32.const 10)
- )
- (drop
- (i32.const 42)
- )
- (unreachable)
- (block
- (unreachable)
- )
- (unreachable)
- (return)
- )
- )
- (if
- (i32.const 0)
- (loop $loop-in18
- (unreachable)
- )
- )
- (block $out29
- (loop $in30
- (br_if $out29
- (i32.const 1)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 0)
- (block $block20
- (loop $in32
- (br_if $in32
- (i32.const 1)
- )
- (unreachable)
- )
- (drop
- (i32.const 10)
- )
- )
- )
- (if
- (i32.const 1)
- (block
- (set_local $4
- (i32.const 123)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 2)
- (unreachable)
- )
- (if
- (i32.const 3)
- (unreachable)
- )
- (if
- (i32.const -1)
- (block
- (set_local $6
- (i32.const 123)
- )
- (set_local $7
- (i32.const 456)
- )
- (unreachable)
- )
- )
- (if
- (i32.const -2)
- (block
- (set_local $8
- (i32.const 139)
- )
- (unreachable)
- )
- )
- (if
- (i32.const -3)
- (block
- (set_local $10
- (i32.const 246)
- )
- (unreachable)
- )
- )
- (if
- (i32.const -4)
- (unreachable)
- )
- (if
- (i32.const 11)
- (unreachable)
- )
- (if
- (i32.const 22)
- (block
- (unreachable)
- )
- )
- (if
- (i32.const 33)
- (block
- (set_local $11
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 44)
- (unreachable)
- )
- (if
- (i32.const 55)
- (unreachable)
- )
- (if
- (i32.const 66)
- (block
- (unreachable)
- )
- )
- (if
- (i32.const 77)
- (block
- (unreachable)
- )
- )
- (if
- (i32.const 88)
- (block
- (set_local $14
- (i32.const 0)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 99)
- (unreachable)
- )
- (if
- (i32.const 100)
- (block
- (set_local $15
- (i32.const 123)
- )
- (set_local $16
- (i32.const 456)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 101)
- (block
- (set_local $17
- (i32.const 123)
- )
- (unreachable)
- )
- )
- (if
- (i32.const 102)
- (block
- (unreachable)
- )
- )
- (drop
- (i32.const 1337)
- )
- )
- (func $killer (type $1)
- (unreachable)
- (drop
- (i32.const 1000)
- )
- )
- (func $target (type $1)
- (drop
- (i32.const 2000)
- )
- )
- (func $typed-block-none-then-unreachable (type $2) (result i32)
- (local $0 i32)
- (block $top-typed
- (block $switch$0
- (return
- (i32.const 0)
- )
- (br $switch$0)
- )
- (return
- (i32.const 1)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $typed-block-remove-br-changes-type (type $3) (param $$$0 i32) (result i32)
- (local $1 i32)
- (block
- (block $switch$7
- (block $switch-default$10
- (block $switch-case$9
- (block $switch-case$8
- (br_table $switch-case$9 $switch-case$8 $switch-default$10
- (i32.const -1)
- )
- )
- )
- (return
- (get_local $$$0)
- )
- (br $switch$7)
- )
- (return
- (get_local $$$0)
- )
- )
- (return
- (i32.const 0)
- )
- )
- (return
- (get_local $1)
- )
- )
- (func $global (type $1)
- (unreachable)
- (drop
- (get_global $x)
- )
- (set_global $x
- (i32.const 1)
- )
- )
- (func $ret (type $2) (result i32)
- (local $0 i32)
- (block
- (return
- (i32.const 0)
- )
- (nop)
- (set_local $0
- (i32.const 0)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $unreachable-br (type $2) (result i32)
- (local $0 i32)
- (block $out
- (block
- (set_local $0
- (i32.const 0)
- )
- (br $out)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $unreachable-br-loop (type $2) (result i32)
- (loop $out
- (br $out)
- )
- )
- (func $unreachable-block-ends-switch (type $2) (result i32)
- (local $0 i32)
- (block $label$0
- (block $label$3
- (nop)
- (block
- (unreachable)
- )
- (unreachable)
- )
- (set_local $0
- (i32.const 19)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $unreachable-block-ends-br_if (type $2) (result i32)
- (local $0 i32)
- (block $label$0
- (block $label$2
- (nop)
- (block
- (unreachable)
- )
- (unreachable)
- )
- (set_local $0
- (i32.const 19)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $unreachable-brs-3 (type $2) (result i32)
- (local $0 i32)
- (block $label$0
- (block
- (block
- (set_local $0
- (i32.const 18)
- )
- (br $label$0)
- )
- )
- (set_local $0
- (i32.const 21)
- )
- )
- (return
- (get_local $0)
- )
- )
- (func $unreachable-brs-4 (type $3) (param $var$0 i32) (result i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 i32)
- (set_local $3
- (i32.const 1)
- )
- (block $label$0
- (block $label$1
- (block
- (block
- (unreachable)
- )
- )
- (set_local $2
- (i32.const 4)
- )
- )
- (set_local $1
- (i32.const 16)
- )
- )
- )
- (func $call-unreach (type $4) (param $var$0 i64) (param $var$1 i64) (result i64)
- (local $2 i64)
- (local $3 i64)
- (local $4 i64)
- (local $5 i64)
- (local $6 i64)
- (local $7 i64)
- (if
- (i64.eqz
- (get_local $var$0)
- )
- (block
- (block $label$0
- (set_local $3
- (get_local $var$1)
- )
- )
- (set_local $7
- (get_local $3)
- )
- )
- (block
- (block $label$1
- (block
- (set_local $5
- (i64.sub
- (get_local $var$0)
- (i64.const 1)
- )
- )
- (block
- (block $block
- (set_local $2
- (get_local $var$0)
- )
- (nop)
- (set_local $4
- (get_local $2)
- )
- )
- (unreachable)
- )
- )
- )
- (set_local $7
- (get_local $6)
- )
- )
- )
- (return
- (get_local $7)
- )
- )
- (func $test-flatten (type $1)
- (local $0 i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (local $7 i32)
- (local $8 i32)
- (local $9 i32)
- (local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local $13 i32)
- (local $14 i32)
- (local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local $18 i32)
- (local $19 i32)
- (local $20 i32)
- (local $21 i32)
- (local $22 i32)
- (local $23 i32)
- (local $24 i32)
- (local $25 i32)
- (local $26 i32)
- (local $27 i32)
- (local $28 i32)
- (local $29 i32)
- (local $30 i32)
- (local $31 i32)
- (local $32 i32)
- (local $33 i32)
- (local $34 i32)
- (local $35 i32)
- (local $36 i32)
- (local $37 i32)
- (local $38 i32)
- (local $39 i32)
- (local $40 i32)
- (local $41 i32)
- (local $42 i32)
- (local $43 i32)
- (local $44 i32)
- (block $out
- (drop
- (i32.add
- (i32.const 1)
- (i32.const 2)
- )
- )
- (block
- (block
- (set_local $0
- (i32.const 1)
- )
- (br $out)
- )
- )
- (block
- (block
- (br $out)
- )
- )
- (block
- (block
- (set_local $2
- (i32.const 1)
- )
- (br_table $out $out $out $out
- (i32.const 3)
- )
- )
- )
- (block
- (block
- (set_local $4
- (i32.const 1)
- )
- (block $block
- (drop
- (i32.const 2)
- )
- (drop
- (i32.const 3)
- )
- (set_local $3
- (i32.const 4)
- )
- )
- (set_local $5
- (i32.add
- (get_local $4)
- (get_local $3)
- )
- )
- )
- (drop
- (get_local $5)
- )
- )
- (block
- (block
- (set_local $9
- (i32.const 1)
- )
- (block $in
- (block
- (block $switch-in
- (block
- (set_local $6
- (i32.const 2)
- )
- (set_local $7
- (get_local $6)
- )
- (set_local $8
- (get_local $6)
- )
- (br_table $in $switch-in $in
- (i32.const 777)
- )
- )
- )
- (drop
- (get_local $8)
- )
- )
- (block
- (set_local $7
- (i32.const 3)
- )
- (br $in)
- )
- (set_local $7
- (i32.const 4)
- )
- )
- (set_local $10
- (i32.add
- (get_local $9)
- (get_local $7)
- )
- )
- )
- (drop
- (get_local $10)
- )
- )
- (block
- (block
- (set_local $12
- (i32.const 1)
- )
- (loop $loop-in
- (set_local $11
- (i32.const 5)
- )
- )
- (set_local $13
- (i32.add
- (get_local $12)
- (get_local $11)
- )
- )
- )
- (drop
- (get_local $13)
- )
- )
- (block
- (block
- (set_local $15
- (i32.const 1)
- )
- (if
- (i32.const 6)
- (set_local $14
- (i32.const 7)
- )
- (set_local $14
- (i32.const 8)
- )
- )
- (set_local $16
- (i32.add
- (get_local $15)
- (get_local $14)
- )
- )
- )
- (drop
- (get_local $16)
- )
- )
- (drop
- (select
- (i32.const 9)
- (i32.const 10)
- (i32.const 11)
- )
- )
- (block
- (block
- (br $out)
- )
- )
- (block
- (block
- (set_local $19
- (i32.const 9)
- )
- (br $out)
- )
- )
- (block
- (block
- (set_local $21
- (i32.const 9)
- )
- (set_local $22
- (i32.const 10)
- )
- (br $out)
- )
- )
- (block
- (block
- (if
- (i32.const 11)
- (set_local $23
- (i32.const 12)
- )
- (set_local $23
- (i32.const 13)
- )
- )
- (set_local $24
- (i32.const 9)
- )
- (set_local $25
- (i32.const 10)
- )
- (set_local $26
- (select
- (get_local $23)
- (get_local $24)
- (get_local $25)
- )
- )
- )
- (drop
- (get_local $26)
- )
- )
- (block
- (block
- (set_local $28
- (i32.const 9)
- )
- (if
- (i32.const 11)
- (set_local $27
- (i32.const 12)
- )
- (set_local $27
- (i32.const 13)
- )
- )
- (set_local $29
- (i32.const 10)
- )
- (set_local $30
- (select
- (get_local $28)
- (get_local $27)
- (get_local $29)
- )
- )
- )
- (drop
- (get_local $30)
- )
- )
- (block
- (block
- (set_local $32
- (i32.const 9)
- )
- (set_local $33
- (i32.const 10)
- )
- (if
- (i32.const 11)
- (set_local $31
- (i32.const 12)
- )
- (set_local $31
- (i32.const 13)
- )
- )
- (set_local $34
- (select
- (get_local $32)
- (get_local $33)
- (get_local $31)
- )
- )
- )
- (drop
- (get_local $34)
- )
- )
- (block
- (block
- (if
- (i32.const 11)
- (set_local $35
- (i32.const 12)
- )
- (set_local $35
- (i32.const 13)
- )
- )
- (set_local $37
- (i32.const 14)
- )
- (if
- (i32.const 15)
- (set_local $36
- (i32.const 16)
- )
- (set_local $36
- (i32.const 17)
- )
- )
- (set_local $38
- (select
- (get_local $35)
- (get_local $37)
- (get_local $36)
- )
- )
- )
- (drop
- (get_local $38)
- )
- )
- (block
- (block
- (set_local $39
- (i32.const 1)
- )
- (return)
- )
- )
- (block
- (block
- (set_local $40
- (i32.const 1)
- )
- (unreachable)
- )
- )
- (block
- (block
- (if
- (i32.const 5)
- (set_local $41
- (i32.const 6)
- )
- (set_local $41
- (i32.const 7)
- )
- )
- (if
- (get_local $41)
- (set_local $43
- (i32.const 8)
- )
- (block
- (if
- (i32.const 9)
- (set_local $42
- (i32.const 10)
- )
- (set_local $42
- (i32.const 11)
- )
- )
- (set_local $43
- (get_local $42)
- )
- )
- )
- )
- (drop
- (get_local $43)
- )
- )
- (block
- (block $temp
- (block
- (block
- (set_local $44
- (i32.const 1)
- )
- (br_if $temp
- (i32.const 2)
- )
- )
- (set_local $44
- (get_local $44)
- )
- )
- )
- (drop
- (get_local $44)
- )
- )
- )
- )
- (func $flatten-return-value (type $2) (result i32)
- (local $0 i32)
- (local $1 i32)
- (block
- (block
- (block
- (set_local $0
- (i32.const 1)
- )
- (return
- (i32.const 2)
- )
- )
- )
- (set_local $1
- (i32.const 3)
- )
- )
- (return
- (get_local $1)
- )
- )
- (func $unbug (type $1)
- (local $12 i32)
- (local $432 i32)
- (local $430 i32)
- (local $431 i32)
- (local $9 i32)
- (local $5 i32)
- (local $433 i32)
- (local $7 i32)
- (block $block
- (if
- (i32.eq
- (get_local $12)
- (i32.const 65535)
- )
- (block $block39
- (block $label$78
- (set_local $430
- (i32.const 0)
- )
- )
- (set_local $432
- (get_local $430)
- )
- )
- (block $block40
- (block $label$79
- (set_local $431
- (i32.lt_u
- (get_local $9)
- (i32.load16_u offset=2
- (i32.add
- (get_local $5)
- (i32.mul
- (get_local $12)
- (i32.const 12)
- )
- )
- )
- )
- )
- )
- (set_local $432
- (get_local $431)
- )
- )
- )
- (set_local $433
- (i32.const 1)
- )
- (set_local $7
- (i32.xor
- (get_local $432)
- (get_local $433)
- )
- )
- )
- (drop
- (get_local $7)
- )
- )
- (func $outer-block-typed (type $3) (param $var$0 i32) (result i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (block $block
- (block
- (block
- (set_local $2
- (i32.const 1)
- )
- (block $label$0
- (set_local $1
- (i32.const 16)
- )
- )
- (set_local $3
- (i32.add
- (get_local $2)
- (get_local $1)
- )
- )
- )
- (set_local $4
- (get_local $3)
- )
- )
- )
- (return
- (get_local $4)
- )
- )
- (func $nested-br_if-with-value (type $2) (result i32)
- (local $0 i32)
- (local $1 i32)
- (local $2 i32)
- (block $label$0
- (block
- (block
- (block $block
- (set_local $1
- (get_local $0)
- )
- )
- (block
- (set_local $2
- (i32.const 0)
- )
- (br_if $label$0
- (get_local $1)
- )
- )
- )
- (drop
- (get_local $2)
- )
- )
- (set_local $2
- (i32.const 1)
- )
- )
- (return
- (get_local $2)
- )
- )
- (func $switch-unreachable (type $1)
- (block $label$3
- (block
- (unreachable)
- )
- )
- )
-)
diff --git a/test/passes/flatten.bin.txt b/test/passes/flatten.bin.txt
new file mode 100644
index 000000000..049bd361b
--- /dev/null
+++ b/test/passes/flatten.bin.txt
@@ -0,0 +1,276 @@
+(module
+ (type $0 (func (result i32)))
+ (type $1 (func (result i64)))
+ (type $2 (func (result f32)))
+ (type $3 (func (result f64)))
+ (type $4 (func (param i32) (result i32)))
+ (type $5 (func (param i64) (result i64)))
+ (type $6 (func (param f32) (result f32)))
+ (type $7 (func (param f64) (result f64)))
+ (type $8 (func (param i64 f32 f64 i32 i32)))
+ (type $9 (func (param i64 f32 f64 i32 i32) (result f64)))
+ (memory $0 0)
+ (export "type-local-i32" (func $0))
+ (export "type-local-i64" (func $1))
+ (export "type-local-f32" (func $2))
+ (export "type-local-f64" (func $3))
+ (export "type-param-i32" (func $4))
+ (export "type-param-i64" (func $5))
+ (export "tÿÿe-param-f32" (func $6))
+ (export "type-param-f64" (func $7))
+ (export "type-mixed" (func $8))
+ (export "read" (func $9))
+ (func $0 (type $0) (result i32)
+ (local $var$0 i32)
+ (local $1 i32)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $1 (type $1) (result i64)
+ (local $var$0 i64)
+ (local $1 i64)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $2 (type $2) (result f32)
+ (local $var$0 f32)
+ (local $1 f32)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $3 (type $3) (result f64)
+ (local $var$0 f64)
+ (local $1 f64)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $4 (type $4) (param $var$0 i32) (result i32)
+ (local $1 i32)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $5 (type $5) (param $var$0 i64) (result i64)
+ (local $1 i64)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $6 (type $6) (param $var$0 f32) (result f32)
+ (local $1 f32)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $7 (type $7) (param $var$0 f64) (result f64)
+ (local $1 f64)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $8 (type $8) (param $var$0 i64) (param $var$1 f32) (param $var$2 f64) (param $var$3 i32) (param $var$4 i32)
+ (local $var$5 i64)
+ (local $var$6 i64)
+ (local $var$7 f32)
+ (local $var$8 f64)
+ (block $label$1
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (func $9 (type $9) (param $var$0 i64) (param $var$1 f32) (param $var$2 f64) (param $var$3 i32) (param $var$4 i32) (result f64)
+ (local $var$5 i64)
+ (local $var$6 i64)
+ (local $var$7 f32)
+ (local $var$8 f64)
+ (local $9 i64)
+ (local $10 f64)
+ (local $11 f32)
+ (local $12 f64)
+ (local $13 f64)
+ (local $14 i32)
+ (local $15 f64)
+ (local $16 i32)
+ (local $17 f64)
+ (local $18 f32)
+ (local $19 f64)
+ (local $20 i64)
+ (local $21 f64)
+ (local $22 i64)
+ (local $23 f64)
+ (local $24 f64)
+ (local $25 f64)
+ (local $26 f64)
+ (local $27 f64)
+ (local $28 f64)
+ (local $29 f64)
+ (local $30 f64)
+ (local $31 f64)
+ (local $32 f64)
+ (local $33 f64)
+ (local $34 f64)
+ (block $label$1
+ (set_local $var$7
+ (f32.const 5.5)
+ )
+ (nop)
+ (set_local $var$5
+ (i64.const 6)
+ )
+ (nop)
+ (set_local $var$8
+ (f64.const 8)
+ )
+ (nop)
+ (set_local $9
+ (get_local $var$0)
+ )
+ (set_local $10
+ (f64.convert_u/i64
+ (get_local $9)
+ )
+ )
+ (set_local $11
+ (get_local $var$1)
+ )
+ (set_local $12
+ (f64.promote/f32
+ (get_local $11)
+ )
+ )
+ (set_local $13
+ (get_local $var$2)
+ )
+ (set_local $14
+ (get_local $var$3)
+ )
+ (set_local $15
+ (f64.convert_u/i32
+ (get_local $14)
+ )
+ )
+ (set_local $16
+ (get_local $var$4)
+ )
+ (set_local $17
+ (f64.convert_s/i32
+ (get_local $16)
+ )
+ )
+ (set_local $18
+ (get_local $var$7)
+ )
+ (set_local $19
+ (f64.promote/f32
+ (get_local $18)
+ )
+ )
+ (set_local $20
+ (get_local $var$5)
+ )
+ (set_local $21
+ (f64.convert_u/i64
+ (get_local $20)
+ )
+ )
+ (set_local $22
+ (get_local $var$6)
+ )
+ (set_local $23
+ (f64.convert_u/i64
+ (get_local $22)
+ )
+ )
+ (set_local $24
+ (get_local $var$8)
+ )
+ (set_local $25
+ (f64.add
+ (get_local $23)
+ (get_local $24)
+ )
+ )
+ (set_local $26
+ (f64.add
+ (get_local $21)
+ (get_local $25)
+ )
+ )
+ (set_local $27
+ (f64.add
+ (get_local $19)
+ (get_local $26)
+ )
+ )
+ (set_local $28
+ (f64.add
+ (get_local $17)
+ (get_local $27)
+ )
+ )
+ (set_local $29
+ (f64.add
+ (get_local $15)
+ (get_local $28)
+ )
+ )
+ (set_local $30
+ (f64.add
+ (get_local $13)
+ (get_local $29)
+ )
+ )
+ (set_local $31
+ (f64.add
+ (get_local $12)
+ (get_local $30)
+ )
+ )
+ (set_local $32
+ (f64.add
+ (get_local $10)
+ (get_local $31)
+ )
+ )
+ (set_local $33
+ (get_local $32)
+ )
+ )
+ (set_local $34
+ (get_local $33)
+ )
+ (return
+ (get_local $34)
+ )
+ )
+)
diff --git a/test/passes/flatten.txt b/test/passes/flatten.txt
new file mode 100644
index 000000000..76089bdb0
--- /dev/null
+++ b/test/passes/flatten.txt
@@ -0,0 +1,2402 @@
+(module
+ (type $ii (func (param i32 i32)))
+ (type $1 (func))
+ (type $2 (func (result i32)))
+ (type $3 (func (param i32) (result i32)))
+ (type $4 (func (param i64 i64) (result i64)))
+ (type $5 (func (result f32)))
+ (global $x (mut i32) (i32.const 0))
+ (table 1 1 anyfunc)
+ (elem (i32.const 0) $call-me)
+ (memory $0 10)
+ (func $a1 (type $1)
+ (drop
+ (i32.add
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
+ )
+ (func $a2 (type $2) (result i32)
+ (return
+ (i32.add
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
+ )
+ (func $a3 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (block $block
+ (set_local $0
+ (i32.const 1)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (set_local $2
+ (i32.add
+ (i32.const 0)
+ (get_local $1)
+ )
+ )
+ (return
+ (get_local $2)
+ )
+ )
+ (func $a4 (type $1)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (block $block
+ (set_local $0
+ (i32.const 1)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (set_local $2
+ (i32.add
+ (i32.const 0)
+ (get_local $1)
+ )
+ )
+ (drop
+ (get_local $2)
+ )
+ (nop)
+ )
+ (func $a5 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (block $block
+ (set_local $0
+ (i32.const 0)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (block $block0
+ (set_local $2
+ (i32.const 1)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $4
+ (i32.add
+ (get_local $1)
+ (get_local $3)
+ )
+ )
+ (return
+ (get_local $4)
+ )
+ )
+ (func $a6 (type $2) (result i32)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (block $block
+ (set_local $1
+ (tee_local $x
+ (i32.const 0)
+ )
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (block $block1
+ (set_local $4
+ (tee_local $x
+ (i32.const 1)
+ )
+ )
+ (set_local $5
+ (get_local $4)
+ )
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ (set_local $7
+ (i32.add
+ (get_local $3)
+ (get_local $6)
+ )
+ )
+ (return
+ (get_local $7)
+ )
+ )
+ (func $a7 (type $2) (result i32)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (block $block
+ (block $block2
+ (set_local $1
+ (tee_local $x
+ (i32.const 0)
+ )
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (block $block3
+ (set_local $4
+ (tee_local $x
+ (i32.const 1)
+ )
+ )
+ (set_local $5
+ (get_local $4)
+ )
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ (set_local $7
+ (i32.add
+ (get_local $3)
+ (get_local $6)
+ )
+ )
+ (set_local $8
+ (get_local $7)
+ )
+ )
+ (set_local $9
+ (get_local $8)
+ )
+ (return
+ (get_local $9)
+ )
+ )
+ (func $a8 (type $2) (result i32)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ (block $outer
+ (block $inner
+ (block $block
+ (set_local $1
+ (i32.const -1)
+ )
+ (br $inner)
+ (unreachable)
+ (set_local $2
+ (i32.const 0)
+ )
+ (br $outer)
+ (unreachable)
+ (set_local $3
+ (i32.const 1)
+ )
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ (block $block4
+ (set_local $2
+ (i32.const 2)
+ )
+ (br $outer)
+ (unreachable)
+ (set_local $5
+ (tee_local $x
+ (i32.const 3)
+ )
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ )
+ (set_local $7
+ (get_local $6)
+ )
+ (set_local $8
+ (i32.add
+ (get_local $4)
+ (get_local $7)
+ )
+ )
+ (set_local $1
+ (get_local $8)
+ )
+ )
+ (set_local $9
+ (get_local $1)
+ )
+ (set_local $2
+ (get_local $9)
+ )
+ )
+ (set_local $10
+ (get_local $2)
+ )
+ (return
+ (get_local $10)
+ )
+ )
+ (func $a9 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (loop $outer
+ (loop $inner
+ (block
+ (br_if $outer
+ (i32.const -1)
+ )
+ (nop)
+ (set_local $0
+ (i32.add
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ )
+ (set_local $5
+ (get_local $4)
+ )
+ (return
+ (get_local $5)
+ )
+ )
+ (func $a10 (type $2) (result i32)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ (block $outer
+ (set_local $1
+ (i32.const 0)
+ )
+ (br_if $outer
+ (i32.const 1)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (drop
+ (get_local $2)
+ )
+ (nop)
+ (set_local $3
+ (tee_local $x
+ (i32.const 2)
+ )
+ )
+ (set_local $1
+ (get_local $3)
+ )
+ (br_if $outer
+ (i32.const 3)
+ )
+ (set_local $4
+ (get_local $1)
+ )
+ (drop
+ (get_local $4)
+ )
+ (nop)
+ (set_local $5
+ (tee_local $x
+ (i32.const 5)
+ )
+ )
+ (set_local $1
+ (i32.const 4)
+ )
+ (br_if $outer
+ (get_local $5)
+ )
+ (set_local $6
+ (get_local $1)
+ )
+ (drop
+ (get_local $6)
+ )
+ (nop)
+ (set_local $7
+ (tee_local $x
+ (i32.const 6)
+ )
+ )
+ (set_local $8
+ (tee_local $x
+ (i32.const 7)
+ )
+ )
+ (set_local $1
+ (get_local $7)
+ )
+ (br_if $outer
+ (get_local $8)
+ )
+ (set_local $9
+ (get_local $1)
+ )
+ (drop
+ (get_local $9)
+ )
+ (nop)
+ (set_local $1
+ (i32.const 8)
+ )
+ (br $outer)
+ (unreachable)
+ )
+ (set_local $10
+ (get_local $1)
+ )
+ (return
+ (get_local $10)
+ )
+ )
+ (func $a11 (type $1)
+ (if
+ (i32.const 0)
+ (drop
+ (i32.const 1)
+ )
+ )
+ (nop)
+ )
+ (func $a12 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (if
+ (i32.const 0)
+ (set_local $0
+ (i32.const 1)
+ )
+ (set_local $0
+ (i32.const 2)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $a13 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (block $x
+ (block
+ (set_local $0
+ (i32.const 2)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (br_table $x
+ (i32.const 0)
+ )
+ (if
+ (unreachable)
+ (set_local $2
+ (i32.const 0)
+ )
+ (set_local $2
+ (i32.const 1)
+ )
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $1
+ (get_local $3)
+ )
+ )
+ (set_local $4
+ (get_local $1)
+ )
+ (return
+ (get_local $4)
+ )
+ )
+ (func $a14 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (block $block
+ (set_local $0
+ (i32.const 7)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (br_table $block
+ (i32.const 1)
+ )
+ (select
+ (i32.const 0)
+ (i32.const 1)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (return
+ (get_local $2)
+ )
+ )
+ (func $a15 (type $1)
+ (local $0 i32)
+ (local $1 f32)
+ (local $2 f32)
+ (block
+ (set_local $0
+ (i32.load16_u
+ (i32.const 53)
+ )
+ )
+ (if
+ (get_local $0)
+ (block
+ (unreachable)
+ (unreachable)
+ )
+ (block
+ (block $label$3
+ (unreachable)
+ (unreachable)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (drop
+ (get_local $2)
+ )
+ (nop)
+ )
+ )
+ )
+ (unreachable)
+ )
+ (func $a16 (type $2) (result i32)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (block $label$1
+ (set_local $1
+ (tee_local $x
+ (i32.const 1)
+ )
+ )
+ (block $label$2
+ (set_local $x
+ (i32.const 0)
+ )
+ (nop)
+ (set_local $2
+ (i32.const 0)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $4
+ (i32.eqz
+ (get_local $3)
+ )
+ )
+ (set_local $5
+ (get_local $1)
+ )
+ (br_if $label$1
+ (get_local $4)
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ (drop
+ (get_local $6)
+ )
+ (nop)
+ (set_local $5
+ (i32.const 0)
+ )
+ )
+ (set_local $7
+ (get_local $5)
+ )
+ (return
+ (get_local $7)
+ )
+ )
+ (func $a17 (type $5) (result f32)
+ (local $var$0 f32)
+ (local $1 f32)
+ (local $2 f32)
+ (local $3 f32)
+ (local $4 f32)
+ (local $5 f32)
+ (set_local $1
+ (get_local $var$0)
+ )
+ (set_local $2
+ (tee_local $var$0
+ (f32.const -137438953472)
+ )
+ )
+ (set_local $3
+ (get_local $var$0)
+ )
+ (set_local $4
+ (select
+ (get_local $2)
+ (get_local $3)
+ (i32.const 0)
+ )
+ )
+ (set_local $5
+ (f32.max
+ (get_local $1)
+ (get_local $4)
+ )
+ )
+ (return
+ (get_local $5)
+ )
+ )
+ (func $a18 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $label$1
+ (unreachable)
+ (set_local $0
+ (i32.const 1)
+ )
+ (br_if $label$1
+ (unreachable)
+ )
+ (unreachable)
+ (drop
+ (unreachable)
+ )
+ (unreachable.load16_s
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $a19 (type $5) (result f32)
+ (block $label$0
+ (block $label$1
+ (unreachable)
+ (return
+ (f32.const 4289944320)
+ )
+ (select
+ (unreachable)
+ (unreachable)
+ (i32.const 65535)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (func $call-me (type $ii) (param $0 i32) (param $1 i32)
+ (nop)
+ )
+ (func $code-to-kill (type $1)
+ (local $x i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (block
+ (block $out
+ (br $out)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ (if
+ (i32.const 1)
+ (drop
+ (i32.const 2)
+ )
+ )
+ (nop)
+ (br_table $out $out $out $out
+ (i32.const 3)
+ )
+ (unreachable)
+ (call $code-to-kill)
+ (nop)
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $out1
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $out3
+ (return)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (block $out4
+ (br_table $out4 $out4 $out4 $out4
+ (i32.const 4)
+ )
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (nop)
+ (block $out5
+ (br_if $out5
+ (i32.const 3)
+ )
+ (nop)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $block4
+ (if
+ (i32.const 0)
+ (block
+ (block $out8
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (unreachable)
+ )
+ (block
+ (block $out9
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $out11
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ (unreachable)
+ (unreachable)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (drop
+ (get_local $2)
+ )
+ (nop)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $out13
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ (unreachable)
+ (unreachable)
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ (drop
+ (get_local $4)
+ )
+ (nop)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $out15
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 0)
+ )
+ (unreachable)
+ (unreachable)
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ (drop
+ (get_local $6)
+ )
+ (nop)
+ )
+ )
+ (nop)
+ (block $out16
+ (block $in
+ (br_if $out16
+ (i32.const 1)
+ )
+ (nop)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $block11
+ (block $out18
+ (block $in19
+ (br_if $in19
+ (i32.const 1)
+ )
+ (nop)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ (drop
+ (i32.const 10)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (block $out20
+ (block $in21
+ (br_table $out20 $in21
+ (i32.const 1)
+ )
+ (unreachable)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (nop)
+ (block $out22
+ (block $in23
+ (br_table $in23 $out22
+ (i32.const 1)
+ )
+ (unreachable)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $block13
+ (block $out25
+ (block $in26
+ (br_table $in26 $in26
+ (i32.const 1)
+ )
+ (unreachable)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ (drop
+ (i32.const 10)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $block15
+ (drop
+ (i32.const 10)
+ )
+ (drop
+ (i32.const 42)
+ )
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (return
+ (unreachable)
+ )
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (return)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (loop $loop-in18
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (block $out29
+ (loop $in30
+ (block
+ (br_if $out29
+ (i32.const 1)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (nop)
+ (if
+ (i32.const 0)
+ (block
+ (block $block20
+ (loop $in32
+ (block
+ (br_if $in32
+ (i32.const 1)
+ )
+ (nop)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (unreachable)
+ (drop
+ (i32.const 10)
+ )
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 1)
+ (block
+ (unreachable)
+ (call $call-me
+ (i32.const 123)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 2)
+ (block
+ (unreachable)
+ (call $call-me
+ (unreachable)
+ (i32.const 0)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 3)
+ (block
+ (unreachable)
+ (unreachable)
+ (call $call-me
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const -1)
+ (block
+ (unreachable)
+ (call_indirect $ii
+ (i32.const 123)
+ (i32.const 456)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const -2)
+ (block
+ (unreachable)
+ (call_indirect $ii
+ (i32.const 139)
+ (unreachable)
+ (i32.const 0)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const -3)
+ (block
+ (unreachable)
+ (unreachable)
+ (call_indirect $ii
+ (i32.const 246)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const -4)
+ (block
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ (call_indirect $ii
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 11)
+ (block
+ (unreachable)
+ (tee_local $x
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 22)
+ (block
+ (unreachable)
+ (unreachable.load
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 33)
+ (block
+ (unreachable)
+ (i32.store
+ (i32.const 0)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 44)
+ (block
+ (unreachable)
+ (i32.store
+ (unreachable)
+ (i32.const 0)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 55)
+ (block
+ (unreachable)
+ (unreachable)
+ (i32.store
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 66)
+ (block
+ (unreachable)
+ (i32.eqz
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 77)
+ (block
+ (unreachable)
+ (i32.add
+ (unreachable)
+ (i32.const 0)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 88)
+ (block
+ (unreachable)
+ (i32.add
+ (i32.const 0)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 99)
+ (block
+ (unreachable)
+ (unreachable)
+ (i32.add
+ (unreachable)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 100)
+ (block
+ (unreachable)
+ (select
+ (i32.const 123)
+ (i32.const 456)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 101)
+ (block
+ (unreachable)
+ (select
+ (i32.const 123)
+ (unreachable)
+ (i32.const 456)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (if
+ (i32.const 102)
+ (block
+ (unreachable)
+ (select
+ (unreachable)
+ (i32.const 123)
+ (i32.const 456)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+ (nop)
+ (drop
+ (i32.const 1337)
+ )
+ )
+ (nop)
+ )
+ (func $killer (type $1)
+ (block
+ (unreachable)
+ (unreachable)
+ (drop
+ (i32.const 1000)
+ )
+ )
+ (unreachable)
+ )
+ (func $target (type $1)
+ (drop
+ (i32.const 2000)
+ )
+ )
+ (func $typed-block-none-then-unreachable (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $top-typed
+ (block $switch$0
+ (return
+ (i32.const 0)
+ )
+ (unreachable)
+ (br $switch$0)
+ (unreachable)
+ )
+ (nop)
+ (return
+ (i32.const 1)
+ )
+ (unreachable)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $typed-block-remove-br-changes-type (type $3) (param $$$0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (block
+ (block $switch$7
+ (block $switch-default$10
+ (block $switch-case$9
+ (block $switch-case$8
+ (br_table $switch-case$9 $switch-case$8 $switch-default$10
+ (i32.const -1)
+ )
+ (unreachable)
+ )
+ (nop)
+ )
+ (nop)
+ (set_local $1
+ (get_local $$$0)
+ )
+ (return
+ (get_local $1)
+ )
+ (unreachable)
+ (br $switch$7)
+ (unreachable)
+ )
+ (nop)
+ (set_local $2
+ (get_local $$$0)
+ )
+ (return
+ (get_local $2)
+ )
+ (unreachable)
+ )
+ (nop)
+ (return
+ (i32.const 0)
+ )
+ (unreachable)
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ (return
+ (get_local $4)
+ )
+ )
+ (func $global (type $1)
+ (local $0 i32)
+ (block
+ (unreachable)
+ (unreachable)
+ (set_local $0
+ (get_global $x)
+ )
+ (drop
+ (get_local $0)
+ )
+ (nop)
+ (set_global $x
+ (i32.const 1)
+ )
+ (nop)
+ )
+ (unreachable)
+ )
+ (func $ret (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block
+ (return
+ (i32.const 0)
+ )
+ (unreachable)
+ (nop)
+ (set_local $0
+ (i32.const 0)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unreachable-br (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $out
+ (set_local $0
+ (i32.const 0)
+ )
+ (br $out)
+ (unreachable)
+ (unreachable)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unreachable-br-loop (type $2) (result i32)
+ (loop $out
+ (br $out)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (func $unreachable-block-ends-switch (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $label$0
+ (block $label$3
+ (nop)
+ (unreachable)
+ (br_table $label$3
+ (unreachable)
+ )
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ )
+ (nop)
+ (set_local $0
+ (i32.const 19)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unreachable-block-ends-br_if (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $label$0
+ (block $label$2
+ (nop)
+ (unreachable)
+ (br_if $label$2
+ (unreachable)
+ )
+ (unreachable)
+ (unreachable)
+ (unreachable)
+ )
+ (nop)
+ (set_local $0
+ (i32.const 19)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unreachable-brs-3 (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block $label$0
+ (set_local $0
+ (i32.const 18)
+ )
+ (br $label$0)
+ (grow_memory
+ (unreachable)
+ )
+ (unreachable)
+ (unreachable)
+ (set_local $0
+ (i32.const 21)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unreachable-brs-4 (type $3) (param $var$0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (block $label$0
+ (block $label$1
+ (unreachable)
+ (set_local $1
+ (i32.const 4104)
+ )
+ (br_if $label$0
+ (unreachable)
+ )
+ (unreachable)
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (set_local $2
+ (i32.const 4)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $1
+ (get_local $3)
+ )
+ (br $label$0)
+ (unreachable)
+ (set_local $1
+ (i32.const 16)
+ )
+ )
+ (set_local $4
+ (get_local $1)
+ )
+ (set_local $5
+ (i32.add
+ (i32.const 1)
+ (get_local $4)
+ )
+ )
+ (return
+ (get_local $5)
+ )
+ )
+ (func $call-unreach (type $4) (param $var$0 i64) (param $var$1 i64) (result i64)
+ (local $2 i64)
+ (local $3 i64)
+ (local $4 i32)
+ (local $5 i64)
+ (local $6 i64)
+ (local $7 i64)
+ (local $8 i64)
+ (local $9 i64)
+ (local $10 i64)
+ (local $11 i64)
+ (local $12 i64)
+ (local $13 i64)
+ (local $14 i64)
+ (local $15 i64)
+ (local $16 i64)
+ (local $17 i64)
+ (block
+ (set_local $3
+ (get_local $var$0)
+ )
+ (set_local $4
+ (i64.eqz
+ (get_local $3)
+ )
+ )
+ (if
+ (get_local $4)
+ (block
+ (block $label$0
+ (set_local $5
+ (get_local $var$1)
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ )
+ (set_local $7
+ (get_local $6)
+ )
+ (set_local $16
+ (get_local $7)
+ )
+ )
+ (block
+ (block $label$1
+ (set_local $8
+ (get_local $var$0)
+ )
+ (set_local $9
+ (i64.sub
+ (get_local $8)
+ (i64.const 1)
+ )
+ )
+ (block $block
+ (set_local $10
+ (get_local $var$0)
+ )
+ (set_local $2
+ (get_local $10)
+ )
+ (nop)
+ (nop)
+ (set_local $11
+ (get_local $2)
+ )
+ (set_local $12
+ (get_local $11)
+ )
+ )
+ (set_local $13
+ (get_local $12)
+ )
+ (unreachable)
+ (i64.mul
+ (get_local $13)
+ (unreachable)
+ )
+ (call $call-unreach
+ (get_local $9)
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (set_local $15
+ (get_local $14)
+ )
+ (set_local $16
+ (get_local $15)
+ )
+ )
+ )
+ )
+ (set_local $17
+ (get_local $16)
+ )
+ (return
+ (get_local $17)
+ )
+ )
+ (func $test-flatten (type $1)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ (local $11 i32)
+ (local $12 i32)
+ (local $13 i32)
+ (local $14 i32)
+ (local $15 i32)
+ (local $16 i32)
+ (local $17 i32)
+ (local $18 i32)
+ (local $19 i32)
+ (local $20 i32)
+ (local $21 i32)
+ (local $22 i32)
+ (local $23 i32)
+ (local $24 i32)
+ (local $25 i32)
+ (local $26 i32)
+ (local $27 i32)
+ (local $28 i32)
+ (local $29 i32)
+ (local $30 i32)
+ (local $31 i32)
+ (local $32 i32)
+ (local $33 i32)
+ (local $34 i32)
+ (local $35 i32)
+ (local $36 i32)
+ (local $37 i32)
+ (block $out
+ (drop
+ (i32.add
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ (br $out)
+ (i32.add
+ (i32.const 1)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (br $out)
+ (i32.add
+ (unreachable)
+ (i32.const 1)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (br_table $out $out $out $out
+ (i32.const 3)
+ )
+ (i32.add
+ (i32.const 1)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (block $block
+ (drop
+ (i32.const 2)
+ )
+ (drop
+ (i32.const 3)
+ )
+ (set_local $0
+ (i32.const 4)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (set_local $2
+ (i32.add
+ (i32.const 1)
+ (get_local $1)
+ )
+ )
+ (drop
+ (get_local $2)
+ )
+ (nop)
+ (block $in
+ (block $switch-in
+ (set_local $3
+ (i32.const 2)
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ (set_local $5
+ (get_local $3)
+ )
+ (br_table $in $switch-in $in
+ (i32.const 777)
+ )
+ (unreachable)
+ )
+ (set_local $6
+ (get_local $5)
+ )
+ (drop
+ (get_local $6)
+ )
+ (nop)
+ (set_local $4
+ (i32.const 3)
+ )
+ (br $in)
+ (unreachable)
+ (set_local $4
+ (i32.const 4)
+ )
+ )
+ (set_local $7
+ (get_local $4)
+ )
+ (set_local $8
+ (i32.add
+ (i32.const 1)
+ (get_local $7)
+ )
+ )
+ (drop
+ (get_local $8)
+ )
+ (nop)
+ (loop $loop-in
+ (set_local $9
+ (i32.const 5)
+ )
+ )
+ (set_local $10
+ (get_local $9)
+ )
+ (set_local $11
+ (i32.add
+ (i32.const 1)
+ (get_local $10)
+ )
+ )
+ (drop
+ (get_local $11)
+ )
+ (nop)
+ (if
+ (i32.const 6)
+ (set_local $12
+ (i32.const 7)
+ )
+ (set_local $12
+ (i32.const 8)
+ )
+ )
+ (set_local $13
+ (get_local $12)
+ )
+ (set_local $14
+ (i32.add
+ (i32.const 1)
+ (get_local $13)
+ )
+ )
+ (drop
+ (get_local $14)
+ )
+ (nop)
+ (drop
+ (select
+ (i32.const 9)
+ (i32.const 10)
+ (i32.const 11)
+ )
+ )
+ (br $out)
+ (select
+ (unreachable)
+ (i32.const 10)
+ (i32.const 11)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (br $out)
+ (select
+ (i32.const 9)
+ (unreachable)
+ (i32.const 11)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (br $out)
+ (select
+ (i32.const 9)
+ (i32.const 10)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (if
+ (i32.const 11)
+ (set_local $15
+ (i32.const 12)
+ )
+ (set_local $15
+ (i32.const 13)
+ )
+ )
+ (set_local $16
+ (get_local $15)
+ )
+ (set_local $17
+ (select
+ (get_local $16)
+ (i32.const 9)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (get_local $17)
+ )
+ (nop)
+ (if
+ (i32.const 11)
+ (set_local $18
+ (i32.const 12)
+ )
+ (set_local $18
+ (i32.const 13)
+ )
+ )
+ (set_local $19
+ (get_local $18)
+ )
+ (set_local $20
+ (select
+ (i32.const 9)
+ (get_local $19)
+ (i32.const 10)
+ )
+ )
+ (drop
+ (get_local $20)
+ )
+ (nop)
+ (if
+ (i32.const 11)
+ (set_local $21
+ (i32.const 12)
+ )
+ (set_local $21
+ (i32.const 13)
+ )
+ )
+ (set_local $22
+ (get_local $21)
+ )
+ (set_local $23
+ (select
+ (i32.const 9)
+ (i32.const 10)
+ (get_local $22)
+ )
+ )
+ (drop
+ (get_local $23)
+ )
+ (nop)
+ (if
+ (i32.const 11)
+ (set_local $24
+ (i32.const 12)
+ )
+ (set_local $24
+ (i32.const 13)
+ )
+ )
+ (set_local $25
+ (get_local $24)
+ )
+ (if
+ (i32.const 15)
+ (set_local $26
+ (i32.const 16)
+ )
+ (set_local $26
+ (i32.const 17)
+ )
+ )
+ (set_local $27
+ (get_local $26)
+ )
+ (set_local $28
+ (select
+ (get_local $25)
+ (i32.const 14)
+ (get_local $27)
+ )
+ )
+ (drop
+ (get_local $28)
+ )
+ (nop)
+ (return)
+ (i32.add
+ (i32.const 1)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (unreachable)
+ (i32.add
+ (i32.const 1)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (block
+ (if
+ (i32.const 5)
+ (set_local $29
+ (i32.const 6)
+ )
+ (set_local $29
+ (i32.const 7)
+ )
+ )
+ (set_local $30
+ (get_local $29)
+ )
+ (if
+ (get_local $30)
+ (set_local $33
+ (i32.const 8)
+ )
+ (block
+ (if
+ (i32.const 9)
+ (set_local $31
+ (i32.const 10)
+ )
+ (set_local $31
+ (i32.const 11)
+ )
+ )
+ (set_local $32
+ (get_local $31)
+ )
+ (set_local $33
+ (get_local $32)
+ )
+ )
+ )
+ )
+ (set_local $34
+ (get_local $33)
+ )
+ (drop
+ (get_local $34)
+ )
+ (nop)
+ (block $temp
+ (set_local $35
+ (i32.const 1)
+ )
+ (br_if $temp
+ (i32.const 2)
+ )
+ (set_local $36
+ (get_local $35)
+ )
+ (set_local $35
+ (get_local $36)
+ )
+ )
+ (set_local $37
+ (get_local $35)
+ )
+ (drop
+ (get_local $37)
+ )
+ (nop)
+ )
+ (nop)
+ )
+ (func $flatten-return-value (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (block
+ (return
+ (i32.const 2)
+ )
+ (i32.add
+ (i32.const 1)
+ (unreachable)
+ )
+ (drop
+ (unreachable)
+ )
+ (unreachable)
+ (set_local $0
+ (i32.const 3)
+ )
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ (func $unbug (type $1)
+ (local $12 i32)
+ (local $432 i32)
+ (local $430 i32)
+ (local $431 i32)
+ (local $9 i32)
+ (local $5 i32)
+ (local $433 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (local $10 i32)
+ (local $11 i32)
+ (local $12 i32)
+ (local $13 i32)
+ (local $14 i32)
+ (local $15 i32)
+ (local $16 i32)
+ (local $17 i32)
+ (local $18 i32)
+ (local $19 i32)
+ (local $20 i32)
+ (local $21 i32)
+ (local $22 i32)
+ (block $block
+ (block
+ (set_local $7
+ (get_local $12)
+ )
+ (set_local $8
+ (i32.eq
+ (get_local $7)
+ (i32.const 65535)
+ )
+ )
+ (if
+ (get_local $8)
+ (block
+ (block $block44
+ (block $label$78
+ (set_local $430
+ (i32.const 0)
+ )
+ (nop)
+ )
+ (nop)
+ (set_local $9
+ (get_local $430)
+ )
+ (set_local $432
+ (get_local $9)
+ )
+ (nop)
+ )
+ (nop)
+ )
+ (block
+ (block $block45
+ (block $label$79
+ (set_local $10
+ (get_local $9)
+ )
+ (set_local $11
+ (get_local $5)
+ )
+ (set_local $12
+ (get_local $12)
+ )
+ (set_local $13
+ (i32.mul
+ (get_local $12)
+ (i32.const 12)
+ )
+ )
+ (set_local $14
+ (i32.add
+ (get_local $11)
+ (get_local $13)
+ )
+ )
+ (set_local $15
+ (i32.load16_u offset=2
+ (get_local $14)
+ )
+ )
+ (set_local $16
+ (i32.lt_u
+ (get_local $10)
+ (get_local $15)
+ )
+ )
+ (set_local $431
+ (get_local $16)
+ )
+ (nop)
+ )
+ (nop)
+ (set_local $17
+ (get_local $431)
+ )
+ (set_local $432
+ (get_local $17)
+ )
+ (nop)
+ )
+ (nop)
+ )
+ )
+ )
+ (nop)
+ (set_local $433
+ (i32.const 1)
+ )
+ (nop)
+ (set_local $18
+ (get_local $432)
+ )
+ (set_local $19
+ (get_local $433)
+ )
+ (set_local $20
+ (i32.xor
+ (get_local $18)
+ (get_local $19)
+ )
+ )
+ (set_local $21
+ (get_local $20)
+ )
+ )
+ (set_local $22
+ (get_local $21)
+ )
+ (drop
+ (get_local $22)
+ )
+ (nop)
+ )
+ (func $outer-block-typed (type $3) (param $var$0 i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (block $block
+ (block $label$0
+ (set_local $1
+ (i32.const 16)
+ )
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (set_local $3
+ (i32.add
+ (i32.const 1)
+ (get_local $2)
+ )
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ )
+ (set_local $5
+ (get_local $4)
+ )
+ (return
+ (get_local $5)
+ )
+ )
+ (func $nested-br_if-with-value (type $2) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (block $label$0
+ (block $block
+ (set_local $1
+ (get_local $0)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ )
+ (set_local $3
+ (get_local $2)
+ )
+ (set_local $4
+ (i32.const 0)
+ )
+ (br_if $label$0
+ (get_local $3)
+ )
+ (set_local $5
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (nop)
+ (set_local $4
+ (i32.const 1)
+ )
+ )
+ (set_local $6
+ (get_local $4)
+ )
+ (return
+ (get_local $6)
+ )
+ )
+ (func $switch-unreachable (type $1)
+ (block $label$3
+ (unreachable)
+ (br_table $label$3
+ (unreachable)
+ )
+ (unreachable)
+ )
+ (nop)
+ )
+ (func $br_if_order (type $3) (param $x i32) (result i32)
+ (local $1 i32)
+ (local $2 i32)
+ (local $3 i32)
+ (local $4 i32)
+ (local $5 i32)
+ (local $6 i32)
+ (local $7 i32)
+ (local $8 i32)
+ (local $9 i32)
+ (block $outer
+ (block $inner
+ (set_local $1
+ (i32.const 0)
+ )
+ (br_if $outer
+ (i32.const 1)
+ )
+ (set_local $2
+ (get_local $1)
+ )
+ (block $block
+ (set_local $3
+ (i32.const -16)
+ )
+ )
+ (set_local $4
+ (get_local $3)
+ )
+ (set_local $5
+ (call $br_if_order
+ (get_local $4)
+ )
+ )
+ (set_local $6
+ (get_local $2)
+ )
+ (br_if $inner
+ (get_local $5)
+ )
+ (set_local $7
+ (get_local $6)
+ )
+ (set_local $6
+ (get_local $7)
+ )
+ )
+ (set_local $8
+ (get_local $6)
+ )
+ (set_local $1
+ (get_local $8)
+ )
+ )
+ (set_local $9
+ (get_local $1)
+ )
+ (return
+ (get_local $9)
+ )
+ )
+)
diff --git a/test/passes/flatten-control-flow.wasm b/test/passes/flatten.wasm
index 0ba6a86fe..0ba6a86fe 100644
--- a/test/passes/flatten-control-flow.wasm
+++ b/test/passes/flatten.wasm
Binary files differ
diff --git a/test/passes/flatten-control-flow.wast b/test/passes/flatten.wast
index 97ecf74c7..92edd354d 100644
--- a/test/passes/flatten-control-flow.wast
+++ b/test/passes/flatten.wast
@@ -8,6 +8,220 @@
(table 1 1 anyfunc)
(elem (i32.const 0) $call-me)
(memory $0 10)
+ (func $a1
+ (drop (i32.add (i32.const 0) (i32.const 1)))
+ )
+ (func $a2 (result i32)
+ (i32.add (i32.const 0) (i32.const 1))
+ )
+ (func $a3 (result i32)
+ (i32.add
+ (i32.const 0)
+ (block (result i32)
+ (i32.const 1)
+ )
+ )
+ )
+ (func $a4
+ (drop
+ (i32.add
+ (i32.const 0)
+ (block (result i32)
+ (i32.const 1)
+ )
+ )
+ )
+ )
+ (func $a5 (result i32)
+ (i32.add
+ (block (result i32)
+ (i32.const 0)
+ )
+ (block (result i32)
+ (i32.const 1)
+ )
+ )
+ )
+ (func $a6 (result i32)
+ (local $x i32)
+ (i32.add
+ (block (result i32)
+ (tee_local $x
+ (i32.const 0)
+ )
+ )
+ (block (result i32)
+ (tee_local $x
+ (i32.const 1)
+ )
+ )
+ )
+ )
+ (func $a7 (result i32)
+ (local $x i32)
+ (block (result i32)
+ (i32.add
+ (block (result i32)
+ (tee_local $x
+ (i32.const 0)
+ )
+ )
+ (block (result i32)
+ (tee_local $x
+ (i32.const 1)
+ )
+ )
+ )
+ )
+ )
+ (func $a8 (result i32)
+ (local $x i32)
+ (block $outer (result i32)
+ (block $inner (result i32)
+ (i32.add
+ (block (result i32)
+ (br $inner
+ (i32.const -1)
+ )
+ (br $outer
+ (i32.const 0)
+ )
+ (i32.const 1)
+ )
+ (block (result i32)
+ (br $outer
+ (i32.const 2)
+ )
+ (tee_local $x
+ (i32.const 3)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $a9 (result i32)
+ (loop $outer (result i32)
+ (loop $inner (result i32)
+ (br_if $outer (i32.const -1))
+ (i32.add
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
+ )
+ )
+ (func $a10 (result i32)
+ (local $x i32)
+ (block $outer (result i32)
+ (drop (br_if $outer (i32.const 0) (i32.const 1)))
+ (drop (br_if $outer (tee_local $x (i32.const 2)) (i32.const 3)))
+ (drop (br_if $outer (i32.const 4) (tee_local $x (i32.const 5))))
+ (drop (br_if $outer (tee_local $x (i32.const 6)) (tee_local $x (i32.const 7))))
+ (br $outer (i32.const 8))
+ )
+ )
+ (func $a11
+ (if (i32.const 0)
+ (drop (i32.const 1))
+ )
+ )
+ (func $a12 (result i32)
+ (if (result i32) (i32.const 0)
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ (func $a13 (result i32)
+ (block $x i32
+ (if i32
+ (br_table $x (i32.const 2) (i32.const 0))
+ (i32.const 0)
+ (i32.const 1)
+ )
+ )
+ )
+ (func $a14 (result i32)
+ (block i32
+ (select
+ (i32.const 0) (i32.const 1) (br_table 0 (i32.const 7) (i32.const 1))
+ )
+ )
+ )
+ (func $a15
+ (if
+ (i32.load16_u
+ (i32.const 53)
+ )
+ (unreachable)
+ (drop
+ (block $label$3 (result f32)
+ (unreachable)
+ )
+ )
+ )
+ )
+ (func $a16 (result i32)
+ (local $x i32)
+ (block $label$1 (result i32)
+ (drop
+ (br_if $label$1
+ (tee_local $x ;; set here, then it is undone later, but this value is used, not the contents of $x!
+ (i32.const 1)
+ )
+ (i32.eqz ;; 0 into 1, so take the br_if
+ (block $label$2 (result i32)
+ (set_local $x
+ (i32.const 0) ;; undo the above tee
+ )
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ (i32.const 0)
+ )
+ )
+ (func $a17 (result f32)
+ (local $var$0 f32)
+ (f32.max
+ (get_local $var$0)
+ (select
+ (tee_local $var$0
+ (f32.const -137438953472)
+ )
+ (get_local $var$0)
+ (i32.const 0)
+ )
+ )
+ )
+ (func $a18 (result i32)
+ (block $label$1 (result i32)
+ (i32.load16_s
+ (drop ;; an unreachable drop. one we move its contents outside, it should stay unreachable
+ (br_if $label$1
+ (i32.const 1)
+ (unreachable)
+ )
+ )
+ )
+ )
+ )
+ (func $a19 (result f32)
+ (block $label$0
+ (block $label$1
+ (drop
+ (select
+ (unreachable) ;; move this out, so it happens before the return
+ (return
+ (f32.const 4289944320)
+ )
+ (i32.const 65535)
+ )
+ )
+ )
+ )
+ )
(func $call-me (param $0 i32) (param $1 i32)
(nop)
)
@@ -780,4 +994,21 @@
)
)
)
+ (func $br_if_order (param $x i32) (result i32)
+ (block $outer (result i32)
+ (block $inner (result i32)
+ (br_if $inner
+ (br_if $outer
+ (i32.const 0)
+ (i32.const 1)
+ )
+ (call $br_if_order
+ (block (result i32)
+ (i32.const -16)
+ )
+ )
+ )
+ )
+ )
+ )
)
diff --git a/test/passes/flatten_rereloop.txt b/test/passes/flatten_rereloop.txt
new file mode 100644
index 000000000..38dbabc7c
--- /dev/null
+++ b/test/passes/flatten_rereloop.txt
@@ -0,0 +1,45 @@
+(module
+ (type $0 (func (result f64)))
+ (memory $0 0)
+ (func $0 (type $0) (result f64)
+ (local $0 f64)
+ (local $1 f64)
+ (local $2 i32)
+ (block $block$2$break
+ (block
+ )
+ (if
+ (i32.const 0)
+ (br $block$2$break)
+ (block
+ (block
+ (nop)
+ (set_local $0
+ (f64.const -nan:0xfffffd63e4e5a)
+ )
+ (set_local $1
+ (get_local $0)
+ )
+ (return
+ (get_local $1)
+ )
+ )
+ )
+ )
+ )
+ (block
+ (block $block$3$break
+ (block
+ )
+ (block
+ (br $block$3$break)
+ )
+ )
+ (block
+ (block
+ (unreachable)
+ )
+ )
+ )
+ )
+)
diff --git a/test/passes/flatten_rereloop.wast b/test/passes/flatten_rereloop.wast
new file mode 100644
index 000000000..b575f9c55
--- /dev/null
+++ b/test/passes/flatten_rereloop.wast
@@ -0,0 +1,12 @@
+(module
+ (func $0 (result f64)
+ (if
+ (i32.const 0)
+ (loop $label$2
+ (unreachable)
+ )
+ )
+ (f64.const -nan:0xfffffd63e4e5a)
+ )
+)
+
diff --git a/test/wasm2asm.asserts.js b/test/wasm2asm.asserts.js
index db4612077..c9b28888e 100644
--- a/test/wasm2asm.asserts.js
+++ b/test/wasm2asm.asserts.js
@@ -19,50 +19,121 @@ function asmFunc(global, env, buffer) {
function $$1(x, y) {
x = x | 0;
y = y | 0;
- return x + y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 + $$3 | 0;
+ return $$4 | 0;
}
function $$2(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) / (y | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) / ($$3 | 0) | 0;
+ return $$4 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {
diff --git a/test/wasm2asm.traps.js b/test/wasm2asm.traps.js
index 4b89f5b89..2f4ddb0d9 100644
--- a/test/wasm2asm.traps.js
+++ b/test/wasm2asm.traps.js
@@ -19,50 +19,121 @@ function asmFunc(global, env, buffer) {
function $$1(x, y) {
x = x | 0;
y = y | 0;
- return x + y | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = $$2 + $$3 | 0;
+ return $$4 | 0;
}
function $$2(x, y) {
x = x | 0;
y = y | 0;
- return (x | 0) / (y | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0;
+ $$2 = x;
+ $$3 = y;
+ $$4 = ($$2 | 0) / ($$3 | 0) | 0;
+ return $$4 | 0;
}
function __wasm_ctz_i32(x) {
x = x | 0;
- var $$1 = 0;
- if ((x | 0) == (0 | 0)) $$1 = 32; else $$1 = 31 - Math_clz32(x ^ (x - 1 | 0) | 0) | 0;
- return $$1 | 0;
+ var $$1 = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0;
+ $$1 = x;
+ $$2 = ($$1 | 0) == (0 | 0);
+ if ($$2) $$9 = 32; else {
+ $$3 = x;
+ $$4 = x;
+ $$5 = $$4 - 1 | 0;
+ $$6 = $$3 ^ $$5 | 0;
+ $$7 = Math_clz32($$6);
+ $$8 = 31 - $$7 | 0;
+ $$9 = $$8;
+ }
+ $$10 = $$9;
+ return $$10 | 0;
}
function __wasm_popcnt_i32(x) {
x = x | 0;
- var count = 0, $$2 = 0, $$3 = 0;
+ var count = 0, $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0;
count = 0;
b : {
l : do {
$$2 = count;
- if ((x | 0) == (0 | 0)) break b;
- x = x & (x - 1 | 0) | 0;
- count = count + 1 | 0;
+ $$3 = x;
+ $$4 = ($$3 | 0) == (0 | 0);
+ $$5 = $$2;
+ if ($$4) break b;
+ $$6 = $$5;
+ $$7 = x;
+ $$8 = x;
+ $$9 = $$8 - 1 | 0;
+ $$10 = $$7 & $$9 | 0;
+ x = $$10;
+ $$11 = count;
+ $$12 = $$11 + 1 | 0;
+ count = $$12;
continue l;
break l;
} while (1);
};
- $$3 = $$2;
- return $$3 | 0;
+ $$13 = $$5;
+ $$14 = $$13;
+ $$15 = $$14;
+ return $$15 | 0;
}
function __wasm_rotl_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 >>> (k & 31 | 0) | 0) & x | 0) << (k & 31 | 0) | 0 | (((4294967295 << (32 - (k & 31 | 0) | 0) | 0) & x | 0) >>> (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 >>> $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 << $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 << $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 >>> $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
function __wasm_rotr_i32(x, k) {
x = x | 0;
k = k | 0;
- return ((4294967295 << (k & 31 | 0) | 0) & x | 0) >>> (k & 31 | 0) | 0 | (((4294967295 >>> (32 - (k & 31 | 0) | 0) | 0) & x | 0) << (32 - (k & 31 | 0) | 0) | 0) | 0 | 0;
+ var $$2 = 0, $$3 = 0, $$4 = 0, $$5 = 0, $$6 = 0, $$7 = 0, $$8 = 0, $$9 = 0, $$10 = 0, $$11 = 0, $$12 = 0, $$13 = 0, $$14 = 0, $$15 = 0, $$16 = 0, $$17 = 0, $$18 = 0, $$19 = 0, $$20 = 0;
+ $$2 = k;
+ $$3 = $$2 & 31 | 0;
+ $$4 = 4294967295 << $$3 | 0;
+ $$5 = x;
+ $$6 = $$4 & $$5 | 0;
+ $$7 = k;
+ $$8 = $$7 & 31 | 0;
+ $$9 = $$6 >>> $$8 | 0;
+ $$10 = k;
+ $$11 = $$10 & 31 | 0;
+ $$12 = 32 - $$11 | 0;
+ $$13 = 4294967295 >>> $$12 | 0;
+ $$14 = x;
+ $$15 = $$13 & $$14 | 0;
+ $$16 = k;
+ $$17 = $$16 & 31 | 0;
+ $$18 = 32 - $$17 | 0;
+ $$19 = $$15 << $$18 | 0;
+ $$20 = $$9 | $$19 | 0;
+ return $$20 | 0;
}
return {