summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/debugInfo.fromasm25
-rw-r--r--test/debugInfo.fromasm.clamp25
-rw-r--r--test/debugInfo.fromasm.clamp.map2
-rw-r--r--test/debugInfo.fromasm.map2
-rw-r--r--test/dynamicLibrary.fromasm18
-rw-r--r--test/dynamicLibrary.fromasm.clamp18
-rw-r--r--test/dynamicLibrary.fromasm.imprecise18
-rw-r--r--test/emcc_O2_hello_world.fromasm44
-rw-r--r--test/emcc_O2_hello_world.fromasm.clamp44
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise26
-rw-r--r--test/emcc_hello_world.fromasm670
-rw-r--r--test/emcc_hello_world.fromasm.clamp670
-rw-r--r--test/emcc_hello_world.fromasm.imprecise648
-rw-r--r--test/memorygrowth.fromasm54
-rw-r--r--test/memorygrowth.fromasm.clamp54
-rw-r--r--test/memorygrowth.fromasm.imprecise36
-rw-r--r--test/passes/inlining-optimizing.txt35
-rw-r--r--test/passes/inlining-optimizing.wast79
-rw-r--r--test/passes/inlining.txt111
-rw-r--r--test/passes/inlining.wast10
-rw-r--r--test/unit.asm.js1
-rw-r--r--test/unit.fromasm89
-rw-r--r--test/unit.fromasm.clamp89
-rw-r--r--test/unit.fromasm.clamp.no-opts5
-rw-r--r--test/unit.fromasm.imprecise70
-rw-r--r--test/unit.fromasm.imprecise.no-opts5
-rw-r--r--test/unit.fromasm.no-opts5
-rw-r--r--test/wasm-only.asm.js12
-rw-r--r--test/wasm-only.fromasm165
-rw-r--r--test/wasm-only.fromasm.clamp165
-rw-r--r--test/wasm-only.fromasm.clamp.no-opts44
-rw-r--r--test/wasm-only.fromasm.imprecise44
-rw-r--r--test/wasm-only.fromasm.imprecise.no-opts44
-rw-r--r--test/wasm-only.fromasm.no-opts44
34 files changed, 1810 insertions, 1561 deletions
diff --git a/test/debugInfo.fromasm b/test/debugInfo.fromasm
index f11000841..16033f98a 100644
--- a/test/debugInfo.fromasm
+++ b/test/debugInfo.fromasm
@@ -31,17 +31,8 @@
(i32.const 1)
)
)
- (func $i32s-rem (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.rem_s
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $opts (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
;;@ even-opted.cpp:1:0
(set_local $0
(i32.add
@@ -56,11 +47,17 @@
(get_local $0)
)
)
- ;;@ even-opted.cpp:3:0
(i32.add
- (call $i32s-rem
- (get_local $0)
- (get_local $1)
+ (if (result i32)
+ ;;@ even-opted.cpp:3:0
+ (tee_local $2
+ (get_local $1)
+ )
+ (i32.rem_s
+ (get_local $0)
+ (get_local $2)
+ )
+ (i32.const 0)
)
(get_local $1)
)
diff --git a/test/debugInfo.fromasm.clamp b/test/debugInfo.fromasm.clamp
index f11000841..16033f98a 100644
--- a/test/debugInfo.fromasm.clamp
+++ b/test/debugInfo.fromasm.clamp
@@ -31,17 +31,8 @@
(i32.const 1)
)
)
- (func $i32s-rem (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.rem_s
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $opts (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
;;@ even-opted.cpp:1:0
(set_local $0
(i32.add
@@ -56,11 +47,17 @@
(get_local $0)
)
)
- ;;@ even-opted.cpp:3:0
(i32.add
- (call $i32s-rem
- (get_local $0)
- (get_local $1)
+ (if (result i32)
+ ;;@ even-opted.cpp:3:0
+ (tee_local $2
+ (get_local $1)
+ )
+ (i32.rem_s
+ (get_local $0)
+ (get_local $2)
+ )
+ (i32.const 0)
)
(get_local $1)
)
diff --git a/test/debugInfo.fromasm.clamp.map b/test/debugInfo.fromasm.clamp.map
index 5680294cd..5fb3151c9 100644
--- a/test/debugInfo.fromasm.clamp.map
+++ b/test/debugInfo.fromasm.clamp.map
@@ -1 +1 @@
-{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c"],"names":[],"mappings":"yLC8ylTA,cC7vlTA,OAkDA,mCCnGA,OACA,OACA,qBCAA,wBAKA,MAJA,OADA,0BAKA,iGCsi1DA"} \ No newline at end of file
+{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c"],"names":[],"mappings":"wLC8ylTA,cC7vlTA,OAkDA,iBCnGA,OACA,OACA,8BCAA,wBAKA,MAJA,OADA,0BAKA,iGCsi1DA"} \ No newline at end of file
diff --git a/test/debugInfo.fromasm.map b/test/debugInfo.fromasm.map
index 5680294cd..5fb3151c9 100644
--- a/test/debugInfo.fromasm.map
+++ b/test/debugInfo.fromasm.map
@@ -1 +1 @@
-{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c"],"names":[],"mappings":"yLC8ylTA,cC7vlTA,OAkDA,mCCnGA,OACA,OACA,qBCAA,wBAKA,MAJA,OADA,0BAKA,iGCsi1DA"} \ No newline at end of file
+{"version":3,"sources":["tests/hello_world.c","tests/other_file.cpp","return.cpp","even-opted.cpp","fib.c","/tmp/emscripten_test_binaryen2_28hnAe/src.c"],"names":[],"mappings":"wLC8ylTA,cC7vlTA,OAkDA,iBCnGA,OACA,OACA,8BCAA,wBAKA,MAJA,OADA,0BAKA,iGCsi1DA"} \ No newline at end of file
diff --git a/test/dynamicLibrary.fromasm b/test/dynamicLibrary.fromasm
index cd0d1d224..4456edfa2 100644
--- a/test/dynamicLibrary.fromasm
+++ b/test/dynamicLibrary.fromasm
@@ -15,14 +15,6 @@
(export "__post_instantiate" (func $__post_instantiate))
(export "runPostSets" (func $runPostSets))
(export "_global" (global $_global))
- (func $___cxx_global_var_init
- (call $__ZN3FooC2Ev
- (i32.add
- (get_global $memoryBase)
- (i32.const 5242912)
- )
- )
- )
(func $__ZN3FooC2Ev (param $0 i32)
(local $1 i32)
(set_local $1
@@ -52,9 +44,6 @@
(get_local $1)
)
)
- (func $__GLOBAL__sub_I_liblib_cpp
- (call $___cxx_global_var_init)
- )
(func $runPostSets
(nop)
)
@@ -72,6 +61,11 @@
)
)
(call $runPostSets)
- (call $__GLOBAL__sub_I_liblib_cpp)
+ (call $__ZN3FooC2Ev
+ (i32.add
+ (get_global $memoryBase)
+ (i32.const 5242912)
+ )
+ )
)
)
diff --git a/test/dynamicLibrary.fromasm.clamp b/test/dynamicLibrary.fromasm.clamp
index cd0d1d224..4456edfa2 100644
--- a/test/dynamicLibrary.fromasm.clamp
+++ b/test/dynamicLibrary.fromasm.clamp
@@ -15,14 +15,6 @@
(export "__post_instantiate" (func $__post_instantiate))
(export "runPostSets" (func $runPostSets))
(export "_global" (global $_global))
- (func $___cxx_global_var_init
- (call $__ZN3FooC2Ev
- (i32.add
- (get_global $memoryBase)
- (i32.const 5242912)
- )
- )
- )
(func $__ZN3FooC2Ev (param $0 i32)
(local $1 i32)
(set_local $1
@@ -52,9 +44,6 @@
(get_local $1)
)
)
- (func $__GLOBAL__sub_I_liblib_cpp
- (call $___cxx_global_var_init)
- )
(func $runPostSets
(nop)
)
@@ -72,6 +61,11 @@
)
)
(call $runPostSets)
- (call $__GLOBAL__sub_I_liblib_cpp)
+ (call $__ZN3FooC2Ev
+ (i32.add
+ (get_global $memoryBase)
+ (i32.const 5242912)
+ )
+ )
)
)
diff --git a/test/dynamicLibrary.fromasm.imprecise b/test/dynamicLibrary.fromasm.imprecise
index d30a1c912..f575c9781 100644
--- a/test/dynamicLibrary.fromasm.imprecise
+++ b/test/dynamicLibrary.fromasm.imprecise
@@ -14,14 +14,6 @@
(export "__post_instantiate" (func $__post_instantiate))
(export "runPostSets" (func $runPostSets))
(export "_global" (global $_global))
- (func $___cxx_global_var_init
- (call $__ZN3FooC2Ev
- (i32.add
- (get_global $memoryBase)
- (i32.const 5242912)
- )
- )
- )
(func $__ZN3FooC2Ev (param $0 i32)
(local $1 i32)
(set_local $1
@@ -51,9 +43,6 @@
(get_local $1)
)
)
- (func $__GLOBAL__sub_I_liblib_cpp
- (call $___cxx_global_var_init)
- )
(func $runPostSets
(nop)
)
@@ -71,6 +60,11 @@
)
)
(call $runPostSets)
- (call $__GLOBAL__sub_I_liblib_cpp)
+ (call $__ZN3FooC2Ev
+ (i32.add
+ (get_global $memoryBase)
+ (i32.const 5242912)
+ )
+ )
)
)
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index b0128b509..71b52c753 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -9185,9 +9185,16 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $_fputs
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $_fwrite
+ (get_local $0)
+ (call $_strlen
+ (get_local $0)
+ )
+ (i32.const 1)
+ (get_local $1)
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9407,16 +9414,6 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.div_u
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $_fwrite (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(local $5 i32)
@@ -9471,9 +9468,13 @@
(get_local $4)
)
(set_local $2
- (call $i32u-div
- (get_local $0)
+ (if (result i32)
(get_local $1)
+ (i32.div_u
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.const 0)
)
)
)
@@ -9662,19 +9663,6 @@
)
)
)
- (func $_fputs (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $_fwrite
- (get_local $0)
- (call $_strlen
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $dynCall_ii (param $0 i32) (param $1 i32) (result i32)
(call_indirect $FUNCSIG$ii
(get_local $1)
diff --git a/test/emcc_O2_hello_world.fromasm.clamp b/test/emcc_O2_hello_world.fromasm.clamp
index b0128b509..71b52c753 100644
--- a/test/emcc_O2_hello_world.fromasm.clamp
+++ b/test/emcc_O2_hello_world.fromasm.clamp
@@ -9185,9 +9185,16 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $_fputs
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $_fwrite
+ (get_local $0)
+ (call $_strlen
+ (get_local $0)
+ )
+ (i32.const 1)
+ (get_local $1)
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9407,16 +9414,6 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.div_u
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $_fwrite (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(local $5 i32)
@@ -9471,9 +9468,13 @@
(get_local $4)
)
(set_local $2
- (call $i32u-div
- (get_local $0)
+ (if (result i32)
(get_local $1)
+ (i32.div_u
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.const 0)
)
)
)
@@ -9662,19 +9663,6 @@
)
)
)
- (func $_fputs (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $_fwrite
- (get_local $0)
- (call $_strlen
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $dynCall_ii (param $0 i32) (param $1 i32) (result i32)
(call_indirect $FUNCSIG$ii
(get_local $1)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise
index 824fcd3da..dd8457376 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise
+++ b/test/emcc_O2_hello_world.fromasm.imprecise
@@ -9184,9 +9184,16 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $_fputs
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $_fwrite
+ (get_local $0)
+ (call $_strlen
+ (get_local $0)
+ )
+ (i32.const 1)
+ (get_local $1)
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9651,19 +9658,6 @@
)
)
)
- (func $_fputs (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $_fwrite
- (get_local $0)
- (call $_strlen
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $dynCall_ii (param $0 i32) (param $1 i32) (result i32)
(call_indirect $FUNCSIG$ii
(get_local $1)
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index 10d0f69e9..e96288365 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -258,12 +258,6 @@
)
(get_local $0)
)
- (func $_frexpl (param $0 f64) (param $1 i32) (result f64)
- (call $_frexp
- (get_local $0)
- (get_local $1)
- )
- )
(func $_strerror (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
@@ -2219,16 +2213,6 @@
(i32.const 0)
)
)
- (func $i32s-rem (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.rem_s
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $i32u-rem (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
@@ -2268,8 +2252,8 @@
(local $20 i32)
(local $21 i32)
(local $22 i32)
- (local $23 i32)
- (local $24 f64)
+ (local $23 f64)
+ (local $24 i32)
(local $25 i32)
(local $26 i32)
(local $27 i32)
@@ -2297,7 +2281,7 @@
(local $49 i32)
(local $50 i32)
(local $51 i32)
- (set_local $26
+ (set_local $25
(get_global $STACKTOP)
)
(set_global $STACKTOP
@@ -2313,18 +2297,18 @@
)
(call $abort)
)
- (set_local $21
+ (set_local $20
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 16)
)
)
(set_local $19
- (get_local $26)
+ (get_local $25)
)
(set_local $36
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 528)
)
)
@@ -2335,11 +2319,11 @@
)
)
(set_local $39
- (tee_local $22
+ (tee_local $26
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 536)
)
)
@@ -2357,7 +2341,7 @@
(i32.add
(tee_local $41
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 8)
)
)
@@ -2368,7 +2352,7 @@
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 576)
)
)
@@ -2387,9 +2371,9 @@
(get_local $34)
)
(tee_local $37
- (tee_local $23
+ (tee_local $22
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 588)
)
)
@@ -2412,7 +2396,7 @@
(i32.add
(tee_local $48
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 24)
)
)
@@ -2422,14 +2406,14 @@
(set_local $43
(tee_local $30
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 9)
)
)
)
(set_local $35
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 8)
)
)
@@ -2909,26 +2893,24 @@
(get_local $6)
)
)
- (if
- (i32.lt_s
- (get_local $14)
- (i32.const 0)
- )
- (block
- (set_local $11
+ (set_local $11
+ (if (result i32)
+ (i32.lt_s
+ (get_local $14)
+ (i32.const 0)
+ )
+ (block (result i32)
+ (set_local $14
+ (i32.sub
+ (i32.const 0)
+ (get_local $14)
+ )
+ )
(i32.or
(get_local $1)
(i32.const 8192)
)
)
- (set_local $14
- (i32.sub
- (i32.const 0)
- (get_local $14)
- )
- )
- )
- (set_local $11
(get_local $1)
)
)
@@ -3032,8 +3014,8 @@
)
)
)
- (block $label$break$L46
- (set_local $6
+ (set_local $6
+ (block $label$break$L46 (result i32)
(if (result i32)
(i32.eq
(i32.load8_s
@@ -3082,38 +3064,39 @@
(set_local $10
(get_local $6)
)
- (set_local $6
+ (br $label$break$L46
(i32.const 0)
)
- (br $label$break$L46)
)
)
(loop $while-in11
- (set_local $6
- (i32.add
- (i32.mul
- (get_local $8)
- (i32.const 10)
- )
- (get_local $6)
- )
- )
- (br_if $label$break$L46
- (i32.ge_u
- (tee_local $9
+ (drop
+ (br_if $label$break$L46
+ (tee_local $6
(i32.add
- (i32.load8_s
- (tee_local $10
- (i32.add
- (get_local $10)
- (i32.const 1)
+ (i32.mul
+ (get_local $8)
+ (i32.const 10)
+ )
+ (get_local $6)
+ )
+ )
+ (i32.ge_u
+ (tee_local $9
+ (i32.add
+ (i32.load8_s
+ (tee_local $10
+ (i32.add
+ (get_local $10)
+ (i32.const 1)
+ )
)
)
+ (i32.const -48)
)
- (i32.const -48)
)
+ (i32.const 10)
)
- (i32.const 10)
)
)
(set_local $8
@@ -3185,12 +3168,11 @@
(i32.const 4)
)
)
- (set_local $6
+ (br $label$break$L46
(i32.load
(get_local $6)
)
)
- (br $label$break$L46)
)
)
)
@@ -3696,7 +3678,7 @@
)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(block
(set_local $5
@@ -3706,7 +3688,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in32
(i32.store8
@@ -3747,43 +3729,41 @@
)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 8)
- )
- (block
- (set_local $5
- (get_local $8)
- )
- (set_local $7
+ (set_local $5
+ (if (result i32)
+ (i32.and
(get_local $11)
+ (i32.const 8)
)
- (set_local $6
- (select
- (tee_local $11
- (i32.add
- (i32.sub
- (get_local $39)
- (get_local $8)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (set_local $6
+ (select
+ (tee_local $11
+ (i32.add
+ (i32.sub
+ (get_local $39)
+ (get_local $8)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (get_local $6)
- (i32.lt_s
(get_local $6)
- (get_local $11)
+ (i32.lt_s
+ (get_local $6)
+ (get_local $11)
+ )
)
)
- )
- )
- (block
- (set_local $5
(get_local $8)
)
- (set_local $7
- (get_local $11)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (get_local $8)
)
)
)
@@ -3840,29 +3820,27 @@
(br $__rjti$4)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 2048)
- )
- (block
- (set_local $8
- (i32.const 1)
+ (set_local $9
+ (if (result i32)
+ (i32.and
+ (get_local $11)
+ (i32.const 2048)
)
- (set_local $9
+ (block (result i32)
+ (set_local $8
+ (i32.const 1)
+ )
(i32.const 4092)
)
- )
- (block
- (set_local $8
- (tee_local $9
- (i32.and
- (get_local $11)
- (i32.const 1)
+ (block (result i32)
+ (set_local $8
+ (tee_local $9
+ (i32.and
+ (get_local $11)
+ (i32.const 1)
+ )
)
)
- )
- (set_local $9
(select
(i32.const 4093)
(i32.const 4091)
@@ -3922,7 +3900,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $5
@@ -4002,7 +3980,7 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.const 0)
)
(f64.store
@@ -4098,11 +4076,13 @@
(if
(tee_local $5
(f64.ne
- (tee_local $24
+ (tee_local $23
(f64.mul
- (call $_frexpl
+ (call $_frexp
(get_local $15)
- (get_local $21)
+ (tee_local $5
+ (get_local $20)
+ )
)
(f64.const 2)
)
@@ -4111,10 +4091,10 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -1)
)
@@ -4122,7 +4102,7 @@
)
(if
(i32.eq
- (tee_local $25
+ (tee_local $24
(i32.or
(get_local $18)
(i32.const 32)
@@ -4162,7 +4142,7 @@
)
)
)
- (get_local $24)
+ (get_local $23)
(block (result f64)
(set_local $15
(f64.const 8)
@@ -4195,7 +4175,7 @@
(get_local $15)
(f64.sub
(f64.neg
- (get_local $24)
+ (get_local $23)
)
(get_local $15)
)
@@ -4203,7 +4183,7 @@
)
(f64.sub
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
(get_local $15)
@@ -4222,7 +4202,7 @@
(i32.const 0)
(tee_local $7
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
)
@@ -4307,7 +4287,7 @@
)
)
(set_local $5
- (get_local $23)
+ (get_local $22)
)
(loop $while-in56
(i32.store8
@@ -4474,7 +4454,7 @@
)
(drop
(call $___fwritex
- (get_local $23)
+ (get_local $22)
(get_local $5)
(get_local $0)
)
@@ -4542,28 +4522,28 @@
(get_local $5)
(block (result f64)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $5
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -28)
)
)
)
(f64.mul
- (get_local $24)
+ (get_local $23)
(f64.const 268435456)
)
)
(block (result f64)
(set_local $5
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
- (get_local $24)
+ (get_local $23)
)
)
)
@@ -4615,7 +4595,7 @@
(i32.gt_s
(tee_local $9
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
(i32.const 0)
@@ -4653,28 +4633,26 @@
(loop $while-in66
(i32.store
(get_local $9)
- (tee_local $20
- (call $___uremdi3
- (tee_local $12
- (call $_i64Add
- (call $_bitshift64Shl
- (i32.load
- (get_local $9)
- )
- (i32.const 0)
- (get_local $13)
+ (call $___uremdi3
+ (tee_local $12
+ (call $_i64Add
+ (call $_bitshift64Shl
+ (i32.load
+ (get_local $9)
)
- (get_global $tempRet0)
- (get_local $12)
(i32.const 0)
+ (get_local $13)
)
- )
- (tee_local $17
(get_global $tempRet0)
+ (get_local $12)
+ (i32.const 0)
)
- (i32.const 1000000000)
- (i32.const 0)
)
+ (tee_local $17
+ (get_global $tempRet0)
+ )
+ (i32.const 1000000000)
+ (i32.const 0)
)
)
(set_local $12
@@ -4741,11 +4719,11 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.sub
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -4779,7 +4757,7 @@
(i32.const 0)
)
(block
- (set_local $20
+ (set_local $21
(i32.add
(call $i32s-div
(i32.add
@@ -4793,7 +4771,7 @@
)
(set_local $32
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -4936,7 +4914,7 @@
)
)
(i32.shl
- (get_local $20)
+ (get_local $21)
(i32.const 2)
)
)
@@ -4949,16 +4927,16 @@
)
(i32.const 2)
)
- (get_local $20)
+ (get_local $21)
)
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -4993,7 +4971,7 @@
(get_local $7)
)
)
- (set_local $20
+ (set_local $21
(get_local $8)
)
(block $do-once75
@@ -5007,7 +4985,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -5064,7 +5042,7 @@
(get_local $7)
(i32.const 0)
(i32.ne
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -5080,7 +5058,7 @@
)
(tee_local $38
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 103)
)
)
@@ -5096,7 +5074,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5121,9 +5099,15 @@
(i32.lt_s
(tee_local $6
(i32.add
- (call $i32s-rem
- (get_local $6)
- (i32.const 9)
+ (if (result i32)
+ (tee_local $12
+ (i32.const 9)
+ )
+ (i32.rem_s
+ (get_local $6)
+ (get_local $12)
+ )
+ (i32.const 0)
)
(i32.const 1)
)
@@ -5160,7 +5144,7 @@
)
(set_local $13
(call $i32u-rem
- (tee_local $25
+ (tee_local $24
(i32.load
(tee_local $6
(i32.add
@@ -5200,7 +5184,7 @@
(block
(set_local $50
(call $i32u-div
- (get_local $25)
+ (get_local $24)
(get_local $12)
)
)
@@ -5229,7 +5213,7 @@
)
)
)
- (set_local $24
+ (set_local $23
(select
(f64.const 9007199254740994)
(f64.const 9007199254740992)
@@ -5251,9 +5235,9 @@
(i32.const 45)
)
)
- (set_local $24
+ (set_local $23
(f64.neg
- (get_local $24)
+ (get_local $23)
)
)
(set_local $15
@@ -5268,7 +5252,7 @@
(get_local $6)
(tee_local $13
(i32.sub
- (get_local $25)
+ (get_local $24)
(get_local $13)
)
)
@@ -5276,10 +5260,10 @@
(br_if $do-once81
(f64.eq
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
- (get_local $24)
+ (get_local $23)
)
)
(i32.store
@@ -5344,7 +5328,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -5432,7 +5416,7 @@
(get_local $12)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 0)
)
(set_local $9
@@ -5451,7 +5435,7 @@
)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 1)
)
(set_local $9
@@ -5541,7 +5525,7 @@
)
)
(block
- (set_local $20
+ (set_local $21
(get_local $5)
)
(br $do-once91
@@ -5551,7 +5535,7 @@
)
(block $do-once93
(if
- (get_local $25)
+ (get_local $24)
(block
(if
(i32.eqz
@@ -5624,7 +5608,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5642,7 +5626,7 @@
(i32.const 102)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5669,7 +5653,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5701,7 +5685,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.and
(get_local $11)
(i32.const 8)
@@ -5720,122 +5704,120 @@
(tee_local $32
(i32.or
(get_local $5)
- (get_local $20)
+ (get_local $21)
)
)
(i32.const 0)
)
)
- (tee_local $7
- (if (result i32)
- (tee_local $17
- (i32.eq
- (i32.or
- (get_local $7)
- (i32.const 32)
- )
- (i32.const 102)
+ (if (result i32)
+ (tee_local $17
+ (i32.eq
+ (i32.or
+ (get_local $7)
+ (i32.const 32)
)
+ (i32.const 102)
)
- (block (result i32)
- (set_local $18
- (i32.const 0)
- )
- (select
+ )
+ (block (result i32)
+ (set_local $18
+ (i32.const 0)
+ )
+ (select
+ (get_local $13)
+ (i32.const 0)
+ (i32.gt_s
(get_local $13)
(i32.const 0)
- (i32.gt_s
- (get_local $13)
- (i32.const 0)
- )
)
)
- (block (result i32)
- (if
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (tee_local $6
- (call $_fmt_u
- (tee_local $6
- (select
- (get_local $33)
+ )
+ (block (result i32)
+ (if
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (tee_local $6
+ (call $_fmt_u
+ (tee_local $6
+ (select
+ (get_local $33)
+ (get_local $13)
+ (i32.lt_s
(get_local $13)
- (i32.lt_s
- (get_local $13)
- (i32.const 0)
- )
+ (i32.const 0)
)
)
- (i32.shr_s
- (i32.shl
- (i32.lt_s
- (get_local $6)
- (i32.const 0)
- )
- (i32.const 31)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.lt_s
+ (get_local $6)
+ (i32.const 0)
)
(i32.const 31)
)
- (get_local $34)
+ (i32.const 31)
)
+ (get_local $34)
)
)
- (i32.const 2)
)
- (loop $while-in98
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- )
- (i32.const 48)
- )
- (br_if $while-in98
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (get_local $6)
- )
- (i32.const 2)
+ (i32.const 2)
+ )
+ (loop $while-in98
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
)
)
+ (i32.const 48)
)
- )
- (i32.store8
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- (i32.add
- (i32.and
- (i32.shr_s
- (get_local $13)
- (i32.const 31)
+ (br_if $while-in98
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
(i32.const 2)
)
- (i32.const 43)
)
)
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -2)
+ )
+ (i32.store8
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
+ )
+ (i32.add
+ (i32.and
+ (i32.shr_s
+ (get_local $13)
+ (i32.const 31)
)
+ (i32.const 2)
)
- (get_local $7)
+ (i32.const 43)
)
- (set_local $18
- (get_local $6)
- )
- (i32.sub
- (get_local $28)
- (get_local $6)
+ )
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -2)
+ )
)
+ (get_local $7)
+ )
+ (set_local $18
+ (get_local $6)
+ )
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
)
)
@@ -5921,7 +5903,7 @@
(br_if $do-once103
(i32.le_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in106
@@ -5937,7 +5919,7 @@
(br_if $while-in106
(i32.gt_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6027,7 +6009,7 @@
(get_local $30)
)
)
- (get_local $23)
+ (get_local $22)
)
(loop $while-in112
(i32.store8
@@ -6042,7 +6024,7 @@
(br_if $while-in112
(i32.gt_u
(get_local $6)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6124,7 +6106,7 @@
(get_local $12)
(i32.const 4)
)
- (get_local $25)
+ (get_local $24)
)
)
(if
@@ -6135,7 +6117,7 @@
(block
(set_local $17
(i32.eqz
- (get_local $20)
+ (get_local $21)
)
)
(set_local $6
@@ -6227,7 +6209,7 @@
(br_if $do-once115
(i32.le_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in118
@@ -6243,7 +6225,7 @@
(br_if $while-in118
(i32.gt_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6492,7 +6474,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $9
@@ -6522,7 +6504,7 @@
)
(block
(set_local $5
- (get_local $22)
+ (get_local $26)
)
(set_local $8
(i32.const 0)
@@ -6537,7 +6519,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in123
(i32.store8
@@ -6584,49 +6566,47 @@
(get_local $8)
)
)
- (if
- (i32.or
- (i32.eqz
- (i32.and
- (get_local $7)
- (i32.const 8)
- )
- )
- (i32.and
+ (set_local $8
+ (if (result i32)
+ (i32.or
(i32.eqz
- (i32.load
- (tee_local $11
- (get_local $19)
- )
+ (i32.and
+ (get_local $7)
+ (i32.const 8)
)
)
- (i32.eqz
- (i32.load offset=4
- (get_local $11)
+ (i32.and
+ (i32.eqz
+ (i32.load
+ (tee_local $11
+ (get_local $19)
+ )
+ )
+ )
+ (i32.eqz
+ (i32.load offset=4
+ (get_local $11)
+ )
)
)
)
- )
- (block
- (set_local $8
+ (block (result i32)
+ (set_local $9
+ (i32.const 4091)
+ )
(i32.const 0)
)
- (set_local $9
- (i32.const 4091)
- )
- )
- (block
- (set_local $8
- (i32.const 2)
- )
- (set_local $9
- (i32.add
- (i32.shr_s
- (get_local $18)
- (i32.const 4)
+ (block (result i32)
+ (set_local $9
+ (i32.add
+ (i32.shr_s
+ (get_local $18)
+ (i32.const 4)
+ )
+ (i32.const 4091)
)
- (i32.const 4091)
)
+ (i32.const 2)
)
)
)
@@ -6638,7 +6618,7 @@
(call $_fmt_u
(get_local $5)
(get_local $7)
- (get_local $22)
+ (get_local $26)
)
)
(set_local $7
@@ -6896,33 +6876,33 @@
)
)
)
- (if
- (i32.or
- (get_local $6)
- (tee_local $12
- (i32.or
- (i32.ne
- (i32.load
- (tee_local $7
- (get_local $19)
+ (set_local $12
+ (if (result i32)
+ (i32.or
+ (get_local $6)
+ (tee_local $12
+ (i32.or
+ (i32.ne
+ (i32.load
+ (tee_local $7
+ (get_local $19)
+ )
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.ne
- (i32.load offset=4
- (get_local $7)
+ (i32.ne
+ (i32.load offset=4
+ (get_local $7)
+ )
+ (i32.const 0)
)
- (i32.const 0)
)
)
)
- )
- (block
- (set_local $7
- (get_local $5)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $5)
+ )
(select
(get_local $6)
(tee_local $5
@@ -6946,17 +6926,15 @@
)
)
)
- )
- (block
- (set_local $7
- (get_local $22)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $26)
+ )
(i32.const 0)
)
)
)
- (get_local $22)
+ (get_local $26)
)
)
(call $_pad
@@ -7169,7 +7147,7 @@
)
)
(set_global $STACKTOP
- (get_local $26)
+ (get_local $25)
)
(get_local $16)
)
diff --git a/test/emcc_hello_world.fromasm.clamp b/test/emcc_hello_world.fromasm.clamp
index af2b8a467..7ae8bb801 100644
--- a/test/emcc_hello_world.fromasm.clamp
+++ b/test/emcc_hello_world.fromasm.clamp
@@ -256,12 +256,6 @@
)
(get_local $0)
)
- (func $_frexpl (param $0 f64) (param $1 i32) (result f64)
- (call $_frexp
- (get_local $0)
- (get_local $1)
- )
- )
(func $_strerror (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
@@ -2243,16 +2237,6 @@
(i32.const 0)
)
)
- (func $i32s-rem (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.rem_s
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $i32u-rem (param $0 i32) (param $1 i32) (result i32)
(if (result i32)
(get_local $1)
@@ -2292,8 +2276,8 @@
(local $20 i32)
(local $21 i32)
(local $22 i32)
- (local $23 i32)
- (local $24 f64)
+ (local $23 f64)
+ (local $24 i32)
(local $25 i32)
(local $26 i32)
(local $27 i32)
@@ -2321,7 +2305,7 @@
(local $49 i32)
(local $50 i32)
(local $51 i32)
- (set_local $26
+ (set_local $25
(get_global $STACKTOP)
)
(set_global $STACKTOP
@@ -2337,18 +2321,18 @@
)
(call $abort)
)
- (set_local $21
+ (set_local $20
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 16)
)
)
(set_local $19
- (get_local $26)
+ (get_local $25)
)
(set_local $36
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 528)
)
)
@@ -2359,11 +2343,11 @@
)
)
(set_local $39
- (tee_local $22
+ (tee_local $26
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 536)
)
)
@@ -2381,7 +2365,7 @@
(i32.add
(tee_local $41
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 8)
)
)
@@ -2392,7 +2376,7 @@
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 576)
)
)
@@ -2411,9 +2395,9 @@
(get_local $34)
)
(tee_local $37
- (tee_local $23
+ (tee_local $22
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 588)
)
)
@@ -2436,7 +2420,7 @@
(i32.add
(tee_local $48
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 24)
)
)
@@ -2446,14 +2430,14 @@
(set_local $43
(tee_local $30
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 9)
)
)
)
(set_local $35
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 8)
)
)
@@ -2933,26 +2917,24 @@
(get_local $6)
)
)
- (if
- (i32.lt_s
- (get_local $14)
- (i32.const 0)
- )
- (block
- (set_local $11
+ (set_local $11
+ (if (result i32)
+ (i32.lt_s
+ (get_local $14)
+ (i32.const 0)
+ )
+ (block (result i32)
+ (set_local $14
+ (i32.sub
+ (i32.const 0)
+ (get_local $14)
+ )
+ )
(i32.or
(get_local $1)
(i32.const 8192)
)
)
- (set_local $14
- (i32.sub
- (i32.const 0)
- (get_local $14)
- )
- )
- )
- (set_local $11
(get_local $1)
)
)
@@ -3056,8 +3038,8 @@
)
)
)
- (block $label$break$L46
- (set_local $6
+ (set_local $6
+ (block $label$break$L46 (result i32)
(if (result i32)
(i32.eq
(i32.load8_s
@@ -3106,38 +3088,39 @@
(set_local $10
(get_local $6)
)
- (set_local $6
+ (br $label$break$L46
(i32.const 0)
)
- (br $label$break$L46)
)
)
(loop $while-in11
- (set_local $6
- (i32.add
- (i32.mul
- (get_local $8)
- (i32.const 10)
- )
- (get_local $6)
- )
- )
- (br_if $label$break$L46
- (i32.ge_u
- (tee_local $9
+ (drop
+ (br_if $label$break$L46
+ (tee_local $6
(i32.add
- (i32.load8_s
- (tee_local $10
- (i32.add
- (get_local $10)
- (i32.const 1)
+ (i32.mul
+ (get_local $8)
+ (i32.const 10)
+ )
+ (get_local $6)
+ )
+ )
+ (i32.ge_u
+ (tee_local $9
+ (i32.add
+ (i32.load8_s
+ (tee_local $10
+ (i32.add
+ (get_local $10)
+ (i32.const 1)
+ )
)
)
+ (i32.const -48)
)
- (i32.const -48)
)
+ (i32.const 10)
)
- (i32.const 10)
)
)
(set_local $8
@@ -3209,12 +3192,11 @@
(i32.const 4)
)
)
- (set_local $6
+ (br $label$break$L46
(i32.load
(get_local $6)
)
)
- (br $label$break$L46)
)
)
)
@@ -3720,7 +3702,7 @@
)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(block
(set_local $5
@@ -3730,7 +3712,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in32
(i32.store8
@@ -3771,43 +3753,41 @@
)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 8)
- )
- (block
- (set_local $5
- (get_local $8)
- )
- (set_local $7
+ (set_local $5
+ (if (result i32)
+ (i32.and
(get_local $11)
+ (i32.const 8)
)
- (set_local $6
- (select
- (tee_local $11
- (i32.add
- (i32.sub
- (get_local $39)
- (get_local $8)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (set_local $6
+ (select
+ (tee_local $11
+ (i32.add
+ (i32.sub
+ (get_local $39)
+ (get_local $8)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (get_local $6)
- (i32.lt_s
(get_local $6)
- (get_local $11)
+ (i32.lt_s
+ (get_local $6)
+ (get_local $11)
+ )
)
)
- )
- )
- (block
- (set_local $5
(get_local $8)
)
- (set_local $7
- (get_local $11)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (get_local $8)
)
)
)
@@ -3864,29 +3844,27 @@
(br $__rjti$4)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 2048)
- )
- (block
- (set_local $8
- (i32.const 1)
+ (set_local $9
+ (if (result i32)
+ (i32.and
+ (get_local $11)
+ (i32.const 2048)
)
- (set_local $9
+ (block (result i32)
+ (set_local $8
+ (i32.const 1)
+ )
(i32.const 4092)
)
- )
- (block
- (set_local $8
- (tee_local $9
- (i32.and
- (get_local $11)
- (i32.const 1)
+ (block (result i32)
+ (set_local $8
+ (tee_local $9
+ (i32.and
+ (get_local $11)
+ (i32.const 1)
+ )
)
)
- )
- (set_local $9
(select
(i32.const 4093)
(i32.const 4091)
@@ -3946,7 +3924,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $5
@@ -4026,7 +4004,7 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.const 0)
)
(f64.store
@@ -4122,11 +4100,13 @@
(if
(tee_local $5
(f64.ne
- (tee_local $24
+ (tee_local $23
(f64.mul
- (call $_frexpl
+ (call $_frexp
(get_local $15)
- (get_local $21)
+ (tee_local $5
+ (get_local $20)
+ )
)
(f64.const 2)
)
@@ -4135,10 +4115,10 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -1)
)
@@ -4146,7 +4126,7 @@
)
(if
(i32.eq
- (tee_local $25
+ (tee_local $24
(i32.or
(get_local $18)
(i32.const 32)
@@ -4186,7 +4166,7 @@
)
)
)
- (get_local $24)
+ (get_local $23)
(block (result f64)
(set_local $15
(f64.const 8)
@@ -4219,7 +4199,7 @@
(get_local $15)
(f64.sub
(f64.neg
- (get_local $24)
+ (get_local $23)
)
(get_local $15)
)
@@ -4227,7 +4207,7 @@
)
(f64.sub
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
(get_local $15)
@@ -4246,7 +4226,7 @@
(i32.const 0)
(tee_local $7
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
)
@@ -4331,7 +4311,7 @@
)
)
(set_local $5
- (get_local $23)
+ (get_local $22)
)
(loop $while-in56
(i32.store8
@@ -4498,7 +4478,7 @@
)
(drop
(call $___fwritex
- (get_local $23)
+ (get_local $22)
(get_local $5)
(get_local $0)
)
@@ -4566,28 +4546,28 @@
(get_local $5)
(block (result f64)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $5
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -28)
)
)
)
(f64.mul
- (get_local $24)
+ (get_local $23)
(f64.const 268435456)
)
)
(block (result f64)
(set_local $5
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
- (get_local $24)
+ (get_local $23)
)
)
)
@@ -4639,7 +4619,7 @@
(i32.gt_s
(tee_local $9
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
(i32.const 0)
@@ -4677,28 +4657,26 @@
(loop $while-in66
(i32.store
(get_local $9)
- (tee_local $20
- (call $___uremdi3
- (tee_local $12
- (call $_i64Add
- (call $_bitshift64Shl
- (i32.load
- (get_local $9)
- )
- (i32.const 0)
- (get_local $13)
+ (call $___uremdi3
+ (tee_local $12
+ (call $_i64Add
+ (call $_bitshift64Shl
+ (i32.load
+ (get_local $9)
)
- (get_global $tempRet0)
- (get_local $12)
(i32.const 0)
+ (get_local $13)
)
- )
- (tee_local $17
(get_global $tempRet0)
+ (get_local $12)
+ (i32.const 0)
)
- (i32.const 1000000000)
- (i32.const 0)
)
+ (tee_local $17
+ (get_global $tempRet0)
+ )
+ (i32.const 1000000000)
+ (i32.const 0)
)
)
(set_local $12
@@ -4765,11 +4743,11 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.sub
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -4803,7 +4781,7 @@
(i32.const 0)
)
(block
- (set_local $20
+ (set_local $21
(i32.add
(call $i32s-div
(i32.add
@@ -4817,7 +4795,7 @@
)
(set_local $32
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -4960,7 +4938,7 @@
)
)
(i32.shl
- (get_local $20)
+ (get_local $21)
(i32.const 2)
)
)
@@ -4973,16 +4951,16 @@
)
(i32.const 2)
)
- (get_local $20)
+ (get_local $21)
)
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -5017,7 +4995,7 @@
(get_local $7)
)
)
- (set_local $20
+ (set_local $21
(get_local $8)
)
(block $do-once75
@@ -5031,7 +5009,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -5088,7 +5066,7 @@
(get_local $7)
(i32.const 0)
(i32.ne
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -5104,7 +5082,7 @@
)
(tee_local $38
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 103)
)
)
@@ -5120,7 +5098,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5145,9 +5123,15 @@
(i32.lt_s
(tee_local $6
(i32.add
- (call $i32s-rem
- (get_local $6)
- (i32.const 9)
+ (if (result i32)
+ (tee_local $12
+ (i32.const 9)
+ )
+ (i32.rem_s
+ (get_local $6)
+ (get_local $12)
+ )
+ (i32.const 0)
)
(i32.const 1)
)
@@ -5184,7 +5168,7 @@
)
(set_local $13
(call $i32u-rem
- (tee_local $25
+ (tee_local $24
(i32.load
(tee_local $6
(i32.add
@@ -5224,7 +5208,7 @@
(block
(set_local $50
(call $i32u-div
- (get_local $25)
+ (get_local $24)
(get_local $12)
)
)
@@ -5253,7 +5237,7 @@
)
)
)
- (set_local $24
+ (set_local $23
(select
(f64.const 9007199254740994)
(f64.const 9007199254740992)
@@ -5275,9 +5259,9 @@
(i32.const 45)
)
)
- (set_local $24
+ (set_local $23
(f64.neg
- (get_local $24)
+ (get_local $23)
)
)
(set_local $15
@@ -5292,7 +5276,7 @@
(get_local $6)
(tee_local $13
(i32.sub
- (get_local $25)
+ (get_local $24)
(get_local $13)
)
)
@@ -5300,10 +5284,10 @@
(br_if $do-once81
(f64.eq
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
- (get_local $24)
+ (get_local $23)
)
)
(i32.store
@@ -5368,7 +5352,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -5456,7 +5440,7 @@
(get_local $12)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 0)
)
(set_local $9
@@ -5475,7 +5459,7 @@
)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 1)
)
(set_local $9
@@ -5565,7 +5549,7 @@
)
)
(block
- (set_local $20
+ (set_local $21
(get_local $5)
)
(br $do-once91
@@ -5575,7 +5559,7 @@
)
(block $do-once93
(if
- (get_local $25)
+ (get_local $24)
(block
(if
(i32.eqz
@@ -5648,7 +5632,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5666,7 +5650,7 @@
(i32.const 102)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5693,7 +5677,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5725,7 +5709,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.and
(get_local $11)
(i32.const 8)
@@ -5744,122 +5728,120 @@
(tee_local $32
(i32.or
(get_local $5)
- (get_local $20)
+ (get_local $21)
)
)
(i32.const 0)
)
)
- (tee_local $7
- (if (result i32)
- (tee_local $17
- (i32.eq
- (i32.or
- (get_local $7)
- (i32.const 32)
- )
- (i32.const 102)
+ (if (result i32)
+ (tee_local $17
+ (i32.eq
+ (i32.or
+ (get_local $7)
+ (i32.const 32)
)
+ (i32.const 102)
)
- (block (result i32)
- (set_local $18
- (i32.const 0)
- )
- (select
+ )
+ (block (result i32)
+ (set_local $18
+ (i32.const 0)
+ )
+ (select
+ (get_local $13)
+ (i32.const 0)
+ (i32.gt_s
(get_local $13)
(i32.const 0)
- (i32.gt_s
- (get_local $13)
- (i32.const 0)
- )
)
)
- (block (result i32)
- (if
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (tee_local $6
- (call $_fmt_u
- (tee_local $6
- (select
- (get_local $33)
+ )
+ (block (result i32)
+ (if
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (tee_local $6
+ (call $_fmt_u
+ (tee_local $6
+ (select
+ (get_local $33)
+ (get_local $13)
+ (i32.lt_s
(get_local $13)
- (i32.lt_s
- (get_local $13)
- (i32.const 0)
- )
+ (i32.const 0)
)
)
- (i32.shr_s
- (i32.shl
- (i32.lt_s
- (get_local $6)
- (i32.const 0)
- )
- (i32.const 31)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.lt_s
+ (get_local $6)
+ (i32.const 0)
)
(i32.const 31)
)
- (get_local $34)
+ (i32.const 31)
)
+ (get_local $34)
)
)
- (i32.const 2)
)
- (loop $while-in98
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- )
- (i32.const 48)
- )
- (br_if $while-in98
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (get_local $6)
- )
- (i32.const 2)
+ (i32.const 2)
+ )
+ (loop $while-in98
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
)
)
+ (i32.const 48)
)
- )
- (i32.store8
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- (i32.add
- (i32.and
- (i32.shr_s
- (get_local $13)
- (i32.const 31)
+ (br_if $while-in98
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
(i32.const 2)
)
- (i32.const 43)
)
)
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -2)
+ )
+ (i32.store8
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
+ )
+ (i32.add
+ (i32.and
+ (i32.shr_s
+ (get_local $13)
+ (i32.const 31)
)
+ (i32.const 2)
)
- (get_local $7)
+ (i32.const 43)
)
- (set_local $18
- (get_local $6)
- )
- (i32.sub
- (get_local $28)
- (get_local $6)
+ )
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -2)
+ )
)
+ (get_local $7)
+ )
+ (set_local $18
+ (get_local $6)
+ )
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
)
)
@@ -5945,7 +5927,7 @@
(br_if $do-once103
(i32.le_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in106
@@ -5961,7 +5943,7 @@
(br_if $while-in106
(i32.gt_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6051,7 +6033,7 @@
(get_local $30)
)
)
- (get_local $23)
+ (get_local $22)
)
(loop $while-in112
(i32.store8
@@ -6066,7 +6048,7 @@
(br_if $while-in112
(i32.gt_u
(get_local $6)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6148,7 +6130,7 @@
(get_local $12)
(i32.const 4)
)
- (get_local $25)
+ (get_local $24)
)
)
(if
@@ -6159,7 +6141,7 @@
(block
(set_local $17
(i32.eqz
- (get_local $20)
+ (get_local $21)
)
)
(set_local $6
@@ -6251,7 +6233,7 @@
(br_if $do-once115
(i32.le_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in118
@@ -6267,7 +6249,7 @@
(br_if $while-in118
(i32.gt_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6516,7 +6498,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $9
@@ -6546,7 +6528,7 @@
)
(block
(set_local $5
- (get_local $22)
+ (get_local $26)
)
(set_local $8
(i32.const 0)
@@ -6561,7 +6543,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in123
(i32.store8
@@ -6608,49 +6590,47 @@
(get_local $8)
)
)
- (if
- (i32.or
- (i32.eqz
- (i32.and
- (get_local $7)
- (i32.const 8)
- )
- )
- (i32.and
+ (set_local $8
+ (if (result i32)
+ (i32.or
(i32.eqz
- (i32.load
- (tee_local $11
- (get_local $19)
- )
+ (i32.and
+ (get_local $7)
+ (i32.const 8)
)
)
- (i32.eqz
- (i32.load offset=4
- (get_local $11)
+ (i32.and
+ (i32.eqz
+ (i32.load
+ (tee_local $11
+ (get_local $19)
+ )
+ )
+ )
+ (i32.eqz
+ (i32.load offset=4
+ (get_local $11)
+ )
)
)
)
- )
- (block
- (set_local $8
+ (block (result i32)
+ (set_local $9
+ (i32.const 4091)
+ )
(i32.const 0)
)
- (set_local $9
- (i32.const 4091)
- )
- )
- (block
- (set_local $8
- (i32.const 2)
- )
- (set_local $9
- (i32.add
- (i32.shr_s
- (get_local $18)
- (i32.const 4)
+ (block (result i32)
+ (set_local $9
+ (i32.add
+ (i32.shr_s
+ (get_local $18)
+ (i32.const 4)
+ )
+ (i32.const 4091)
)
- (i32.const 4091)
)
+ (i32.const 2)
)
)
)
@@ -6662,7 +6642,7 @@
(call $_fmt_u
(get_local $5)
(get_local $7)
- (get_local $22)
+ (get_local $26)
)
)
(set_local $7
@@ -6920,33 +6900,33 @@
)
)
)
- (if
- (i32.or
- (get_local $6)
- (tee_local $12
- (i32.or
- (i32.ne
- (i32.load
- (tee_local $7
- (get_local $19)
+ (set_local $12
+ (if (result i32)
+ (i32.or
+ (get_local $6)
+ (tee_local $12
+ (i32.or
+ (i32.ne
+ (i32.load
+ (tee_local $7
+ (get_local $19)
+ )
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.ne
- (i32.load offset=4
- (get_local $7)
+ (i32.ne
+ (i32.load offset=4
+ (get_local $7)
+ )
+ (i32.const 0)
)
- (i32.const 0)
)
)
)
- )
- (block
- (set_local $7
- (get_local $5)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $5)
+ )
(select
(get_local $6)
(tee_local $5
@@ -6970,17 +6950,15 @@
)
)
)
- )
- (block
- (set_local $7
- (get_local $22)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $26)
+ )
(i32.const 0)
)
)
)
- (get_local $22)
+ (get_local $26)
)
)
(call $_pad
@@ -7193,7 +7171,7 @@
)
)
(set_global $STACKTOP
- (get_local $26)
+ (get_local $25)
)
(get_local $16)
)
diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise
index 96344b09d..e6caa9b58 100644
--- a/test/emcc_hello_world.fromasm.imprecise
+++ b/test/emcc_hello_world.fromasm.imprecise
@@ -255,12 +255,6 @@
)
(get_local $0)
)
- (func $_frexpl (param $0 f64) (param $1 i32) (result f64)
- (call $_frexp
- (get_local $0)
- (get_local $1)
- )
- )
(func $_strerror (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
@@ -2212,8 +2206,8 @@
(local $20 i32)
(local $21 i32)
(local $22 i32)
- (local $23 i32)
- (local $24 f64)
+ (local $23 f64)
+ (local $24 i32)
(local $25 i32)
(local $26 i32)
(local $27 i32)
@@ -2240,7 +2234,7 @@
(local $48 i32)
(local $49 i32)
(local $50 i32)
- (set_local $26
+ (set_local $25
(get_global $STACKTOP)
)
(set_global $STACKTOP
@@ -2256,18 +2250,18 @@
)
(call $abort)
)
- (set_local $21
+ (set_local $20
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 16)
)
)
(set_local $19
- (get_local $26)
+ (get_local $25)
)
(set_local $36
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 528)
)
)
@@ -2278,11 +2272,11 @@
)
)
(set_local $39
- (tee_local $22
+ (tee_local $26
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 536)
)
)
@@ -2300,7 +2294,7 @@
(i32.add
(tee_local $41
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 8)
)
)
@@ -2311,7 +2305,7 @@
(i32.add
(tee_local $5
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 576)
)
)
@@ -2330,9 +2324,9 @@
(get_local $34)
)
(tee_local $37
- (tee_local $23
+ (tee_local $22
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 588)
)
)
@@ -2355,7 +2349,7 @@
(i32.add
(tee_local $48
(i32.add
- (get_local $26)
+ (get_local $25)
(i32.const 24)
)
)
@@ -2365,14 +2359,14 @@
(set_local $43
(tee_local $30
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 9)
)
)
)
(set_local $35
(i32.add
- (get_local $23)
+ (get_local $22)
(i32.const 8)
)
)
@@ -2854,26 +2848,24 @@
(get_local $6)
)
)
- (if
- (i32.lt_s
- (get_local $14)
- (i32.const 0)
- )
- (block
- (set_local $11
+ (set_local $11
+ (if (result i32)
+ (i32.lt_s
+ (get_local $14)
+ (i32.const 0)
+ )
+ (block (result i32)
+ (set_local $14
+ (i32.sub
+ (i32.const 0)
+ (get_local $14)
+ )
+ )
(i32.or
(get_local $1)
(i32.const 8192)
)
)
- (set_local $14
- (i32.sub
- (i32.const 0)
- (get_local $14)
- )
- )
- )
- (set_local $11
(get_local $1)
)
)
@@ -2977,8 +2969,8 @@
)
)
)
- (block $label$break$L46
- (set_local $6
+ (set_local $6
+ (block $label$break$L46 (result i32)
(if (result i32)
(i32.eq
(i32.load8_s
@@ -3027,38 +3019,39 @@
(set_local $10
(get_local $6)
)
- (set_local $6
+ (br $label$break$L46
(i32.const 0)
)
- (br $label$break$L46)
)
)
(loop $while-in11
- (set_local $6
- (i32.add
- (i32.mul
- (get_local $8)
- (i32.const 10)
- )
- (get_local $6)
- )
- )
- (br_if $label$break$L46
- (i32.ge_u
- (tee_local $9
+ (drop
+ (br_if $label$break$L46
+ (tee_local $6
(i32.add
- (i32.load8_s
- (tee_local $10
- (i32.add
- (get_local $10)
- (i32.const 1)
+ (i32.mul
+ (get_local $8)
+ (i32.const 10)
+ )
+ (get_local $6)
+ )
+ )
+ (i32.ge_u
+ (tee_local $9
+ (i32.add
+ (i32.load8_s
+ (tee_local $10
+ (i32.add
+ (get_local $10)
+ (i32.const 1)
+ )
)
)
+ (i32.const -48)
)
- (i32.const -48)
)
+ (i32.const 10)
)
- (i32.const 10)
)
)
(set_local $8
@@ -3130,12 +3123,11 @@
(i32.const 4)
)
)
- (set_local $6
+ (br $label$break$L46
(i32.load
(get_local $6)
)
)
- (br $label$break$L46)
)
)
)
@@ -3641,7 +3633,7 @@
)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(block
(set_local $5
@@ -3651,7 +3643,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in32
(i32.store8
@@ -3692,43 +3684,41 @@
)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 8)
- )
- (block
- (set_local $5
- (get_local $8)
- )
- (set_local $7
+ (set_local $5
+ (if (result i32)
+ (i32.and
(get_local $11)
+ (i32.const 8)
)
- (set_local $6
- (select
- (tee_local $11
- (i32.add
- (i32.sub
- (get_local $39)
- (get_local $8)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (set_local $6
+ (select
+ (tee_local $11
+ (i32.add
+ (i32.sub
+ (get_local $39)
+ (get_local $8)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (get_local $6)
- (i32.lt_s
(get_local $6)
- (get_local $11)
+ (i32.lt_s
+ (get_local $6)
+ (get_local $11)
+ )
)
)
- )
- )
- (block
- (set_local $5
(get_local $8)
)
- (set_local $7
- (get_local $11)
+ (block (result i32)
+ (set_local $7
+ (get_local $11)
+ )
+ (get_local $8)
)
)
)
@@ -3785,29 +3775,27 @@
(br $__rjti$4)
)
)
- (if
- (i32.and
- (get_local $11)
- (i32.const 2048)
- )
- (block
- (set_local $8
- (i32.const 1)
+ (set_local $9
+ (if (result i32)
+ (i32.and
+ (get_local $11)
+ (i32.const 2048)
)
- (set_local $9
+ (block (result i32)
+ (set_local $8
+ (i32.const 1)
+ )
(i32.const 4092)
)
- )
- (block
- (set_local $8
- (tee_local $9
- (i32.and
- (get_local $11)
- (i32.const 1)
+ (block (result i32)
+ (set_local $8
+ (tee_local $9
+ (i32.and
+ (get_local $11)
+ (i32.const 1)
+ )
)
)
- )
- (set_local $9
(select
(i32.const 4093)
(i32.const 4091)
@@ -3867,7 +3855,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $5
@@ -3947,7 +3935,7 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.const 0)
)
(f64.store
@@ -4033,11 +4021,13 @@
(if
(tee_local $5
(f64.ne
- (tee_local $24
+ (tee_local $23
(f64.mul
- (call $_frexpl
+ (call $_frexp
(get_local $15)
- (get_local $21)
+ (tee_local $5
+ (get_local $20)
+ )
)
(f64.const 2)
)
@@ -4046,10 +4036,10 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -1)
)
@@ -4057,7 +4047,7 @@
)
(if
(i32.eq
- (tee_local $25
+ (tee_local $24
(i32.or
(get_local $18)
(i32.const 32)
@@ -4097,7 +4087,7 @@
)
)
)
- (get_local $24)
+ (get_local $23)
(block (result f64)
(set_local $15
(f64.const 8)
@@ -4124,7 +4114,7 @@
(get_local $15)
(f64.sub
(f64.neg
- (get_local $24)
+ (get_local $23)
)
(get_local $15)
)
@@ -4132,7 +4122,7 @@
)
(f64.sub
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
(get_local $15)
@@ -4157,7 +4147,7 @@
(i32.const 0)
(tee_local $7
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
)
@@ -4242,7 +4232,7 @@
)
)
(set_local $5
- (get_local $23)
+ (get_local $22)
)
(loop $while-in56
(i32.store8
@@ -4409,7 +4399,7 @@
)
(drop
(call $___fwritex
- (get_local $23)
+ (get_local $22)
(get_local $5)
(get_local $0)
)
@@ -4477,28 +4467,28 @@
(get_local $5)
(block (result f64)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $5
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(i32.const -28)
)
)
)
(f64.mul
- (get_local $24)
+ (get_local $23)
(f64.const 268435456)
)
)
(block (result f64)
(set_local $5
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
- (get_local $24)
+ (get_local $23)
)
)
)
@@ -4550,7 +4540,7 @@
(i32.gt_s
(tee_local $9
(i32.load
- (get_local $21)
+ (get_local $20)
)
)
(i32.const 0)
@@ -4588,28 +4578,26 @@
(loop $while-in66
(i32.store
(get_local $9)
- (tee_local $20
- (call $___uremdi3
- (tee_local $12
- (call $_i64Add
- (call $_bitshift64Shl
- (i32.load
- (get_local $9)
- )
- (i32.const 0)
- (get_local $13)
+ (call $___uremdi3
+ (tee_local $12
+ (call $_i64Add
+ (call $_bitshift64Shl
+ (i32.load
+ (get_local $9)
)
- (get_global $tempRet0)
- (get_local $12)
(i32.const 0)
+ (get_local $13)
)
- )
- (tee_local $17
(get_global $tempRet0)
+ (get_local $12)
+ (i32.const 0)
)
- (i32.const 1000000000)
- (i32.const 0)
)
+ (tee_local $17
+ (get_global $tempRet0)
+ )
+ (i32.const 1000000000)
+ (i32.const 0)
)
)
(set_local $12
@@ -4676,11 +4664,11 @@
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.sub
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -4714,7 +4702,7 @@
(i32.const 0)
)
(block
- (set_local $20
+ (set_local $21
(i32.add
(i32.div_s
(i32.add
@@ -4728,7 +4716,7 @@
)
(set_local $32
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -4871,7 +4859,7 @@
)
)
(i32.shl
- (get_local $20)
+ (get_local $21)
(i32.const 2)
)
)
@@ -4884,16 +4872,16 @@
)
(i32.const 2)
)
- (get_local $20)
+ (get_local $21)
)
)
)
(i32.store
- (get_local $21)
+ (get_local $20)
(tee_local $9
(i32.add
(i32.load
- (get_local $21)
+ (get_local $20)
)
(get_local $13)
)
@@ -4928,7 +4916,7 @@
(get_local $7)
)
)
- (set_local $20
+ (set_local $21
(get_local $8)
)
(block $do-once75
@@ -4942,7 +4930,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -4999,7 +4987,7 @@
(get_local $7)
(i32.const 0)
(i32.ne
- (get_local $25)
+ (get_local $24)
(i32.const 102)
)
)
@@ -5015,7 +5003,7 @@
)
(tee_local $38
(i32.eq
- (get_local $25)
+ (get_local $24)
(i32.const 103)
)
)
@@ -5031,7 +5019,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5089,7 +5077,7 @@
)
(set_local $13
(i32.rem_u
- (tee_local $25
+ (tee_local $24
(i32.load
(tee_local $6
(i32.add
@@ -5155,13 +5143,13 @@
)
)
)
- (set_local $24
+ (set_local $23
(select
(f64.const 9007199254740994)
(f64.const 9007199254740992)
(i32.and
(i32.div_u
- (get_local $25)
+ (get_local $24)
(get_local $12)
)
(i32.const 1)
@@ -5180,9 +5168,9 @@
(i32.const 45)
)
)
- (set_local $24
+ (set_local $23
(f64.neg
- (get_local $24)
+ (get_local $23)
)
)
(set_local $15
@@ -5197,7 +5185,7 @@
(get_local $6)
(tee_local $13
(i32.sub
- (get_local $25)
+ (get_local $24)
(get_local $13)
)
)
@@ -5205,10 +5193,10 @@
(br_if $do-once81
(f64.eq
(f64.add
- (get_local $24)
+ (get_local $23)
(get_local $15)
)
- (get_local $24)
+ (get_local $23)
)
)
(i32.store
@@ -5273,7 +5261,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (get_local $20)
+ (get_local $21)
(get_local $5)
)
(i32.const 2)
@@ -5361,7 +5349,7 @@
(get_local $12)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 0)
)
(set_local $9
@@ -5380,7 +5368,7 @@
)
)
(block
- (set_local $25
+ (set_local $24
(i32.const 1)
)
(set_local $9
@@ -5470,7 +5458,7 @@
)
)
(block
- (set_local $20
+ (set_local $21
(get_local $5)
)
(br $do-once91
@@ -5480,7 +5468,7 @@
)
(block $do-once93
(if
- (get_local $25)
+ (get_local $24)
(block
(if
(i32.eqz
@@ -5553,7 +5541,7 @@
(i32.shr_s
(i32.sub
(get_local $9)
- (get_local $20)
+ (get_local $21)
)
(i32.const 2)
)
@@ -5571,7 +5559,7 @@
(i32.const 102)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5598,7 +5586,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.const 0)
)
(select
@@ -5630,7 +5618,7 @@
)
)
(block (result i32)
- (set_local $20
+ (set_local $21
(i32.and
(get_local $11)
(i32.const 8)
@@ -5649,122 +5637,120 @@
(tee_local $32
(i32.or
(get_local $5)
- (get_local $20)
+ (get_local $21)
)
)
(i32.const 0)
)
)
- (tee_local $7
- (if (result i32)
- (tee_local $17
- (i32.eq
- (i32.or
- (get_local $7)
- (i32.const 32)
- )
- (i32.const 102)
+ (if (result i32)
+ (tee_local $17
+ (i32.eq
+ (i32.or
+ (get_local $7)
+ (i32.const 32)
)
+ (i32.const 102)
)
- (block (result i32)
- (set_local $18
- (i32.const 0)
- )
- (select
+ )
+ (block (result i32)
+ (set_local $18
+ (i32.const 0)
+ )
+ (select
+ (get_local $13)
+ (i32.const 0)
+ (i32.gt_s
(get_local $13)
(i32.const 0)
- (i32.gt_s
- (get_local $13)
- (i32.const 0)
- )
)
)
- (block (result i32)
- (if
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (tee_local $6
- (call $_fmt_u
- (tee_local $6
- (select
- (get_local $33)
+ )
+ (block (result i32)
+ (if
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (tee_local $6
+ (call $_fmt_u
+ (tee_local $6
+ (select
+ (get_local $33)
+ (get_local $13)
+ (i32.lt_s
(get_local $13)
- (i32.lt_s
- (get_local $13)
- (i32.const 0)
- )
+ (i32.const 0)
)
)
- (i32.shr_s
- (i32.shl
- (i32.lt_s
- (get_local $6)
- (i32.const 0)
- )
- (i32.const 31)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.lt_s
+ (get_local $6)
+ (i32.const 0)
)
(i32.const 31)
)
- (get_local $34)
+ (i32.const 31)
)
+ (get_local $34)
)
)
- (i32.const 2)
)
- (loop $while-in98
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- )
- (i32.const 48)
- )
- (br_if $while-in98
- (i32.lt_s
- (i32.sub
- (get_local $28)
- (get_local $6)
- )
- (i32.const 2)
+ (i32.const 2)
+ )
+ (loop $while-in98
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
)
)
+ (i32.const 48)
)
- )
- (i32.store8
- (i32.add
- (get_local $6)
- (i32.const -1)
- )
- (i32.add
- (i32.and
- (i32.shr_s
- (get_local $13)
- (i32.const 31)
+ (br_if $while-in98
+ (i32.lt_s
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
(i32.const 2)
)
- (i32.const 43)
)
)
- (i32.store8
- (tee_local $6
- (i32.add
- (get_local $6)
- (i32.const -2)
+ )
+ (i32.store8
+ (i32.add
+ (get_local $6)
+ (i32.const -1)
+ )
+ (i32.add
+ (i32.and
+ (i32.shr_s
+ (get_local $13)
+ (i32.const 31)
)
+ (i32.const 2)
)
- (get_local $7)
+ (i32.const 43)
)
- (set_local $18
- (get_local $6)
- )
- (i32.sub
- (get_local $28)
- (get_local $6)
+ )
+ (i32.store8
+ (tee_local $6
+ (i32.add
+ (get_local $6)
+ (i32.const -2)
+ )
)
+ (get_local $7)
+ )
+ (set_local $18
+ (get_local $6)
+ )
+ (i32.sub
+ (get_local $28)
+ (get_local $6)
)
)
)
@@ -5850,7 +5836,7 @@
(br_if $do-once103
(i32.le_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in106
@@ -5866,7 +5852,7 @@
(br_if $while-in106
(i32.gt_u
(get_local $7)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -5956,7 +5942,7 @@
(get_local $30)
)
)
- (get_local $23)
+ (get_local $22)
)
(loop $while-in112
(i32.store8
@@ -5971,7 +5957,7 @@
(br_if $while-in112
(i32.gt_u
(get_local $6)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6053,7 +6039,7 @@
(get_local $12)
(i32.const 4)
)
- (get_local $25)
+ (get_local $24)
)
)
(if
@@ -6064,7 +6050,7 @@
(block
(set_local $17
(i32.eqz
- (get_local $20)
+ (get_local $21)
)
)
(set_local $6
@@ -6156,7 +6142,7 @@
(br_if $do-once115
(i32.le_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
(loop $while-in118
@@ -6172,7 +6158,7 @@
(br_if $while-in118
(i32.gt_u
(get_local $5)
- (get_local $23)
+ (get_local $22)
)
)
)
@@ -6421,7 +6407,7 @@
(i32.const 4091)
)
(br $__rjto$8
- (get_local $22)
+ (get_local $26)
)
)
(set_local $9
@@ -6451,7 +6437,7 @@
)
(block
(set_local $5
- (get_local $22)
+ (get_local $26)
)
(set_local $8
(i32.const 0)
@@ -6466,7 +6452,7 @@
(get_local $8)
)
(set_local $8
- (get_local $22)
+ (get_local $26)
)
(loop $while-in123
(i32.store8
@@ -6513,49 +6499,47 @@
(get_local $8)
)
)
- (if
- (i32.or
- (i32.eqz
- (i32.and
- (get_local $7)
- (i32.const 8)
- )
- )
- (i32.and
+ (set_local $8
+ (if (result i32)
+ (i32.or
(i32.eqz
- (i32.load
- (tee_local $11
- (get_local $19)
- )
+ (i32.and
+ (get_local $7)
+ (i32.const 8)
)
)
- (i32.eqz
- (i32.load offset=4
- (get_local $11)
+ (i32.and
+ (i32.eqz
+ (i32.load
+ (tee_local $11
+ (get_local $19)
+ )
+ )
+ )
+ (i32.eqz
+ (i32.load offset=4
+ (get_local $11)
+ )
)
)
)
- )
- (block
- (set_local $8
+ (block (result i32)
+ (set_local $9
+ (i32.const 4091)
+ )
(i32.const 0)
)
- (set_local $9
- (i32.const 4091)
- )
- )
- (block
- (set_local $8
- (i32.const 2)
- )
- (set_local $9
- (i32.add
- (i32.shr_s
- (get_local $18)
- (i32.const 4)
+ (block (result i32)
+ (set_local $9
+ (i32.add
+ (i32.shr_s
+ (get_local $18)
+ (i32.const 4)
+ )
+ (i32.const 4091)
)
- (i32.const 4091)
)
+ (i32.const 2)
)
)
)
@@ -6567,7 +6551,7 @@
(call $_fmt_u
(get_local $5)
(get_local $7)
- (get_local $22)
+ (get_local $26)
)
)
(set_local $7
@@ -6825,33 +6809,33 @@
)
)
)
- (if
- (i32.or
- (get_local $6)
- (tee_local $12
- (i32.or
- (i32.ne
- (i32.load
- (tee_local $7
- (get_local $19)
+ (set_local $12
+ (if (result i32)
+ (i32.or
+ (get_local $6)
+ (tee_local $12
+ (i32.or
+ (i32.ne
+ (i32.load
+ (tee_local $7
+ (get_local $19)
+ )
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.ne
- (i32.load offset=4
- (get_local $7)
+ (i32.ne
+ (i32.load offset=4
+ (get_local $7)
+ )
+ (i32.const 0)
)
- (i32.const 0)
)
)
)
- )
- (block
- (set_local $7
- (get_local $5)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $5)
+ )
(select
(get_local $6)
(tee_local $5
@@ -6875,17 +6859,15 @@
)
)
)
- )
- (block
- (set_local $7
- (get_local $22)
- )
- (set_local $12
+ (block (result i32)
+ (set_local $7
+ (get_local $26)
+ )
(i32.const 0)
)
)
)
- (get_local $22)
+ (get_local $26)
)
)
(call $_pad
@@ -7098,7 +7080,7 @@
)
)
(set_global $STACKTOP
- (get_local $26)
+ (get_local $25)
)
(get_local $16)
)
diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm
index 71c095deb..5f90519f0 100644
--- a/test/memorygrowth.fromasm
+++ b/test/memorygrowth.fromasm
@@ -9220,7 +9220,7 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (set_local $2
+ (set_local $3
(if (result i32)
(i32.gt_s
(i32.load offset=76
@@ -9242,9 +9242,18 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $cb
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $bb
+ (get_local $0)
+ (call $Za
+ (get_local $0)
+ )
+ (i32.const 1)
+ (tee_local $2
+ (get_local $1)
+ )
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9261,7 +9270,7 @@
(i32.lt_u
(tee_local $0
(i32.load
- (tee_local $3
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 20)
@@ -9275,7 +9284,7 @@
)
(block
(i32.store
- (get_local $3)
+ (get_local $2)
(i32.add
(get_local $0)
(i32.const 1)
@@ -9303,7 +9312,7 @@
)
)
(if
- (get_local $2)
+ (get_local $3)
(call $Ta
(get_local $1)
)
@@ -9394,16 +9403,6 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.div_u
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $bb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(local $5 i32)
@@ -9458,9 +9457,13 @@
(get_local $4)
)
(set_local $2
- (call $i32u-div
- (get_local $0)
+ (if (result i32)
(get_local $1)
+ (i32.div_u
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.const 0)
)
)
)
@@ -9704,19 +9707,6 @@
)
(get_local $1)
)
- (func $cb (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $bb
- (get_local $0)
- (call $Za
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $ob (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $ja
(i32.const 1)
diff --git a/test/memorygrowth.fromasm.clamp b/test/memorygrowth.fromasm.clamp
index 71c095deb..5f90519f0 100644
--- a/test/memorygrowth.fromasm.clamp
+++ b/test/memorygrowth.fromasm.clamp
@@ -9220,7 +9220,7 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (set_local $2
+ (set_local $3
(if (result i32)
(i32.gt_s
(i32.load offset=76
@@ -9242,9 +9242,18 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $cb
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $bb
+ (get_local $0)
+ (call $Za
+ (get_local $0)
+ )
+ (i32.const 1)
+ (tee_local $2
+ (get_local $1)
+ )
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9261,7 +9270,7 @@
(i32.lt_u
(tee_local $0
(i32.load
- (tee_local $3
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 20)
@@ -9275,7 +9284,7 @@
)
(block
(i32.store
- (get_local $3)
+ (get_local $2)
(i32.add
(get_local $0)
(i32.const 1)
@@ -9303,7 +9312,7 @@
)
)
(if
- (get_local $2)
+ (get_local $3)
(call $Ta
(get_local $1)
)
@@ -9394,16 +9403,6 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (get_local $1)
- (i32.div_u
- (get_local $0)
- (get_local $1)
- )
- (i32.const 0)
- )
- )
(func $bb (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32)
(local $4 i32)
(local $5 i32)
@@ -9458,9 +9457,13 @@
(get_local $4)
)
(set_local $2
- (call $i32u-div
- (get_local $0)
+ (if (result i32)
(get_local $1)
+ (i32.div_u
+ (get_local $0)
+ (get_local $1)
+ )
+ (i32.const 0)
)
)
)
@@ -9704,19 +9707,6 @@
)
(get_local $1)
)
- (func $cb (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $bb
- (get_local $0)
- (call $Za
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $ob (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $ja
(i32.const 1)
diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise
index 38e3724a5..be7c35289 100644
--- a/test/memorygrowth.fromasm.imprecise
+++ b/test/memorygrowth.fromasm.imprecise
@@ -9219,7 +9219,7 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (set_local $2
+ (set_local $3
(if (result i32)
(i32.gt_s
(i32.load offset=76
@@ -9241,9 +9241,18 @@
(block $do-once (result i32)
(if (result i32)
(i32.lt_s
- (call $cb
- (get_local $0)
- (get_local $1)
+ (i32.add
+ (call $bb
+ (get_local $0)
+ (call $Za
+ (get_local $0)
+ )
+ (i32.const 1)
+ (tee_local $2
+ (get_local $1)
+ )
+ )
+ (i32.const -1)
)
(i32.const 0)
)
@@ -9260,7 +9269,7 @@
(i32.lt_u
(tee_local $0
(i32.load
- (tee_local $3
+ (tee_local $2
(i32.add
(get_local $1)
(i32.const 20)
@@ -9274,7 +9283,7 @@
)
(block
(i32.store
- (get_local $3)
+ (get_local $2)
(i32.add
(get_local $0)
(i32.const 1)
@@ -9302,7 +9311,7 @@
)
)
(if
- (get_local $2)
+ (get_local $3)
(call $Ta
(get_local $1)
)
@@ -9693,19 +9702,6 @@
)
(get_local $1)
)
- (func $cb (param $0 i32) (param $1 i32) (result i32)
- (i32.add
- (call $bb
- (get_local $0)
- (call $Za
- (get_local $0)
- )
- (i32.const 1)
- (get_local $1)
- )
- (i32.const -1)
- )
- )
(func $ob (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(call $ja
(i32.const 1)
diff --git a/test/passes/inlining-optimizing.txt b/test/passes/inlining-optimizing.txt
new file mode 100644
index 000000000..e1f81e54f
--- /dev/null
+++ b/test/passes/inlining-optimizing.txt
@@ -0,0 +1,35 @@
+(module
+ (type $0 (func))
+ (type $1 (func (result i32)))
+ (type $2 (func (result f64)))
+ (type $3 (func (param f32 i64)))
+ (table 1 1 anyfunc)
+ (elem (i32.const 0) $tabled)
+ (memory $0 0)
+ (export "user" (func $user))
+ (export "exported" (func $exported))
+ (func $user (type $0)
+ (call $exported)
+ (call $tabled)
+ (call $multi)
+ (call $multi)
+ )
+ (func $exported (type $0)
+ (nop)
+ )
+ (func $recursive (type $0)
+ (call $recursive)
+ )
+ (func $tabled (type $0)
+ (nop)
+ )
+ (func $cycle1 (type $0)
+ (call $cycle2)
+ )
+ (func $cycle2 (type $0)
+ (call $cycle1)
+ )
+ (func $multi (type $0)
+ (nop)
+ )
+)
diff --git a/test/passes/inlining-optimizing.wast b/test/passes/inlining-optimizing.wast
new file mode 100644
index 000000000..082c4e98a
--- /dev/null
+++ b/test/passes/inlining-optimizing.wast
@@ -0,0 +1,79 @@
+(module
+ (table 1 1 anyfunc)
+ (elem (i32.const 0) $tabled)
+ (func $user (export "user")
+ (local $x i32)
+ (local $y f64)
+ (call $exported)
+ (call $tabled)
+ (call $multi)
+ (call $multi)
+ (call $ok)
+ (drop (call $int))
+ (drop (call $double))
+ (set_local $x (call $int2))
+ (set_local $y (call $double2))
+ (call $with-local)
+ (call $with-local2)
+ (drop (call $return))
+ (call $multipass)
+ (call $param (f32.const 12.34) (i64.const 890005350012))
+ )
+ (func $exported (export "exported")
+ (nop)
+ )
+ (func $recursive
+ (call $recursive)
+ )
+ (func $tabled
+ (nop)
+ )
+ (func $cycle1
+ (call $cycle2)
+ )
+ (func $cycle2
+ (call $cycle1)
+ )
+ (func $multi
+ (nop)
+ )
+ (func $ok
+ (drop (i32.const 1))
+ )
+ (func $int (result i32)
+ (i32.const 2)
+ )
+ (func $double (result f64)
+ (f64.const 3.14159)
+ )
+ (func $int2 (result i32)
+ (i32.const 112)
+ )
+ (func $double2 (result f64)
+ (f64.const 113.14159)
+ )
+ (func $with-local
+ (local $x f32)
+ (set_local $x (f32.const 2.141828))
+ )
+ (func $with-local2
+ (local $y i64)
+ (set_local $y (i64.const 4))
+ )
+ (func $return (result i32)
+ (return (i32.const 5))
+ )
+ (func $multipass
+ (call $multipass2)
+ )
+ (func $multipass2
+ (drop (i32.const 6))
+ )
+ (func $param (param $x f32) (param $y i64)
+ (local $z f32)
+ (drop (get_local $x))
+ (drop (get_local $y))
+ (drop (get_local $z))
+ )
+)
+
diff --git a/test/passes/inlining.txt b/test/passes/inlining.txt
index 80ee3acf3..99f764351 100644
--- a/test/passes/inlining.txt
+++ b/test/passes/inlining.txt
@@ -20,71 +20,93 @@
(call $tabled)
(call $multi)
(call $multi)
- (block $__inlined_func$ok
- (drop
- (i32.const 1)
+ (block
+ (block $__inlined_func$ok
+ (drop
+ (i32.const 1)
+ )
)
)
(drop
- (block $__inlined_func$int (result i32)
- (i32.const 2)
+ (block (result i32)
+ (block $__inlined_func$int (result i32)
+ (i32.const 2)
+ )
)
)
(drop
- (block $__inlined_func$double (result f64)
- (f64.const 3.14159)
+ (block (result f64)
+ (block $__inlined_func$double (result f64)
+ (f64.const 3.14159)
+ )
)
)
(set_local $x
- (block $__inlined_func$int2 (result i32)
- (i32.const 112)
+ (block (result i32)
+ (block $__inlined_func$int2 (result i32)
+ (i32.const 112)
+ )
)
)
(set_local $y
- (block $__inlined_func$double2 (result f64)
- (f64.const 113.14159)
+ (block (result f64)
+ (block $__inlined_func$double2 (result f64)
+ (f64.const 113.14159)
+ )
)
)
- (block $__inlined_func$with-local
- (set_local $2
- (f32.const 2.1418280601501465)
+ (block
+ (block $__inlined_func$with-local
+ (set_local $2
+ (f32.const 2.1418280601501465)
+ )
)
)
- (block $__inlined_func$with-local2
- (set_local $3
- (i64.const 4)
+ (block
+ (block $__inlined_func$with-local2
+ (set_local $3
+ (i64.const 4)
+ )
)
)
(drop
- (block $__inlined_func$return (result i32)
- (br $__inlined_func$return
- (i32.const 5)
+ (block (result i32)
+ (block $__inlined_func$return (result i32)
+ (br $__inlined_func$return
+ (i32.const 5)
+ )
)
)
)
- (block $__inlined_func$multipass
- (block $__inlined_func$multipass2
- (drop
- (i32.const 6)
+ (block
+ (block $__inlined_func$multipass
+ (block
+ (block $__inlined_func$multipass2
+ (drop
+ (i32.const 6)
+ )
+ )
)
)
)
- (block $__inlined_func$param
- (set_local $4
- (f32.const 12.34000015258789)
- )
- (set_local $5
- (i64.const 890005350012)
- )
- (block
- (drop
- (get_local $4)
+ (block
+ (block $__inlined_func$param
+ (set_local $4
+ (f32.const 12.34000015258789)
)
- (drop
- (get_local $5)
+ (set_local $5
+ (i64.const 890005350012)
)
- (drop
- (get_local $6)
+ (block
+ (drop
+ (get_local $4)
+ )
+ (drop
+ (get_local $5)
+ )
+ (drop
+ (get_local $6)
+ )
)
)
)
@@ -108,3 +130,16 @@
(nop)
)
)
+(module
+ (type $0 (func (param i32) (result i32)))
+ (type $1 (func (result i32)))
+ (memory $0 0)
+ (func $child (type $0) (param $0 i32) (result i32)
+ (i32.const 1234)
+ )
+ (func $parent (type $1) (result i32)
+ (call $child
+ (unreachable)
+ )
+ )
+)
diff --git a/test/passes/inlining.wast b/test/passes/inlining.wast
index 082c4e98a..ce8b1b8be 100644
--- a/test/passes/inlining.wast
+++ b/test/passes/inlining.wast
@@ -76,4 +76,14 @@
(drop (get_local $z))
)
)
+(module
+ (func $child (param i32) (result i32)
+ (i32.const 1234)
+ )
+ (func $parent (result i32)
+ (call $child
+ (unreachable) ;; call is not performed, no sense to inline
+ )
+ )
+)
diff --git a/test/unit.asm.js b/test/unit.asm.js
index 22e2cf9b4..a1accabf5 100644
--- a/test/unit.asm.js
+++ b/test/unit.asm.js
@@ -726,6 +726,7 @@ function asm(global, env, buffer) {
function keepAlive() {
sqrts(3.14159);
+ sqrts(2.18281); // don't inline it either
f2u(100.0);
f2s(100.0);
autoDrop(52) | 0;
diff --git a/test/unit.fromasm b/test/unit.fromasm
index 8e6cd5956..7ac63bfcc 100644
--- a/test/unit.fromasm
+++ b/test/unit.fromasm
@@ -255,9 +255,16 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
+ (func $big_uint_div_u (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (set_local $0
+ (i32.const -1)
+ )
(if (result i32)
- (get_local $1)
+ (tee_local $1
+ (i32.const 2)
+ )
(i32.div_u
(get_local $0)
(get_local $1)
@@ -265,12 +272,6 @@
(i32.const 0)
)
)
- (func $big_uint_div_u (result i32)
- (call $i32u-div
- (i32.const -1)
- (i32.const 2)
- )
- )
(func $fr (param $0 f32)
(nop)
)
@@ -1161,28 +1162,45 @@
(get_local $0)
)
)
- (func $autoDrop (param $0 i32) (result i32)
- (if
- (i32.eq
- (get_local $0)
- (i32.const 17)
+ (func $keepAlive
+ (local $0 i32)
+ (local $1 i32)
+ (drop
+ (call $sqrts
+ (f64.const 3.14159)
)
- (return
- (i32.const 5)
+ )
+ (drop
+ (call $sqrts
+ (f64.const 2.18281)
+ )
+ )
+ (drop
+ (call $f2u
+ (f64.const 100)
+ )
+ )
+ (drop
+ (call $f2u
+ (f64.const 100)
+ )
+ )
+ (block $__inlined_func$autoDrop
+ (br_if $__inlined_func$autoDrop
+ (i32.eq
+ (tee_local $0
+ (i32.const 52)
+ )
+ (i32.const 17)
+ )
)
)
- (get_local $0)
- )
- (func $indirectInSequence
(call_indirect $FUNCSIG$vi
(i32.const 0)
(i32.const 17)
)
- )
- (func $emterpretify_assertions_safeHeap
- (local $0 i32)
(call_indirect $FUNCSIG$vi
- (get_local $0)
+ (get_local $1)
(block (result i32)
(set_global $Int
(i32.const 1)
@@ -1196,8 +1214,6 @@
)
)
)
- )
- (func $call_emscripten_log
(call $emscripten_log)
(drop
(call $f64-to-int
@@ -1207,31 +1223,6 @@
)
)
)
- (func $keepAlive
- (drop
- (call $sqrts
- (f64.const 3.14159)
- )
- )
- (drop
- (call $f2u
- (f64.const 100)
- )
- )
- (drop
- (call $f2u
- (f64.const 100)
- )
- )
- (drop
- (call $autoDrop
- (i32.const 52)
- )
- )
- (call $indirectInSequence)
- (call $emterpretify_assertions_safeHeap)
- (call $call_emscripten_log)
- )
(func $vi (param $0 i32)
(nop)
)
diff --git a/test/unit.fromasm.clamp b/test/unit.fromasm.clamp
index 9ab53f183..8f3e387ae 100644
--- a/test/unit.fromasm.clamp
+++ b/test/unit.fromasm.clamp
@@ -279,9 +279,16 @@
)
)
)
- (func $i32u-div (param $0 i32) (param $1 i32) (result i32)
+ (func $big_uint_div_u (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (set_local $0
+ (i32.const -1)
+ )
(if (result i32)
- (get_local $1)
+ (tee_local $1
+ (i32.const 2)
+ )
(i32.div_u
(get_local $0)
(get_local $1)
@@ -289,12 +296,6 @@
(i32.const 0)
)
)
- (func $big_uint_div_u (result i32)
- (call $i32u-div
- (i32.const -1)
- (i32.const 2)
- )
- )
(func $fr (param $0 f32)
(nop)
)
@@ -1185,28 +1186,45 @@
(get_local $0)
)
)
- (func $autoDrop (param $0 i32) (result i32)
- (if
- (i32.eq
- (get_local $0)
- (i32.const 17)
+ (func $keepAlive
+ (local $0 i32)
+ (local $1 i32)
+ (drop
+ (call $sqrts
+ (f64.const 3.14159)
)
- (return
- (i32.const 5)
+ )
+ (drop
+ (call $sqrts
+ (f64.const 2.18281)
+ )
+ )
+ (drop
+ (call $f2u
+ (f64.const 100)
+ )
+ )
+ (drop
+ (call $f2u
+ (f64.const 100)
+ )
+ )
+ (block $__inlined_func$autoDrop
+ (br_if $__inlined_func$autoDrop
+ (i32.eq
+ (tee_local $0
+ (i32.const 52)
+ )
+ (i32.const 17)
+ )
)
)
- (get_local $0)
- )
- (func $indirectInSequence
(call_indirect $FUNCSIG$vi
(i32.const 0)
(i32.const 17)
)
- )
- (func $emterpretify_assertions_safeHeap
- (local $0 i32)
(call_indirect $FUNCSIG$vi
- (get_local $0)
+ (get_local $1)
(block (result i32)
(set_global $Int
(i32.const 1)
@@ -1220,8 +1238,6 @@
)
)
)
- )
- (func $call_emscripten_log
(call $emscripten_log)
(drop
(call $f64-to-int
@@ -1231,31 +1247,6 @@
)
)
)
- (func $keepAlive
- (drop
- (call $sqrts
- (f64.const 3.14159)
- )
- )
- (drop
- (call $f2u
- (f64.const 100)
- )
- )
- (drop
- (call $f2u
- (f64.const 100)
- )
- )
- (drop
- (call $autoDrop
- (i32.const 52)
- )
- )
- (call $indirectInSequence)
- (call $emterpretify_assertions_safeHeap)
- (call $call_emscripten_log)
- )
(func $vi (param $0 i32)
(nop)
)
diff --git a/test/unit.fromasm.clamp.no-opts b/test/unit.fromasm.clamp.no-opts
index 9055bda68..f4fe4bf83 100644
--- a/test/unit.fromasm.clamp.no-opts
+++ b/test/unit.fromasm.clamp.no-opts
@@ -2034,6 +2034,11 @@
)
)
(drop
+ (call $sqrts
+ (f64.const 2.18281)
+ )
+ )
+ (drop
(call $f2u
(f64.const 100)
)
diff --git a/test/unit.fromasm.imprecise b/test/unit.fromasm.imprecise
index f57931d20..17c9109c3 100644
--- a/test/unit.fromasm.imprecise
+++ b/test/unit.fromasm.imprecise
@@ -1124,38 +1124,35 @@
)
)
)
- (func $f2u (param $0 f64) (result i32)
- (i32.trunc_u/f64
- (get_local $0)
- )
- )
- (func $f2s (param $0 f64) (result i32)
- (i32.trunc_s/f64
- (get_local $0)
+ (func $keepAlive
+ (local $0 i32)
+ (local $1 i32)
+ (drop
+ (call $sqrts
+ (f64.const 3.14159)
+ )
)
- )
- (func $autoDrop (param $0 i32) (result i32)
- (if
- (i32.eq
- (get_local $0)
- (i32.const 17)
+ (drop
+ (call $sqrts
+ (f64.const 2.18281)
)
- (return
- (i32.const 5)
+ )
+ (block $__inlined_func$autoDrop
+ (br_if $__inlined_func$autoDrop
+ (i32.eq
+ (tee_local $0
+ (i32.const 52)
+ )
+ (i32.const 17)
+ )
)
)
- (get_local $0)
- )
- (func $indirectInSequence
(call_indirect $FUNCSIG$vi
(i32.const 0)
(i32.const 17)
)
- )
- (func $emterpretify_assertions_safeHeap
- (local $0 i32)
(call_indirect $FUNCSIG$vi
- (get_local $0)
+ (get_local $1)
(block (result i32)
(set_global $Int
(i32.const 1)
@@ -1169,8 +1166,6 @@
)
)
)
- )
- (func $call_emscripten_log
(call $emscripten_log)
(drop
(i32.trunc_s/f64
@@ -1180,31 +1175,6 @@
)
)
)
- (func $keepAlive
- (drop
- (call $sqrts
- (f64.const 3.14159)
- )
- )
- (drop
- (call $f2u
- (f64.const 100)
- )
- )
- (drop
- (call $f2s
- (f64.const 100)
- )
- )
- (drop
- (call $autoDrop
- (i32.const 52)
- )
- )
- (call $indirectInSequence)
- (call $emterpretify_assertions_safeHeap)
- (call $call_emscripten_log)
- )
(func $vi (param $0 i32)
(nop)
)
diff --git a/test/unit.fromasm.imprecise.no-opts b/test/unit.fromasm.imprecise.no-opts
index b66c69cf7..243b8b8fe 100644
--- a/test/unit.fromasm.imprecise.no-opts
+++ b/test/unit.fromasm.imprecise.no-opts
@@ -1994,6 +1994,11 @@
)
)
(drop
+ (call $sqrts
+ (f64.const 2.18281)
+ )
+ )
+ (drop
(call $f2u
(f64.const 100)
)
diff --git a/test/unit.fromasm.no-opts b/test/unit.fromasm.no-opts
index 074a44bfe..09d8361bd 100644
--- a/test/unit.fromasm.no-opts
+++ b/test/unit.fromasm.no-opts
@@ -2010,6 +2010,11 @@
)
)
(drop
+ (call $sqrts
+ (f64.const 2.18281)
+ )
+ )
+ (drop
(call $f2u
(f64.const 100)
)
diff --git a/test/wasm-only.asm.js b/test/wasm-only.asm.js
index 750ffaa6a..0013a30c3 100644
--- a/test/wasm-only.asm.js
+++ b/test/wasm-only.asm.js
@@ -441,17 +441,29 @@ function asm(global, env, buffer) {
function keepAlive() {
loads();
+ loads();
+ stores();
stores();
test();
+ test();
i64(imports());
+ i64(imports());
+ arg(i64(0));
arg(i64(0));
i64(call1(i64(0)));
+ i64(call1(i64(0)));
i64(call2(i64(0)));
+ i64(call2(i64(0)));
+ i64(returnCastConst());
i64(returnCastConst());
i64(ifValue64(i64(0), i64(0)));
+ i64(ifValue64(i64(0), i64(0)));
ifValue32(0, 0) | 0;
+ ifValue32(0, 0) | 0;
+ switch64(i64(0)) | 0;
switch64(i64(0)) | 0;
unreachable_leftovers(0, 0, 0);
+ unreachable_leftovers(0, 0, 0);
_memchr(0, 0, 0) | 0;
switch64TOOMUCH(i64(0)) | 0;
switch64_big_condition1(i64(0));
diff --git a/test/wasm-only.fromasm b/test/wasm-only.fromasm
index 8811d0cff..8f9825dda 100644
--- a/test/wasm-only.fromasm
+++ b/test/wasm-only.fromasm
@@ -241,18 +241,6 @@
)
)
)
- (func $i64u-div (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.div_u
- (get_local $0)
- (get_local $1)
- )
- )
- )
(func $i64s-div (param $0 i64) (param $1 i64) (result i64)
(if (result i64)
(i64.eqz
@@ -278,30 +266,6 @@
)
)
)
- (func $i64u-rem (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.rem_u
- (get_local $0)
- (get_local $1)
- )
- )
- )
- (func $i64s-rem (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.rem_s
- (get_local $0)
- (get_local $1)
- )
- )
- )
(func $f64-to-int64 (param $0 f64) (result i64)
(if (result i64)
(f64.ne
@@ -331,33 +295,66 @@
(func $test64
(local $0 i64)
(local $1 i64)
- (local $2 i32)
+ (local $2 i64)
(local $3 f32)
(local $4 f64)
- (drop
- (call $i64s-rem
- (call $i64u-rem
- (call $i64s-div
- (call $i64u-div
- (i64.mul
- (i64.sub
- (i64.add
- (tee_local $1
- (i64.const 128849018897)
- )
- (i64.const 100)
+ (set_local $2
+ (call $i64s-div
+ (block (result i64)
+ (set_local $2
+ (i64.mul
+ (i64.sub
+ (i64.add
+ (tee_local $0
+ (i64.const 128849018897)
)
- (get_local $1)
+ (i64.const 100)
)
- (get_local $1)
+ (get_local $0)
+ )
+ (get_local $0)
+ )
+ )
+ (if (result i64)
+ (i64.eqz
+ (tee_local $1
+ (get_local $0)
)
+ )
+ (i64.const 0)
+ (i64.div_u
+ (get_local $2)
(get_local $1)
)
- (get_local $1)
)
+ )
+ (get_local $0)
+ )
+ )
+ (set_local $1
+ (if (result i64)
+ (i64.eqz
+ (tee_local $1
+ (get_local $0)
+ )
+ )
+ (i64.const 0)
+ (i64.rem_u
+ (get_local $2)
(get_local $1)
)
- (get_local $1)
+ )
+ )
+ (drop
+ (if (result i64)
+ (i64.eqz
+ (get_local $0)
+ )
+ (i64.const 0)
+ (i64.rem_s
+ (get_local $1)
+ (get_local $0)
+ )
)
)
(drop
@@ -404,22 +401,18 @@
(i32.const 120)
(get_local $0)
)
- (set_local $2
- (i32.wrap/i64
- (get_local $0)
- )
- )
- (set_local $0
- (i64.extend_u/i32
- (get_local $2)
- )
- )
(drop
(call $f64-to-int64
(f64.promote/f32
(tee_local $3
(f32.convert_u/i64
- (get_local $0)
+ (tee_local $0
+ (i64.extend_u/i32
+ (i32.wrap/i64
+ (get_local $0)
+ )
+ )
+ )
)
)
)
@@ -903,14 +896,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -922,6 +929,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -931,12 +946,29 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
)
)
(drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (drop
(call $switch64
(i64.const 0)
)
@@ -946,6 +978,11 @@
(i32.const 0)
(i32.const 0)
)
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(drop
(call $_memchr
(i32.const 0)
diff --git a/test/wasm-only.fromasm.clamp b/test/wasm-only.fromasm.clamp
index 8811d0cff..8f9825dda 100644
--- a/test/wasm-only.fromasm.clamp
+++ b/test/wasm-only.fromasm.clamp
@@ -241,18 +241,6 @@
)
)
)
- (func $i64u-div (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.div_u
- (get_local $0)
- (get_local $1)
- )
- )
- )
(func $i64s-div (param $0 i64) (param $1 i64) (result i64)
(if (result i64)
(i64.eqz
@@ -278,30 +266,6 @@
)
)
)
- (func $i64u-rem (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.rem_u
- (get_local $0)
- (get_local $1)
- )
- )
- )
- (func $i64s-rem (param $0 i64) (param $1 i64) (result i64)
- (if (result i64)
- (i64.eqz
- (get_local $1)
- )
- (i64.const 0)
- (i64.rem_s
- (get_local $0)
- (get_local $1)
- )
- )
- )
(func $f64-to-int64 (param $0 f64) (result i64)
(if (result i64)
(f64.ne
@@ -331,33 +295,66 @@
(func $test64
(local $0 i64)
(local $1 i64)
- (local $2 i32)
+ (local $2 i64)
(local $3 f32)
(local $4 f64)
- (drop
- (call $i64s-rem
- (call $i64u-rem
- (call $i64s-div
- (call $i64u-div
- (i64.mul
- (i64.sub
- (i64.add
- (tee_local $1
- (i64.const 128849018897)
- )
- (i64.const 100)
+ (set_local $2
+ (call $i64s-div
+ (block (result i64)
+ (set_local $2
+ (i64.mul
+ (i64.sub
+ (i64.add
+ (tee_local $0
+ (i64.const 128849018897)
)
- (get_local $1)
+ (i64.const 100)
)
- (get_local $1)
+ (get_local $0)
+ )
+ (get_local $0)
+ )
+ )
+ (if (result i64)
+ (i64.eqz
+ (tee_local $1
+ (get_local $0)
)
+ )
+ (i64.const 0)
+ (i64.div_u
+ (get_local $2)
(get_local $1)
)
- (get_local $1)
)
+ )
+ (get_local $0)
+ )
+ )
+ (set_local $1
+ (if (result i64)
+ (i64.eqz
+ (tee_local $1
+ (get_local $0)
+ )
+ )
+ (i64.const 0)
+ (i64.rem_u
+ (get_local $2)
(get_local $1)
)
- (get_local $1)
+ )
+ )
+ (drop
+ (if (result i64)
+ (i64.eqz
+ (get_local $0)
+ )
+ (i64.const 0)
+ (i64.rem_s
+ (get_local $1)
+ (get_local $0)
+ )
)
)
(drop
@@ -404,22 +401,18 @@
(i32.const 120)
(get_local $0)
)
- (set_local $2
- (i32.wrap/i64
- (get_local $0)
- )
- )
- (set_local $0
- (i64.extend_u/i32
- (get_local $2)
- )
- )
(drop
(call $f64-to-int64
(f64.promote/f32
(tee_local $3
(f32.convert_u/i64
- (get_local $0)
+ (tee_local $0
+ (i64.extend_u/i32
+ (i32.wrap/i64
+ (get_local $0)
+ )
+ )
+ )
)
)
)
@@ -903,14 +896,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -922,6 +929,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -931,12 +946,29 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
)
)
(drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (drop
(call $switch64
(i64.const 0)
)
@@ -946,6 +978,11 @@
(i32.const 0)
(i32.const 0)
)
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(drop
(call $_memchr
(i32.const 0)
diff --git a/test/wasm-only.fromasm.clamp.no-opts b/test/wasm-only.fromasm.clamp.no-opts
index 143fc9892..c0cfa4676 100644
--- a/test/wasm-only.fromasm.clamp.no-opts
+++ b/test/wasm-only.fromasm.clamp.no-opts
@@ -1645,14 +1645,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -1664,6 +1678,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -1673,6 +1695,18 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
@@ -1683,6 +1717,16 @@
(i64.const 0)
)
)
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(call $unreachable_leftovers
(i32.const 0)
(i32.const 0)
diff --git a/test/wasm-only.fromasm.imprecise b/test/wasm-only.fromasm.imprecise
index 2255bfc08..07f06b23f 100644
--- a/test/wasm-only.fromasm.imprecise
+++ b/test/wasm-only.fromasm.imprecise
@@ -629,14 +629,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -648,6 +662,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -657,6 +679,18 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
@@ -667,6 +701,16 @@
(i64.const 0)
)
)
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(call $unreachable_leftovers
(i32.const 0)
(i32.const 0)
diff --git a/test/wasm-only.fromasm.imprecise.no-opts b/test/wasm-only.fromasm.imprecise.no-opts
index 0052a5c93..06935c945 100644
--- a/test/wasm-only.fromasm.imprecise.no-opts
+++ b/test/wasm-only.fromasm.imprecise.no-opts
@@ -1554,14 +1554,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -1573,6 +1587,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -1582,6 +1604,18 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
@@ -1592,6 +1626,16 @@
(i64.const 0)
)
)
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(call $unreachable_leftovers
(i32.const 0)
(i32.const 0)
diff --git a/test/wasm-only.fromasm.no-opts b/test/wasm-only.fromasm.no-opts
index 143fc9892..c0cfa4676 100644
--- a/test/wasm-only.fromasm.no-opts
+++ b/test/wasm-only.fromasm.no-opts
@@ -1645,14 +1645,28 @@
)
(func $keepAlive
(call $loads)
+ (call $loads)
+ (call $stores)
(call $stores)
(call $test)
+ (call $test)
+ (drop
+ (call $imports)
+ )
(drop
(call $imports)
)
(call $arg
(i64.const 0)
)
+ (call $arg
+ (i64.const 0)
+ )
+ (drop
+ (call $call1
+ (i64.const 0)
+ )
+ )
(drop
(call $call1
(i64.const 0)
@@ -1664,6 +1678,14 @@
)
)
(drop
+ (call $call2
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $returnCastConst)
+ )
+ (drop
(call $returnCastConst)
)
(drop
@@ -1673,6 +1695,18 @@
)
)
(drop
+ (call $ifValue64
+ (i64.const 0)
+ (i64.const 0)
+ )
+ )
+ (drop
+ (call $ifValue32
+ (i32.const 0)
+ (i32.const 0)
+ )
+ )
+ (drop
(call $ifValue32
(i32.const 0)
(i32.const 0)
@@ -1683,6 +1717,16 @@
(i64.const 0)
)
)
+ (drop
+ (call $switch64
+ (i64.const 0)
+ )
+ )
+ (call $unreachable_leftovers
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 0)
+ )
(call $unreachable_leftovers
(i32.const 0)
(i32.const 0)