summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pass.h7
-rw-r--r--src/tools/optimization-options.h9
-rw-r--r--test/binaryen.js/inlining-options.js.txt2
-rw-r--r--test/passes/O4_disable-bulk-memory.txt708
-rw-r--r--test/passes/converge_O3_metrics.bin.txt356
-rw-r--r--test/passes/func-metrics.txt2
-rw-r--r--test/passes/inlining-optimizing_optimize-level=3.txt2271
-rw-r--r--test/passes/inlining_optimize-level=3.txt83
-rw-r--r--test/passes/inlining_optimize-level=3.wast4
-rw-r--r--test/wasm2js/conversions-modified.2asm.js.opt22
-rw-r--r--test/wasm2js/i64-add-sub.2asm.js.opt22
-rw-r--r--test/wasm2js/i64-ctz.2asm.js.opt70
-rw-r--r--test/wasm2js/i64-rotate.2asm.js.opt148
-rw-r--r--test/wasm2js/i64-shifts.2asm.js.opt50
-rw-r--r--test/wasm2js/reinterpret.2asm.js.opt14
-rw-r--r--test/wasm2js/stack-modified.2asm.js.opt57
-rw-r--r--test/wasm2js/unaligned.2asm.js.opt20
-rw-r--r--test/wasm2js/unary-ops.2asm.js.opt113
18 files changed, 1968 insertions, 1990 deletions
diff --git a/src/pass.h b/src/pass.h
index 643d9a25a..dd7c67bc1 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -69,9 +69,10 @@ struct InliningOptions {
// More generally, with 2 items we may have a local.get, but no way to
// require it to be saved instead of directly consumed.
Index alwaysInlineMaxSize = 2;
- // Function size which we inline when there is only one caller.
- // FIXME: this should logically be higher than flexibleInlineMaxSize.
- Index oneCallerInlineMaxSize = 15;
+ // Function size which we inline when there is only one caller. By default we
+ // inline all such functions (as after inlining we can remove the original
+ // function).
+ Index oneCallerInlineMaxSize = -1;
// Function size above which we never inline, ignoring the various flexible
// factors (like whether we are optimizing for size or speed) that could
// influence us.
diff --git a/src/tools/optimization-options.h b/src/tools/optimization-options.h
index 4f5c9e0d1..0e6157473 100644
--- a/src/tools/optimization-options.h
+++ b/src/tools/optimization-options.h
@@ -155,13 +155,12 @@ struct OptimizationOptions : public ToolOptions {
.add("--one-caller-inline-max-function-size",
"-ocimfs",
"Max size of functions that are inlined when there is only one "
- "caller (default " +
- std::to_string(InliningOptions().oneCallerInlineMaxSize) +
- "). Reason this is not unbounded is that some "
- "implementations may have a hard time optimizing really large "
- "functions",
+ "caller (default -1, which means all such functions are inlined)",
Options::Arguments::One,
[this](Options* o, const std::string& argument) {
+ static_assert(InliningOptions().oneCallerInlineMaxSize ==
+ Index(-1),
+ "the help text here is written to assume -1");
passOptions.inlining.oneCallerInlineMaxSize =
static_cast<Index>(atoi(argument.c_str()));
})
diff --git a/test/binaryen.js/inlining-options.js.txt b/test/binaryen.js/inlining-options.js.txt
index b32073a1a..d4b658d45 100644
--- a/test/binaryen.js/inlining-options.js.txt
+++ b/test/binaryen.js/inlining-options.js.txt
@@ -1,4 +1,4 @@
// alwaysInlineMaxSize=2
// flexibleInlineMaxSize=20
-// oneCallerInlineMaxSize=15
+// oneCallerInlineMaxSize=-1
// allowInliningFunctionsWithLoops=false
diff --git a/test/passes/O4_disable-bulk-memory.txt b/test/passes/O4_disable-bulk-memory.txt
index bd9dbd6bf..9bf5f71d6 100644
--- a/test/passes/O4_disable-bulk-memory.txt
+++ b/test/passes/O4_disable-bulk-memory.txt
@@ -9,10 +9,8 @@
(type $0 (func))
(type $11 (func (param i32)))
(type $3 (func (param i32) (result i32)))
- (type $4 (func (result i32)))
(type $f64_f64_f64_f64_f64_f64_f64_=>_i32 (func (param f64 f64 f64 f64 f64 f64 f64) (result i32)))
(type $8 (func (result f64)))
- (type $10 (func (param i32) (result f64)))
(import "env" "memory" (memory $1 1))
(data (i32.const 8) "\0d\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00")
(data (i32.const 40) "\1c\00\00\00~\00l\00i\00b\00/\00i\00n\00t\00e\00r\00n\00a\00l\00/\00a\00r\00r\00a\00y\00b\00u\00f\00f\00e\00r\00.\00t\00s\00")
@@ -113,134 +111,6 @@
)
(local.get $1)
)
- (func $assembly/index/NBodySystem#constructor (; has Stack IR ;) (param $0 i32) (result i32)
- (local $1 i32)
- (local $2 i32)
- (local $3 f64)
- (local $4 f64)
- (local $5 f64)
- (local $6 f64)
- (local $7 i32)
- (local.set $7
- (i32.load offset=4
- (local.get $0)
- )
- )
- (loop $label$3
- (if
- (i32.lt_s
- (local.get $1)
- (local.get $7)
- )
- (block
- (local.set $3
- (f64.load offset=48
- (local.tee $2
- (i32.load offset=8
- (i32.add
- (i32.load
- (local.get $0)
- )
- (i32.shl
- (local.get $1)
- (i32.const 2)
- )
- )
- )
- )
- )
- )
- (local.set $4
- (f64.add
- (local.get $4)
- (f64.mul
- (f64.load offset=24
- (local.get $2)
- )
- (local.get $3)
- )
- )
- )
- (local.set $5
- (f64.add
- (local.get $5)
- (f64.mul
- (f64.load offset=32
- (local.get $2)
- )
- (local.get $3)
- )
- )
- )
- (local.set $6
- (f64.add
- (local.get $6)
- (f64.mul
- (f64.load offset=40
- (local.get $2)
- )
- (local.get $3)
- )
- )
- )
- (local.set $1
- (i32.add
- (local.get $1)
- (i32.const 1)
- )
- )
- (br $label$3)
- )
- )
- )
- (f64.store offset=24
- (local.tee $1
- (if (result i32)
- (i32.shr_u
- (i32.load
- (local.tee $1
- (i32.load
- (local.get $0)
- )
- )
- )
- (i32.const 2)
- )
- (i32.load offset=8
- (local.get $1)
- )
- (unreachable)
- )
- )
- (f64.div
- (local.get $4)
- (f64.const -39.47841760435743)
- )
- )
- (f64.store offset=32
- (local.get $1)
- (f64.div
- (local.get $5)
- (f64.const -39.47841760435743)
- )
- )
- (f64.store offset=40
- (local.get $1)
- (f64.div
- (local.get $6)
- (f64.const -39.47841760435743)
- )
- )
- (i32.store
- (local.tee $1
- (call $~lib/allocator/arena/__memory_allocate
- (i32.const 4)
- )
- )
- (local.get $0)
- )
- (local.get $1)
- )
(func $assembly/index/Body#constructor (; has Stack IR ;) (param $0 f64) (param $1 f64) (param $2 f64) (param $3 f64) (param $4 f64) (param $5 f64) (param $6 f64) (result i32)
(local $7 i32)
(f64.store
@@ -277,11 +147,50 @@
)
(local.get $7)
)
- (func $~lib/internal/memory/memset (; has Stack IR ;) (param $0 i32)
+ (func $assembly/index/init (; has Stack IR ;)
+ (local $0 i32)
(local $1 i32)
(local $2 i32)
- (i32.store8
+ (local $3 i32)
+ (local $4 f64)
+ (local $5 f64)
+ (local $6 f64)
+ (local $7 f64)
+ (i32.store
+ (local.tee $0
+ (call $~lib/allocator/arena/__memory_allocate
+ (i32.const 32)
+ )
+ )
+ (i32.const 20)
+ )
+ (i32.store
+ (local.tee $2
+ (call $~lib/allocator/arena/__memory_allocate
+ (i32.const 8)
+ )
+ )
+ (i32.const 0)
+ )
+ (i32.store offset=4
+ (local.get $2)
+ (i32.const 0)
+ )
+ (i32.store
+ (local.get $2)
(local.get $0)
+ )
+ (i32.store offset=4
+ (local.get $2)
+ (i32.const 5)
+ )
+ (i32.store8
+ (local.tee $0
+ (i32.add
+ (local.get $0)
+ (i32.const 8)
+ )
+ )
(i32.const 0)
)
(i32.store8
@@ -373,228 +282,182 @@
)
(i32.const 0)
)
- (if
- (i32.le_u
- (local.get $1)
- (i32.const 8)
+ (block $__inlined_func$~lib/internal/memory/memset
+ (br_if $__inlined_func$~lib/internal/memory/memset
+ (i32.le_u
+ (local.get $1)
+ (i32.const 8)
+ )
)
- (return)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 4)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 8)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.tee $2
- (i32.add
- (local.get $0)
- (local.get $1)
+ (i32.store
+ (i32.sub
+ (local.tee $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
)
+ (i32.const 12)
)
- (i32.const 12)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.get $2)
- (i32.const 8)
+ (i32.store
+ (i32.sub
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (if
- (i32.le_u
- (local.get $1)
- (i32.const 24)
+ (br_if $__inlined_func$~lib/internal/memory/memset
+ (i32.le_u
+ (local.get $1)
+ (i32.const 24)
+ )
)
- (return)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 12)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 12)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 16)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 20)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 20)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.add
- (local.get $0)
- (i32.const 24)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 24)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.tee $2
- (i32.add
- (local.get $0)
- (local.get $1)
+ (i32.store
+ (i32.sub
+ (local.tee $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
)
+ (i32.const 28)
)
- (i32.const 28)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.get $2)
- (i32.const 24)
+ (i32.store
+ (i32.sub
+ (local.get $3)
+ (i32.const 24)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.get $2)
- (i32.const 20)
+ (i32.store
+ (i32.sub
+ (local.get $3)
+ (i32.const 20)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (i32.sub
- (local.get $2)
- (i32.const 16)
+ (i32.store
+ (i32.sub
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.const 0)
)
- (i32.const 0)
- )
- (local.set $0
- (i32.add
- (local.tee $2
- (i32.add
- (i32.and
- (local.get $0)
- (i32.const 4)
+ (local.set $0
+ (i32.add
+ (local.tee $3
+ (i32.add
+ (i32.and
+ (local.get $0)
+ (i32.const 4)
+ )
+ (i32.const 24)
)
- (i32.const 24)
)
+ (local.get $0)
)
- (local.get $0)
)
- )
- (local.set $1
- (i32.sub
- (local.get $1)
- (local.get $2)
- )
- )
- (loop $label$8
- (if
- (i32.ge_u
+ (local.set $1
+ (i32.sub
(local.get $1)
- (i32.const 32)
+ (local.get $3)
)
- (block
- (i64.store
- (local.get $0)
- (i64.const 0)
+ )
+ (loop $label$8
+ (if
+ (i32.ge_u
+ (local.get $1)
+ (i32.const 32)
)
- (i64.store
- (i32.add
+ (block
+ (i64.store
(local.get $0)
- (i32.const 8)
+ (i64.const 0)
)
- (i64.const 0)
- )
- (i64.store
- (i32.add
- (local.get $0)
- (i32.const 16)
+ (i64.store
+ (i32.add
+ (local.get $0)
+ (i32.const 8)
+ )
+ (i64.const 0)
)
- (i64.const 0)
- )
- (i64.store
- (i32.add
- (local.get $0)
- (i32.const 24)
+ (i64.store
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i64.const 0)
)
- (i64.const 0)
- )
- (local.set $1
- (i32.sub
- (local.get $1)
- (i32.const 32)
+ (i64.store
+ (i32.add
+ (local.get $0)
+ (i32.const 24)
+ )
+ (i64.const 0)
)
- )
- (local.set $0
- (i32.add
- (local.get $0)
- (i32.const 32)
+ (local.set $1
+ (i32.sub
+ (local.get $1)
+ (i32.const 32)
+ )
)
+ (local.set $0
+ (i32.add
+ (local.get $0)
+ (i32.const 32)
+ )
+ )
+ (br $label$8)
)
- (br $label$8)
)
)
)
- )
- (func $~lib/array/Array<Body>#constructor (; has Stack IR ;) (result i32)
- (local $0 i32)
- (local $1 i32)
- (i32.store
- (local.tee $1
- (call $~lib/allocator/arena/__memory_allocate
- (i32.const 32)
- )
- )
- (i32.const 20)
- )
- (i32.store
- (local.tee $0
- (call $~lib/allocator/arena/__memory_allocate
- (i32.const 8)
- )
- )
- (i32.const 0)
- )
- (i32.store offset=4
- (local.get $0)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (local.get $1)
- )
- (i32.store offset=4
- (local.get $0)
- (i32.const 5)
- )
- (call $~lib/internal/memory/memset
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- (local.get $0)
- )
- (func $assembly/index/init (; has Stack IR ;)
- (local $0 i32)
- (local $1 i32)
- (local.set $1
- (call $~lib/array/Array<Body>#constructor)
- )
(local.set $0
(call $assembly/index/Body#constructor
(f64.const 0)
@@ -608,7 +471,7 @@
)
(i32.store offset=8
(i32.load
- (local.get $1)
+ (local.get $2)
)
(local.get $0)
)
@@ -626,7 +489,7 @@
(i32.store offset=8
(i32.add
(i32.load
- (local.get $1)
+ (local.get $2)
)
(i32.const 4)
)
@@ -646,7 +509,7 @@
(i32.store offset=8
(i32.add
(i32.load
- (local.get $1)
+ (local.get $2)
)
(i32.const 8)
)
@@ -666,7 +529,7 @@
(i32.store offset=8
(i32.add
(i32.load
- (local.get $1)
+ (local.get $2)
)
(i32.const 12)
)
@@ -686,17 +549,136 @@
(i32.store offset=8
(i32.add
(i32.load
- (local.get $1)
+ (local.get $2)
)
(i32.const 16)
)
(local.get $0)
)
- (global.set $global$5
- (call $assembly/index/NBodySystem#constructor
- (local.get $1)
+ (local.set $0
+ (i32.const 0)
+ )
+ (local.set $3
+ (i32.load offset=4
+ (local.get $2)
)
)
+ (loop $label$3
+ (if
+ (i32.lt_s
+ (local.get $0)
+ (local.get $3)
+ )
+ (block
+ (local.set $4
+ (f64.load offset=48
+ (local.tee $1
+ (i32.load offset=8
+ (i32.add
+ (i32.load
+ (local.get $2)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 2)
+ )
+ )
+ )
+ )
+ )
+ )
+ (local.set $5
+ (f64.add
+ (local.get $5)
+ (f64.mul
+ (f64.load offset=24
+ (local.get $1)
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (local.set $6
+ (f64.add
+ (local.get $6)
+ (f64.mul
+ (f64.load offset=32
+ (local.get $1)
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (local.set $7
+ (f64.add
+ (local.get $7)
+ (f64.mul
+ (f64.load offset=40
+ (local.get $1)
+ )
+ (local.get $4)
+ )
+ )
+ )
+ (local.set $0
+ (i32.add
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ (br $label$3)
+ )
+ )
+ )
+ (f64.store offset=24
+ (local.tee $0
+ (if (result i32)
+ (i32.shr_u
+ (i32.load
+ (local.tee $0
+ (i32.load
+ (local.get $2)
+ )
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (unreachable)
+ )
+ )
+ (f64.div
+ (local.get $5)
+ (f64.const -39.47841760435743)
+ )
+ )
+ (f64.store offset=32
+ (local.get $0)
+ (f64.div
+ (local.get $6)
+ (f64.const -39.47841760435743)
+ )
+ )
+ (f64.store offset=40
+ (local.get $0)
+ (f64.div
+ (local.get $7)
+ (f64.const -39.47841760435743)
+ )
+ )
+ (i32.store
+ (local.tee $0
+ (call $~lib/allocator/arena/__memory_allocate
+ (i32.const 4)
+ )
+ )
+ (local.get $2)
+ )
+ (global.set $global$5
+ (local.get $0)
+ )
)
(func $assembly/index/NBodySystem#advance (; has Stack IR ;) (param $0 i32)
(local $1 i32)
@@ -999,8 +981,9 @@
)
)
)
- (func $assembly/index/NBodySystem#energy (; has Stack IR ;) (param $0 i32) (result f64)
- (local $1 f64)
+ (func $assembly/index/step (; has Stack IR ;) (result f64)
+ (local $0 f64)
+ (local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
@@ -1010,11 +993,14 @@
(local $8 f64)
(local $9 f64)
(local $10 f64)
+ (call $assembly/index/NBodySystem#advance
+ (global.get $global$5)
+ )
(local.set $5
(i32.load offset=4
(local.tee $4
(i32.load
- (local.get $0)
+ (global.get $global$5)
)
)
)
@@ -1028,7 +1014,7 @@
(block
(local.set $7
(f64.load
- (local.tee $0
+ (local.tee $1
(i32.load offset=8
(i32.add
(i32.load
@@ -1045,22 +1031,22 @@
)
(local.set $8
(f64.load offset=8
- (local.get $0)
+ (local.get $1)
)
)
(local.set $9
(f64.load offset=16
- (local.get $0)
+ (local.get $1)
)
)
- (local.set $1
+ (local.set $0
(f64.add
- (local.get $1)
+ (local.get $0)
(f64.mul
(f64.mul
(local.tee $10
(f64.load offset=48
- (local.get $0)
+ (local.get $1)
)
)
(f64.const 0.5)
@@ -1068,35 +1054,35 @@
(f64.add
(f64.add
(f64.mul
- (local.tee $1
+ (local.tee $0
(f64.load offset=24
- (local.get $0)
+ (local.get $1)
)
)
- (local.get $1)
+ (local.get $0)
)
(f64.mul
- (local.tee $1
+ (local.tee $0
(f64.load offset=32
- (local.get $0)
+ (local.get $1)
)
)
- (local.get $1)
+ (local.get $0)
)
)
(f64.mul
- (local.tee $1
+ (local.tee $0
(f64.load offset=40
- (local.get $0)
+ (local.get $1)
)
)
- (local.get $1)
+ (local.get $0)
)
)
)
)
)
- (local.set $0
+ (local.set $1
(i32.add
(local.get $2)
(i32.const 1)
@@ -1105,7 +1091,7 @@
(loop $label$7
(if
(i32.lt_u
- (local.get $0)
+ (local.get $1)
(local.get $5)
)
(block
@@ -1120,7 +1106,7 @@
(local.get $4)
)
(i32.shl
- (local.get $0)
+ (local.get $1)
(i32.const 2)
)
)
@@ -1129,9 +1115,9 @@
)
)
)
- (local.set $1
+ (local.set $0
(f64.sub
- (local.get $1)
+ (local.get $0)
(f64.div
(f64.mul
(local.get $10)
@@ -1147,7 +1133,7 @@
(local.get $6)
)
(f64.mul
- (local.tee $1
+ (local.tee $0
(f64.sub
(local.get $8)
(f64.load offset=8
@@ -1155,11 +1141,11 @@
)
)
)
- (local.get $1)
+ (local.get $0)
)
)
(f64.mul
- (local.tee $1
+ (local.tee $0
(f64.sub
(local.get $9)
(f64.load offset=16
@@ -1167,16 +1153,16 @@
)
)
)
- (local.get $1)
+ (local.get $0)
)
)
)
)
)
)
- (local.set $0
+ (local.set $1
(i32.add
- (local.get $0)
+ (local.get $1)
(i32.const 1)
)
)
@@ -1194,15 +1180,7 @@
)
)
)
- (local.get $1)
- )
- (func $assembly/index/step (; has Stack IR ;) (result f64)
- (call $assembly/index/NBodySystem#advance
- (global.get $global$5)
- )
- (call $assembly/index/NBodySystem#energy
- (global.get $global$5)
- )
+ (local.get $0)
)
(func $assembly/index/bench (; has Stack IR ;) (param $0 i32)
(local $1 i32)
diff --git a/test/passes/converge_O3_metrics.bin.txt b/test/passes/converge_O3_metrics.bin.txt
index 4c1bed30d..efdebb899 100644
--- a/test/passes/converge_O3_metrics.bin.txt
+++ b/test/passes/converge_O3_metrics.bin.txt
@@ -1,26 +1,25 @@
total
[events] : 0
[exports] : 2
- [funcs] : 8
+ [funcs] : 6
[globals] : 1
[imports] : 3
[memory-data] : 28
[table-data] : 429
[tables] : 0
- [total] : 558
- [vars] : 4
+ [total] : 553
+ [vars] : 2
Binary : 12
- Block : 8
+ Block : 7
Break : 3
- Call : 3
+ Call : 1
CallIndirect : 4
- Const : 45
+ Const : 46
Drop : 3
- GlobalGet : 1
GlobalSet : 1
If : 2
Load : 16
- LocalGet : 18
+ LocalGet : 16
LocalSet : 7
Loop : 1
RefFunc : 429
@@ -28,7 +27,6 @@ total
(module
(type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
- (type $none_=>_none (func))
(type $none_=>_i32 (func (result i32)))
(type $i32_=>_i32 (func (param i32) (result i32)))
(type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32)))
@@ -53,18 +51,124 @@ total
(func $_malloc (; has Stack IR ;) (param $0 i32) (result i32)
(i32.const 0)
)
- (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
+ (func $_main (; has Stack IR ;) (result i32)
+ (local $0 i32)
+ (local $1 i32)
+ (local.set $1
+ (i32.load offset=24
+ (i32.add
+ (i32.load
+ (i32.sub
+ (i32.load
+ (i32.const 18100)
+ )
+ (i32.const 12)
+ )
+ )
+ (i32.const 18100)
+ )
+ )
+ )
+ (if
+ (block (result i32)
+ (local.set $0
+ (i32.const 10888)
+ )
+ (loop $label$3
+ (br_if $label$3
+ (i32.load8_s
+ (local.tee $0
+ (i32.add
+ (local.get $0)
+ (i32.const 1)
+ )
+ )
+ )
+ )
+ )
+ (local.tee $0
+ (i32.sub
+ (local.get $0)
+ (i32.const 10888)
+ )
+ )
+ )
+ (block $label$2
+ (br_if $label$2
+ (call_indirect (type $i32_i32_i32_=>_i32)
+ (local.get $1)
+ (i32.const 10888)
+ (local.get $0)
+ (i32.add
+ (i32.load offset=48
+ (i32.load
+ (local.get $1)
+ )
+ )
+ (i32.const 8)
+ )
+ )
+ )
+ )
+ )
+ (block $label$1
+ (br_if $label$1
+ (if (result i32)
+ (i32.load
+ (i32.add
+ (local.tee $1
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (i32.load
+ (i32.sub
+ (i32.load
+ (i32.const 18100)
+ )
+ (i32.const 12)
+ )
+ )
+ (i32.const 18124)
+ )
+ )
+ )
+ )
+ (i32.const 24)
+ )
+ )
+ (i32.const 0)
+ (call_indirect (type $i32_i32_=>_i32)
+ (local.get $1)
+ (i32.const 10)
+ (i32.add
+ (i32.load offset=52
+ (i32.load
+ (local.get $0)
+ )
+ )
+ (i32.const 422)
+ )
+ )
+ )
+ )
+ )
+ (i32.const 0)
+ )
+ (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (global.set $global$0
+ (i32.const 32)
+ )
(i32.store
(i32.const 8)
- (local.get $0)
+ (local.get $1)
)
(i32.store
(i32.const 12)
- (local.get $1)
+ (local.get $2)
)
(i32.store
(local.tee $0
- (global.get $global$0)
+ (i32.const 32)
)
(i32.const 1)
)
@@ -80,6 +184,101 @@ total
)
(i32.const 1)
)
+ (func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
+ (i32.store8
+ (i32.const 0)
+ (local.get $1)
+ )
+ (drop
+ (call_indirect (type $i32_i32_i32_=>_i32)
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 1)
+ (i32.add
+ (i32.load offset=36
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 32)
+ )
+ )
+ )
+ (i32.const 8)
+ )
+ )
+ )
+ (i32.const 0)
+ )
+ (func $__ZNSt3__211__stdoutbufIcE6xsputnEPKci (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (drop
+ (call_indirect (type $i32_i32_i32_=>_i32)
+ (i32.const 0)
+ (local.get $1)
+ (local.get $2)
+ (i32.add
+ (i32.load offset=36
+ (i32.load offset=32
+ (local.get $0)
+ )
+ )
+ (i32.const 8)
+ )
+ )
+ )
+ (i32.const 0)
+ )
+)
+total
+ [events] : 0
+ [exports] : 2
+ [funcs] : 6
+ [globals] : 0 -1
+ [imports] : 3
+ [memory-data] : 28
+ [table-data] : 429
+ [tables] : 0
+ [total] : 549 -4
+ [vars] : 2
+ Binary : 12
+ Block : 7
+ Break : 3
+ Call : 1
+ CallIndirect : 4
+ Const : 46
+ Drop : 3
+ If : 2
+ Load : 16
+ LocalGet : 14 -2
+ LocalSet : 6 -1
+ Loop : 1
+ RefFunc : 429
+ Store : 5
+(module
+ (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
+ (type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
+ (type $none_=>_i32 (func (result i32)))
+ (type $i32_=>_i32 (func (param i32) (result i32)))
+ (type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32)))
+ (import "env" "memory" (memory $mimport$0 256 256))
+ (data (i32.const 2948) "\03")
+ (data (i32.const 6828) "\04")
+ (data (i32.const 7028) "\0d\00\00\00\06")
+ (data (i32.const 10888) "hello, world!")
+ (data (i32.const 18100) "\b8\1a")
+ (data (i32.const 18128) ",I")
+ (data (i32.const 18732) "D\1b")
+ (data (i32.const 18764) "`\0b")
+ (import "env" "table" (table $timport$0 478 478 funcref))
+ (elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi)
+ (import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32)))
+ (export "_main" (func $_main))
+ (export "_malloc" (func $_malloc))
+ (func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32)
+ (i32.const 0)
+ )
+ (func $_malloc (; has Stack IR ;) (param $0 i32) (result i32)
+ (i32.const 0)
+ )
(func $_main (; has Stack IR ;) (result i32)
(local $0 i32)
(local $1 i32)
@@ -140,21 +339,6 @@ total
)
)
)
- (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc)
- (i32.const 0)
- )
- (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (global.set $global$0
- (i32.const 32)
- )
- (call $___stdio_write
- (local.get $1)
- (local.get $2)
- )
- )
- (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;)
- (local $0 i32)
- (local $1 i32)
(block $label$1
(br_if $label$1
(if (result i32)
@@ -196,6 +380,32 @@ total
)
)
)
+ (i32.const 0)
+ )
+ (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (i32.store
+ (i32.const 8)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 12)
+ (local.get $2)
+ )
+ (i32.store
+ (i32.const 32)
+ (i32.const 1)
+ )
+ (i32.store
+ (i32.const 40)
+ (i32.const 2)
+ )
+ (drop
+ (call $import$0
+ (i32.const 146)
+ (i32.const 32)
+ )
+ )
+ (i32.const 1)
)
(func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(i32.store8
@@ -244,34 +454,31 @@ total
total
[events] : 0
[exports] : 2
- [funcs] : 8
- [globals] : 1
+ [funcs] : 6
+ [globals] : 0
[imports] : 3
[memory-data] : 28
[table-data] : 429
[tables] : 0
- [total] : 558
- [vars] : 4
+ [total] : 549
+ [vars] : 2
Binary : 12
- Block : 8
+ Block : 7
Break : 3
- Call : 3
+ Call : 1
CallIndirect : 4
- Const : 45
+ Const : 46
Drop : 3
- GlobalGet : 1
- GlobalSet : 1
If : 2
Load : 16
- LocalGet : 18
- LocalSet : 7
+ LocalGet : 14
+ LocalSet : 6
Loop : 1
RefFunc : 429
Store : 5
(module
(type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32)))
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
- (type $none_=>_none (func))
(type $none_=>_i32 (func (result i32)))
(type $i32_=>_i32 (func (param i32) (result i32)))
(type $i32_i32_i32_i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32 i32 i32 i32) (result i32)))
@@ -287,7 +494,6 @@ total
(import "env" "table" (table $timport$0 478 478 funcref))
(elem (i32.const 0) $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $___stdout_write $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE6xsputnEPKci $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $b0 $__ZNSt3__211__stdoutbufIcE8overflowEi)
(import "env" "___syscall146" (func $import$0 (param i32 i32) (result i32)))
- (global $global$0 (mut i32) (i32.const 1))
(export "_main" (func $_main))
(export "_malloc" (func $_malloc))
(func $b0 (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (param $6 i32) (result i32)
@@ -296,33 +502,6 @@ total
(func $_malloc (; has Stack IR ;) (param $0 i32) (result i32)
(i32.const 0)
)
- (func $___stdio_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
- (i32.store
- (i32.const 8)
- (local.get $0)
- )
- (i32.store
- (i32.const 12)
- (local.get $1)
- )
- (i32.store
- (local.tee $0
- (global.get $global$0)
- )
- (i32.const 1)
- )
- (i32.store offset=8
- (local.get $0)
- (i32.const 2)
- )
- (drop
- (call $import$0
- (i32.const 146)
- (local.get $0)
- )
- )
- (i32.const 1)
- )
(func $_main (; has Stack IR ;) (result i32)
(local $0 i32)
(local $1 i32)
@@ -383,21 +562,6 @@ total
)
)
)
- (call $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc)
- (i32.const 0)
- )
- (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (global.set $global$0
- (i32.const 32)
- )
- (call $___stdio_write
- (local.get $1)
- (local.get $2)
- )
- )
- (func $__ZNSt3__213basic_ostreamIcNS_11char_traitsIcEEE3putEc (; has Stack IR ;)
- (local $0 i32)
- (local $1 i32)
(block $label$1
(br_if $label$1
(if (result i32)
@@ -439,6 +603,32 @@ total
)
)
)
+ (i32.const 0)
+ )
+ (func $___stdout_write (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (i32.store
+ (i32.const 8)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 12)
+ (local.get $2)
+ )
+ (i32.store
+ (i32.const 32)
+ (i32.const 1)
+ )
+ (i32.store
+ (i32.const 40)
+ (i32.const 2)
+ )
+ (drop
+ (call $import$0
+ (i32.const 146)
+ (i32.const 32)
+ )
+ )
+ (i32.const 1)
)
(func $__ZNSt3__211__stdoutbufIcE8overflowEi (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(i32.store8
diff --git a/test/passes/func-metrics.txt b/test/passes/func-metrics.txt
index 61d97ddad..197e35a41 100644
--- a/test/passes/func-metrics.txt
+++ b/test/passes/func-metrics.txt
@@ -128,7 +128,7 @@ func: func_c
Block : 1
Call : 15
export: a (func_a)
- [removable-bytes-without-it]: 72
+ [removable-bytes-without-it]: 58
[total] : 0
export: b (func_b)
[removable-bytes-without-it]: 18
diff --git a/test/passes/inlining-optimizing_optimize-level=3.txt b/test/passes/inlining-optimizing_optimize-level=3.txt
index d6c17620c..b3ad7e801 100644
--- a/test/passes/inlining-optimizing_optimize-level=3.txt
+++ b/test/passes/inlining-optimizing_optimize-level=3.txt
@@ -1,7 +1,7 @@
(module
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
- (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$vi (func (param i32)))
+ (type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $FUNCSIG$i (func (result i32)))
(type $i32_i32_i32_i32_=>_i32 (func (param i32 i32 i32 i32) (result i32)))
@@ -137,7 +137,20 @@
)
(func $_main (result i32)
(local $0 i32)
- (local.set $0
+ (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.set $8
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -153,14 +166,282 @@
)
(call $abort)
)
+ (local.set $6
+ (global.get $STACKTOP)
+ )
+ (global.set $STACKTOP
+ (i32.add
+ (global.get $STACKTOP)
+ (i32.const 16)
+ )
+ )
+ (if
+ (i32.ge_s
+ (global.get $STACKTOP)
+ (global.get $STACK_MAX)
+ )
+ (call $abort)
+ )
+ (i32.store
+ (local.get $6)
+ (local.get $8)
+ )
+ (local.set $0
+ (i32.load
+ (i32.const 8)
+ )
+ )
+ (local.set $1
+ (global.get $STACKTOP)
+ )
+ (global.set $STACKTOP
+ (i32.add
+ (global.get $STACKTOP)
+ (i32.const 224)
+ )
+ )
+ (if
+ (i32.ge_s
+ (global.get $STACKTOP)
+ (global.get $STACK_MAX)
+ )
+ (call $abort)
+ )
+ (local.set $2
+ (i32.add
+ (local.get $1)
+ (i32.const 120)
+ )
+ )
+ (local.set $4
+ (i32.add
+ (local.get $1)
+ (i32.const 136)
+ )
+ )
+ (local.set $5
+ (i32.add
+ (local.tee $3
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 80)
+ )
+ )
+ )
+ (i32.const 40)
+ )
+ )
+ (loop $do-in
+ (i32.store
+ (local.get $3)
+ (i32.const 0)
+ )
+ (br_if $do-in
+ (i32.lt_s
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ )
+ (local.get $5)
+ )
+ )
+ )
+ (i32.store
+ (local.get $2)
+ (i32.load
+ (local.get $6)
+ )
+ )
(drop
- (call $_printf
- (i32.const 672)
- (local.get $0)
+ (if (result i32)
+ (i32.lt_s
+ (call $_printf_core
+ (i32.const 0)
+ (i32.const 672)
+ (local.get $2)
+ (local.get $1)
+ (local.get $7)
+ )
+ (i32.const 0)
+ )
+ (i32.const -1)
+ (block (result i32)
+ (drop
+ (i32.load offset=76
+ (local.get $0)
+ )
+ )
+ (local.set $3
+ (i32.load
+ (local.get $0)
+ )
+ )
+ (if
+ (i32.lt_s
+ (i32.load8_s offset=74
+ (local.get $0)
+ )
+ (i32.const 1)
+ )
+ (i32.store
+ (local.get $0)
+ (i32.and
+ (local.get $3)
+ (i32.const -33)
+ )
+ )
+ )
+ (if
+ (i32.load
+ (local.tee $5
+ (i32.add
+ (local.get $0)
+ (i32.const 48)
+ )
+ )
+ )
+ (drop
+ (call $_printf_core
+ (local.get $0)
+ (i32.const 672)
+ (local.get $2)
+ (local.get $1)
+ (local.get $7)
+ )
+ )
+ (block
+ (local.set $10
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $0)
+ (i32.const 44)
+ )
+ )
+ )
+ )
+ (i32.store
+ (local.get $9)
+ (local.get $4)
+ )
+ (i32.store
+ (local.tee $12
+ (i32.add
+ (local.get $0)
+ (i32.const 28)
+ )
+ )
+ (local.get $4)
+ )
+ (i32.store
+ (local.tee $11
+ (i32.add
+ (local.get $0)
+ (i32.const 20)
+ )
+ )
+ (local.get $4)
+ )
+ (i32.store
+ (local.get $5)
+ (i32.const 80)
+ )
+ (i32.store
+ (local.tee $13
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ )
+ (i32.add
+ (local.get $4)
+ (i32.const 80)
+ )
+ )
+ (local.set $2
+ (call $_printf_core
+ (local.get $0)
+ (i32.const 672)
+ (local.get $2)
+ (local.get $1)
+ (local.get $7)
+ )
+ )
+ (if
+ (local.get $10)
+ (block
+ (drop
+ (call_indirect (type $FUNCSIG$iiii)
+ (local.get $0)
+ (i32.const 0)
+ (i32.const 0)
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (local.get $0)
+ )
+ (i32.const 7)
+ )
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $11)
+ )
+ )
+ (i32.store
+ (local.get $9)
+ (local.get $10)
+ )
+ (i32.store
+ (local.get $5)
+ (i32.const 0)
+ )
+ (i32.store
+ (local.get $13)
+ (i32.const 0)
+ )
+ (i32.store
+ (local.get $12)
+ (i32.const 0)
+ )
+ (i32.store
+ (local.get $11)
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ )
+ (i32.store
+ (local.get $0)
+ (i32.or
+ (i32.load
+ (local.get $0)
+ )
+ (i32.and
+ (local.get $3)
+ (i32.const 32)
+ )
+ )
+ )
+ (i32.const 0)
+ )
)
)
(global.set $STACKTOP
- (local.get $0)
+ (local.get $1)
+ )
+ (global.set $STACKTOP
+ (local.get $6)
+ )
+ (global.set $STACKTOP
+ (local.get $8)
)
(i32.const 0)
)
@@ -261,87 +542,6 @@
)
(local.get $0)
)
- (func $_strerror (param $0 i32) (result i32)
- (local $1 i32)
- (local $2 i32)
- (local.set $1
- (i32.const 0)
- )
- (block $__rjto$1
- (block $__rjti$1
- (block $__rjti$0
- (loop $while-in
- (br_if $__rjti$0
- (i32.eq
- (i32.load8_u offset=687
- (local.get $1)
- )
- (local.get $0)
- )
- )
- (br_if $while-in
- (i32.ne
- (local.tee $1
- (i32.add
- (local.get $1)
- (i32.const 1)
- )
- )
- (i32.const 87)
- )
- )
- (local.set $1
- (i32.const 87)
- )
- (br $__rjti$1)
- )
- )
- (br_if $__rjti$1
- (local.get $1)
- )
- (local.set $0
- (i32.const 775)
- )
- (br $__rjto$1)
- )
- (local.set $0
- (i32.const 775)
- )
- (loop $while-in1
- (loop $while-in3
- (local.set $2
- (i32.add
- (local.get $0)
- (i32.const 1)
- )
- )
- (if
- (i32.load8_s
- (local.get $0)
- )
- (block $block
- (local.set $0
- (local.get $2)
- )
- (br $while-in3)
- )
- (local.set $0
- (local.get $2)
- )
- )
- )
- (br_if $while-in1
- (local.tee $1
- (i32.add
- (local.get $1)
- (i32.const -1)
- )
- )
- )
- )
- )
- (local.get $0)
- )
(func $___errno_location (result i32)
(if (result i32)
(i32.load
@@ -639,45 +839,6 @@
)
(local.get $0)
)
- (func $_printf (param $0 i32) (param $1 i32) (result i32)
- (local $2 i32)
- (local $3 i32)
- (local.set $2
- (global.get $STACKTOP)
- )
- (global.set $STACKTOP
- (i32.add
- (global.get $STACKTOP)
- (i32.const 16)
- )
- )
- (if
- (i32.ge_s
- (global.get $STACKTOP)
- (global.get $STACK_MAX)
- )
- (call $abort)
- )
- (i32.store
- (local.tee $3
- (local.get $2)
- )
- (local.get $1)
- )
- (local.set $0
- (call $_vfprintf
- (i32.load
- (i32.const 8)
- )
- (local.get $0)
- (local.get $3)
- )
- )
- (global.set $STACKTOP
- (local.get $2)
- )
- (local.get $0)
- )
(func $___stdio_write (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(local $4 i32)
@@ -1024,322 +1185,121 @@
)
(local.get $2)
)
- (func $_vfprintf (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
+ (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result 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.set $3
- (global.get $STACKTOP)
- )
- (global.set $STACKTOP
- (i32.add
- (global.get $STACKTOP)
- (i32.const 224)
- )
- )
- (if
- (i32.ge_s
- (global.get $STACKTOP)
- (global.get $STACK_MAX)
- )
- (call $abort)
- )
- (local.set $5
- (i32.add
- (local.get $3)
- (i32.const 120)
- )
- )
- (local.set $6
- (i32.add
- (local.get $3)
- (i32.const 136)
- )
- )
- (local.set $8
- (i32.add
- (local.tee $4
- (local.tee $7
- (i32.add
- (local.get $3)
- (i32.const 80)
- )
- )
- )
- (i32.const 40)
- )
- )
- (loop $do-in
- (i32.store
- (local.get $4)
- (i32.const 0)
- )
- (br_if $do-in
- (i32.lt_s
- (local.tee $4
- (i32.add
- (local.get $4)
- (i32.const 4)
- )
- )
- (local.get $8)
- )
- )
- )
- (i32.store
- (local.get $5)
- (i32.load
- (local.get $2)
- )
- )
- (local.set $0
- (if (result i32)
- (i32.lt_s
- (call $_printf_core
- (i32.const 0)
- (local.get $1)
- (local.get $5)
- (local.get $3)
- (local.get $7)
- )
- (i32.const 0)
- )
- (i32.const -1)
- (block (result i32)
- (drop
- (i32.load offset=76
- (local.get $0)
- )
- )
- (local.set $4
- (i32.load
- (local.get $0)
- )
- )
- (if
- (i32.lt_s
- (i32.load8_s offset=74
- (local.get $0)
- )
- (i32.const 1)
- )
- (i32.store
- (local.get $0)
- (i32.and
- (local.get $4)
- (i32.const -33)
- )
- )
- )
- (if
+ (block $label$break$L5
+ (block $__rjti$0
+ (br_if $__rjti$0
+ (local.tee $3
(i32.load
- (local.tee $9
+ (local.tee $5
(i32.add
- (local.get $0)
- (i32.const 48)
+ (local.get $2)
+ (i32.const 16)
)
)
)
- (local.set $1
- (call $_printf_core
- (local.get $0)
- (local.get $1)
- (local.get $5)
- (local.get $3)
- (local.get $7)
- )
- )
- (block
- (local.set $11
- (i32.load
- (local.tee $10
+ )
+ )
+ (local.set $3
+ (if (result i32)
+ (block (result i32)
+ (local.set $3
+ (i32.load8_s
+ (local.tee $4
(i32.add
- (local.get $0)
- (i32.const 44)
+ (local.get $2)
+ (i32.const 74)
)
)
)
)
- (i32.store
- (local.get $10)
- (local.get $6)
- )
- (i32.store
- (local.tee $8
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
- (local.get $6)
- )
- (i32.store
- (local.tee $12
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
- (local.get $6)
- )
- (i32.store
- (local.get $9)
- (i32.const 80)
- )
- (i32.store
- (local.tee $2
+ (i32.store8
+ (local.get $4)
+ (i32.or
(i32.add
- (local.get $0)
- (i32.const 16)
+ (local.get $3)
+ (i32.const 255)
)
- )
- (i32.add
- (local.get $6)
- (i32.const 80)
- )
- )
- (local.set $1
- (call $_printf_core
- (local.get $0)
- (local.get $1)
- (local.get $5)
(local.get $3)
- (local.get $7)
)
)
- (if
- (local.get $11)
- (block
- (drop
- (call_indirect (type $FUNCSIG$iiii)
- (local.get $0)
- (i32.const 0)
- (i32.const 0)
- (i32.add
- (i32.and
- (i32.load offset=36
- (local.get $0)
- )
- (i32.const 7)
- )
- (i32.const 2)
- )
- )
- )
- (local.set $1
- (select
- (local.get $1)
- (i32.const -1)
- (i32.load
- (local.get $12)
- )
+ (if (result i32)
+ (i32.and
+ (local.tee $3
+ (i32.load
+ (local.get $2)
)
)
+ (i32.const 8)
+ )
+ (block (result i32)
(i32.store
- (local.get $10)
- (local.get $11)
+ (local.get $2)
+ (i32.or
+ (local.get $3)
+ (i32.const 32)
+ )
)
- (i32.store
- (local.get $9)
+ (i32.const -1)
+ )
+ (block (result i32)
+ (i32.store offset=8
+ (local.get $2)
(i32.const 0)
)
- (i32.store
+ (i32.store offset=4
(local.get $2)
(i32.const 0)
)
- (i32.store
- (local.get $8)
- (i32.const 0)
+ (i32.store offset=28
+ (local.get $2)
+ (local.tee $3
+ (i32.load offset=44
+ (local.get $2)
+ )
+ )
)
- (i32.store
- (local.get $12)
- (i32.const 0)
+ (i32.store offset=20
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.store offset=16
+ (local.get $2)
+ (i32.add
+ (local.get $3)
+ (i32.load offset=48
+ (local.get $2)
+ )
+ )
)
+ (i32.const 0)
)
)
)
- )
- (i32.store
- (local.get $0)
- (i32.or
- (local.tee $0
+ (i32.const 0)
+ (block
+ (local.set $3
(i32.load
- (local.get $0)
- )
- )
- (i32.and
- (local.get $4)
- (i32.const 32)
- )
- )
- )
- (select
- (i32.const -1)
- (local.get $1)
- (i32.and
- (local.get $0)
- (i32.const 32)
- )
- )
- )
- )
- )
- (global.set $STACKTOP
- (local.get $3)
- )
- (local.get $0)
- )
- (func $___fwritex (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (block $label$break$L5
- (block $__rjti$0
- (br_if $__rjti$0
- (local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 16)
+ (local.get $5)
)
)
+ (br $__rjti$0)
)
)
)
- (if
- (call $___towrite
- (local.get $2)
- )
- (local.set $3
- (i32.const 0)
- )
- (block $block
- (local.set $3
- (i32.load
- (local.get $4)
- )
- )
- (br $__rjti$0)
- )
- )
(br $label$break$L5)
)
(if
(i32.lt_u
(i32.sub
(local.get $3)
- (local.tee $4
+ (local.tee $6
(i32.load
- (local.tee $5
+ (local.tee $4
(i32.add
(local.get $2)
(i32.const 20)
@@ -1350,7 +1310,7 @@
)
(local.get $1)
)
- (block $block30
+ (block
(local.set $3
(call_indirect (type $FUNCSIG$iiii)
(local.get $2)
@@ -1371,206 +1331,127 @@
)
)
(local.set $2
- (block $label$break$L10 (result i32)
- (if (result i32)
- (i32.gt_s
- (i32.load8_s offset=75
- (local.get $2)
- )
- (i32.const -1)
+ (if (result i32)
+ (i32.gt_s
+ (i32.load8_s offset=75
+ (local.get $2)
)
- (block $block32 (result i32)
- (local.set $3
- (local.get $1)
- )
- (loop $while-in
- (drop
- (br_if $label$break$L10
- (i32.const 0)
- (i32.eqz
- (local.get $3)
- )
+ (i32.const -1)
+ )
+ (block $label$break$L10 (result i32)
+ (local.set $3
+ (local.get $1)
+ )
+ (loop $while-in
+ (drop
+ (br_if $label$break$L10
+ (i32.const 0)
+ (i32.eqz
+ (local.get $3)
)
)
- (if
- (i32.ne
- (i32.load8_s
- (i32.add
- (local.get $0)
- (local.tee $6
- (i32.add
- (local.get $3)
- (i32.const -1)
- )
+ )
+ (if
+ (i32.ne
+ (i32.load8_s
+ (i32.add
+ (local.get $0)
+ (local.tee $5
+ (i32.sub
+ (local.get $3)
+ (i32.const 1)
)
)
)
- (i32.const 10)
)
- (block $block34
- (local.set $3
- (local.get $6)
- )
- (br $while-in)
+ (i32.const 10)
+ )
+ (block
+ (local.set $3
+ (local.get $5)
)
+ (br $while-in)
)
)
- (br_if $label$break$L5
- (i32.lt_u
- (call_indirect (type $FUNCSIG$iiii)
- (local.get $2)
- (local.get $0)
- (local.get $3)
- (i32.add
- (i32.and
- (i32.load offset=36
- (local.get $2)
- )
- (i32.const 7)
+ )
+ (br_if $label$break$L5
+ (i32.lt_u
+ (call_indirect (type $FUNCSIG$iiii)
+ (local.get $2)
+ (local.get $0)
+ (local.get $3)
+ (i32.add
+ (i32.and
+ (i32.load offset=36
+ (local.get $2)
)
- (i32.const 2)
+ (i32.const 7)
)
+ (i32.const 2)
)
- (local.get $3)
)
+ (local.get $3)
)
- (local.set $4
- (i32.load
- (local.get $5)
- )
+ )
+ (local.set $6
+ (i32.load
+ (local.get $4)
)
- (local.set $1
- (i32.sub
- (local.get $1)
- (local.get $3)
- )
+ )
+ (local.set $1
+ (i32.sub
+ (local.get $1)
+ (local.get $3)
)
- (local.set $0
- (i32.add
- (local.get $0)
- (local.get $3)
- )
+ )
+ (local.set $0
+ (i32.add
+ (local.get $0)
+ (local.get $3)
)
- (local.get $3)
)
- (i32.const 0)
+ (local.get $3)
)
+ (i32.const 0)
)
)
(drop
(call $_memcpy
- (local.get $4)
+ (local.get $6)
(local.get $0)
(local.get $1)
)
)
(i32.store
- (local.get $5)
+ (local.get $4)
(i32.add
(i32.load
- (local.get $5)
+ (local.get $4)
)
(local.get $1)
)
)
(local.set $3
(i32.add
- (local.get $2)
(local.get $1)
+ (local.get $2)
)
)
)
(local.get $3)
)
- (func $___towrite (param $0 i32) (result i32)
- (local $1 i32)
- (local $2 i32)
- (local.set $1
- (i32.load8_s
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 74)
- )
- )
- )
- )
- (i32.store8
- (local.get $2)
- (i32.or
- (i32.add
- (local.get $1)
- (i32.const 255)
- )
- (local.get $1)
- )
- )
- (local.tee $0
- (if (result i32)
- (i32.and
- (local.tee $1
- (i32.load
- (local.get $0)
- )
- )
- (i32.const 8)
- )
- (block $block (result i32)
- (i32.store
- (local.get $0)
- (i32.or
- (local.get $1)
- (i32.const 32)
- )
- )
- (i32.const -1)
- )
- (block $block35 (result i32)
- (i32.store offset=8
- (local.get $0)
- (i32.const 0)
- )
- (i32.store offset=4
- (local.get $0)
- (i32.const 0)
- )
- (i32.store offset=28
- (local.get $0)
- (local.tee $1
- (i32.load offset=44
- (local.get $0)
- )
- )
- )
- (i32.store offset=20
- (local.get $0)
- (local.get $1)
- )
- (i32.store offset=16
- (local.get $0)
- (i32.add
- (local.get $1)
- (i32.load offset=48
- (local.get $0)
- )
- )
- )
- (i32.const 0)
- )
- )
- )
- )
- (func $_wcrtomb (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (block $do-once (result i32)
+ (func $_wctomb (param $0 i32) (param $1 i32) (result i32)
+ (if (result i32)
+ (local.get $0)
(if (result i32)
(local.get $0)
- (block $block (result i32)
+ (block $do-once (result i32)
(if
(i32.lt_u
(local.get $1)
(i32.const 128)
)
- (block $block37
+ (block
(i32.store8
(local.get $0)
(local.get $1)
@@ -1585,7 +1466,7 @@
(local.get $1)
(i32.const 2048)
)
- (block $block39
+ (block
(i32.store8
(local.get $0)
(i32.or
@@ -1613,10 +1494,6 @@
)
(if
(i32.or
- (i32.lt_u
- (local.get $1)
- (i32.const 55296)
- )
(i32.eq
(i32.and
(local.get $1)
@@ -1624,8 +1501,12 @@
)
(i32.const 57344)
)
+ (i32.lt_u
+ (local.get $1)
+ (i32.const 55296)
+ )
)
- (block $block41
+ (block
(i32.store8
(local.get $0)
(i32.or
@@ -1666,13 +1547,13 @@
)
(if (result i32)
(i32.lt_u
- (i32.add
+ (i32.sub
(local.get $1)
- (i32.const -65536)
+ (i32.const 65536)
)
(i32.const 1048576)
)
- (block $block43 (result i32)
+ (block (result i32)
(i32.store8
(local.get $0)
(i32.or
@@ -1721,7 +1602,7 @@
)
(i32.const 4)
)
- (block $block44 (result i32)
+ (block (result i32)
(i32.store
(call $___errno_location)
(i32.const 84)
@@ -1732,248 +1613,7 @@
)
(i32.const 1)
)
- )
- )
- (func $_wctomb (param $0 i32) (param $1 i32) (result i32)
- (if (result i32)
- (local.get $0)
- (call $_wcrtomb
- (local.get $0)
- (local.get $1)
- (i32.const 0)
- )
- (i32.const 0)
- )
- )
- (func $_memchr (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local.set $5
- (i32.and
- (local.get $1)
- (i32.const 255)
- )
- )
- (block $label$break$L8
- (block $__rjti$2
- (if
- (i32.and
- (local.tee $4
- (i32.ne
- (local.get $2)
- (i32.const 0)
- )
- )
- (i32.ne
- (i32.and
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 0)
- )
- )
- (block $block
- (local.set $4
- (i32.and
- (local.get $1)
- (i32.const 255)
- )
- )
- (local.set $3
- (local.get $2)
- )
- (local.set $2
- (local.get $0)
- )
- (loop $while-in
- (br_if $__rjti$2
- (i32.eq
- (i32.load8_u
- (local.get $2)
- )
- (i32.and
- (local.get $4)
- (i32.const 255)
- )
- )
- )
- (br_if $while-in
- (i32.and
- (local.tee $0
- (i32.ne
- (local.tee $3
- (i32.add
- (local.get $3)
- (i32.const -1)
- )
- )
- (i32.const 0)
- )
- )
- (i32.ne
- (i32.and
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.const 1)
- )
- )
- (i32.const 3)
- )
- (i32.const 0)
- )
- )
- )
- )
- )
- (block $block45
- (local.set $3
- (local.get $2)
- )
- (local.set $2
- (local.get $0)
- )
- (local.set $0
- (local.get $4)
- )
- )
- )
- (br_if $__rjti$2
- (local.get $0)
- )
- (local.set $0
- (i32.const 0)
- )
- (br $label$break$L8)
- )
- (local.set $0
- (local.get $3)
- )
- (if
- (i32.ne
- (i32.load8_u
- (local.get $2)
- )
- (local.tee $1
- (i32.and
- (local.get $1)
- (i32.const 255)
- )
- )
- )
- (block $block47
- (local.set $3
- (i32.mul
- (local.get $5)
- (i32.const 16843009)
- )
- )
- (block $__rjto$0
- (block $__rjti$0
- (br_if $__rjti$0
- (i32.le_u
- (local.get $0)
- (i32.const 3)
- )
- )
- (loop $while-in3
- (if
- (i32.eqz
- (i32.and
- (i32.xor
- (i32.and
- (local.tee $4
- (i32.xor
- (i32.load
- (local.get $2)
- )
- (local.get $3)
- )
- )
- (i32.const -2139062144)
- )
- (i32.const -2139062144)
- )
- (i32.add
- (local.get $4)
- (i32.const -16843009)
- )
- )
- )
- (block $block49
- (local.set $2
- (i32.add
- (local.get $2)
- (i32.const 4)
- )
- )
- (br_if $while-in3
- (i32.gt_u
- (local.tee $0
- (i32.add
- (local.get $0)
- (i32.const -4)
- )
- )
- (i32.const 3)
- )
- )
- (br $__rjti$0)
- )
- )
- )
- (br $__rjto$0)
- )
- (if
- (i32.eqz
- (local.get $0)
- )
- (block $block51
- (local.set $0
- (i32.const 0)
- )
- (br $label$break$L8)
- )
- )
- )
- (loop $while-in5
- (br_if $label$break$L8
- (i32.eq
- (i32.load8_u
- (local.get $2)
- )
- (i32.and
- (local.get $1)
- (i32.const 255)
- )
- )
- )
- (local.set $2
- (i32.add
- (local.get $2)
- (i32.const 1)
- )
- )
- (br_if $while-in5
- (local.tee $0
- (i32.add
- (local.get $0)
- (i32.const -1)
- )
- )
- )
- (local.set $0
- (i32.const 0)
- )
- )
- )
- )
- )
- (select
- (local.get $2)
(i32.const 0)
- (local.get $0)
)
)
(func $___syscall_ret (param $0 i32) (result i32)
@@ -2318,7 +1958,7 @@
(local.set $18
(if (result i32)
(i32.gt_s
- (local.get $10)
+ (local.get $11)
(i32.sub
(i32.const 2147483647)
(local.get $18)
@@ -2332,7 +1972,7 @@
(i32.const -1)
)
(i32.add
- (local.get $10)
+ (local.get $11)
(local.get $18)
)
)
@@ -2347,7 +1987,7 @@
)
)
)
- (local.set $10
+ (local.set $11
(local.get $5)
)
(block $label$break$L12
@@ -2368,20 +2008,20 @@
)
)
(local.set $6
- (local.get $10)
+ (local.get $11)
)
(br $__rjti$1)
)
(local.set $6
- (local.get $10)
+ (local.get $11)
)
(br $label$break$L9)
)
(local.set $7
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2401,9 +2041,9 @@
(i32.const 37)
)
)
- (local.set $10
+ (local.set $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2424,7 +2064,7 @@
)
(local.set $7
(i32.sub
- (local.get $10)
+ (local.get $11)
(local.get $5)
)
)
@@ -2451,13 +2091,13 @@
(if
(i32.ne
(local.get $5)
- (local.get $10)
+ (local.get $11)
)
(block
(local.set $5
(local.get $6)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -2468,9 +2108,9 @@
(i32.lt_u
(local.tee $8
(i32.sub
- (local.tee $12
+ (local.tee $9
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(i32.add
(local.get $6)
(i32.const 1)
@@ -2486,14 +2126,14 @@
(block (result i32)
(local.set $6
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(select
(i32.add
(local.get $6)
(i32.const 3)
)
- (local.get $10)
- (local.tee $12
+ (local.get $11)
+ (local.tee $9
(i32.eq
(i32.load8_s offset=2
(local.get $6)
@@ -2509,18 +2149,18 @@
(select
(local.get $8)
(i32.const -1)
- (local.get $12)
+ (local.get $9)
)
)
(select
(i32.const 1)
(local.get $1)
- (local.get $12)
+ (local.get $9)
)
)
(block (result i32)
(local.set $6
- (local.get $12)
+ (local.get $9)
)
(local.set $19
(i32.const -1)
@@ -2533,7 +2173,7 @@
(if (result i32)
(i32.eq
(i32.and
- (local.tee $12
+ (local.tee $9
(i32.shr_s
(i32.shl
(local.get $6)
@@ -2551,9 +2191,9 @@
(local.get $6)
)
(local.set $6
- (local.get $12)
+ (local.get $9)
)
- (local.set $12
+ (local.set $9
(i32.const 0)
)
(loop $while-in4 (result i32)
@@ -2575,11 +2215,11 @@
(local.get $1)
)
(br $label$break$L25
- (local.get $12)
+ (local.get $9)
)
)
)
- (local.set $12
+ (local.set $9
(i32.or
(i32.shl
(i32.const 1)
@@ -2594,7 +2234,7 @@
(i32.const 32)
)
)
- (local.get $12)
+ (local.get $9)
)
)
(br_if $while-in4
@@ -2603,9 +2243,9 @@
(local.tee $6
(local.tee $1
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2620,7 +2260,7 @@
(local.set $6
(local.get $1)
)
- (local.get $12)
+ (local.get $9)
)
)
(i32.const 0)
@@ -2636,17 +2276,17 @@
(i32.const 42)
)
(block $do-once5 (result i32)
- (local.set $10
+ (local.set $11
(block $__rjto$0 (result i32)
(block $__rjti$0
(br_if $__rjti$0
(i32.ge_u
- (local.tee $12
+ (local.tee $9
(i32.sub
(i32.load8_s
(local.tee $6
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2660,7 +2300,7 @@
(br_if $__rjti$0
(i32.ne
(i32.load8_s offset=2
- (local.get $10)
+ (local.get $11)
)
(i32.const 36)
)
@@ -2669,7 +2309,7 @@
(i32.add
(local.get $4)
(i32.shl
- (local.get $12)
+ (local.get $9)
(i32.const 2)
)
)
@@ -2703,7 +2343,7 @@
)
(br $__rjto$0
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 3)
)
)
@@ -2722,10 +2362,10 @@
(local.get $28)
)
(block
- (local.set $12
+ (local.set $9
(local.get $1)
)
- (local.set $10
+ (local.set $11
(local.get $6)
)
(local.set $17
@@ -2738,7 +2378,7 @@
)
(local.set $17
(i32.load
- (local.tee $10
+ (local.tee $11
(i32.and
(i32.add
(i32.load
@@ -2754,7 +2394,7 @@
(i32.store
(local.get $2)
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 4)
)
)
@@ -2764,7 +2404,7 @@
(local.get $6)
)
)
- (local.set $12
+ (local.set $9
(if (result i32)
(i32.lt_s
(local.get $17)
@@ -2804,14 +2444,14 @@
(i32.const 10)
)
(block (result i32)
- (local.set $12
+ (local.set $9
(i32.const 0)
)
(loop $while-in8
(local.set $6
(i32.add
(i32.mul
- (local.get $12)
+ (local.get $9)
(i32.const 10)
)
(local.get $6)
@@ -2819,12 +2459,12 @@
)
(if
(i32.lt_u
- (local.tee $9
+ (local.tee $10
(i32.sub
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2835,11 +2475,11 @@
(i32.const 10)
)
(block
- (local.set $12
+ (local.set $9
(local.get $6)
)
(local.set $6
- (local.get $9)
+ (local.get $10)
)
(br $while-in8)
)
@@ -2857,7 +2497,7 @@
(br $label$break$L1)
)
(block (result i32)
- (local.set $12
+ (local.set $9
(local.get $1)
)
(local.set $17
@@ -2868,7 +2508,7 @@
)
)
(block (result i32)
- (local.set $12
+ (local.set $9
(local.get $1)
)
(local.set $17
@@ -2883,7 +2523,7 @@
(if (result i32)
(i32.eq
(i32.load8_s
- (local.get $10)
+ (local.get $11)
)
(i32.const 46)
)
@@ -2894,7 +2534,7 @@
(i32.load8_s
(local.tee $6
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2906,7 +2546,7 @@
(local.set $6
(if (result i32)
(i32.lt_u
- (local.tee $9
+ (local.tee $10
(i32.sub
(local.get $8)
(i32.const 48)
@@ -2915,16 +2555,16 @@
(i32.const 10)
)
(block (result i32)
- (local.set $10
+ (local.set $11
(local.get $6)
)
(local.set $8
(i32.const 0)
)
- (local.get $9)
+ (local.get $10)
)
(block
- (local.set $10
+ (local.set $11
(local.get $6)
)
(br $label$break$L46
@@ -2949,9 +2589,9 @@
(local.tee $6
(i32.sub
(i32.load8_s
- (local.tee $10
+ (local.tee $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 1)
)
)
@@ -2974,7 +2614,7 @@
(i32.load8_s
(local.tee $6
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 2)
)
)
@@ -2987,7 +2627,7 @@
(if
(i32.eq
(i32.load8_s offset=3
- (local.get $10)
+ (local.get $11)
)
(i32.const 36)
)
@@ -3020,9 +2660,9 @@
)
)
)
- (local.set $10
+ (local.set $11
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 4)
)
)
@@ -3048,7 +2688,7 @@
(block (result i32)
(local.set $8
(i32.load
- (local.tee $10
+ (local.tee $11
(i32.and
(i32.add
(i32.load
@@ -3064,17 +2704,17 @@
(i32.store
(local.get $2)
(i32.add
- (local.get $10)
+ (local.get $11)
(i32.const 4)
)
)
- (local.set $10
+ (local.set $11
(local.get $6)
)
(local.get $8)
)
(block (result i32)
- (local.set $10
+ (local.set $11
(local.get $6)
)
(i32.const 0)
@@ -3085,74 +2725,71 @@
)
)
(local.set $8
- (local.get $10)
+ (local.get $11)
)
- (local.set $9
+ (local.set $10
(i32.const 0)
)
- (local.set $16
- (loop $while-in13 (result i32)
- (if
- (i32.gt_u
- (local.tee $11
- (i32.sub
- (i32.load8_s
- (local.get $8)
- )
- (i32.const 65)
+ (loop $while-in13
+ (if
+ (i32.gt_u
+ (local.tee $12
+ (i32.sub
+ (i32.load8_s
+ (local.get $8)
)
+ (i32.const 65)
)
- (i32.const 57)
- )
- (block
- (local.set $18
- (i32.const -1)
- )
- (br $label$break$L1)
)
+ (i32.const 57)
)
- (local.set $10
- (i32.add
- (local.get $8)
- (i32.const 1)
+ (block
+ (local.set $18
+ (i32.const -1)
)
+ (br $label$break$L1)
)
- (if (result i32)
- (i32.lt_u
- (i32.sub
- (local.tee $11
- (i32.and
- (local.tee $15
- (i32.load8_s
+ )
+ (local.set $11
+ (i32.add
+ (local.get $8)
+ (i32.const 1)
+ )
+ )
+ (if
+ (i32.lt_u
+ (i32.sub
+ (local.tee $12
+ (i32.and
+ (local.tee $15
+ (i32.load8_s
+ (i32.add
(i32.add
- (i32.add
- (i32.mul
- (local.get $9)
- (i32.const 58)
- )
- (i32.const 3611)
+ (i32.mul
+ (local.get $10)
+ (i32.const 58)
)
- (local.get $11)
+ (i32.const 3611)
)
+ (local.get $12)
)
)
- (i32.const 255)
)
+ (i32.const 255)
)
- (i32.const 1)
)
- (i32.const 8)
+ (i32.const 1)
)
- (block
- (local.set $8
- (local.get $10)
- )
- (local.set $9
- (local.get $11)
- )
- (br $while-in13)
+ (i32.const 8)
+ )
+ (block
+ (local.set $8
+ (local.get $11)
)
- (local.get $8)
+ (local.set $10
+ (local.get $12)
+ )
+ (br $while-in13)
)
)
)
@@ -3170,7 +2807,7 @@
(br $label$break$L1)
)
)
- (local.set $8
+ (local.set $16
(i32.gt_s
(local.get $19)
(i32.const -1)
@@ -3187,7 +2824,7 @@
(i32.const 19)
)
(if
- (local.get $8)
+ (local.get $16)
(block
(local.set $18
(i32.const -1)
@@ -3198,7 +2835,7 @@
)
(block
(if
- (local.get $8)
+ (local.get $16)
(block
(i32.store
(i32.add
@@ -3208,11 +2845,11 @@
(i32.const 2)
)
)
- (local.get $11)
+ (local.get $12)
)
- (local.set $11
+ (local.set $15
(i32.load offset=4
- (local.tee $8
+ (local.tee $12
(i32.add
(local.get $3)
(i32.shl
@@ -3226,12 +2863,12 @@
(i32.store
(local.get $13)
(i32.load
- (local.get $8)
+ (local.get $12)
)
)
(i32.store offset=4
(local.get $13)
- (local.get $11)
+ (local.get $15)
)
(br $__rjti$2)
)
@@ -3249,7 +2886,7 @@
)
(call $_pop_arg_336
(local.get $13)
- (local.get $11)
+ (local.get $12)
(local.get $2)
)
)
@@ -3262,26 +2899,26 @@
)
(block
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
)
)
)
- (local.set $12
+ (local.set $9
(select
- (local.tee $8
+ (local.tee $12
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const -65537)
)
)
- (local.get $12)
+ (local.get $9)
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
@@ -3293,9 +2930,9 @@
(select
(local.tee $5
(i32.add
- (local.tee $11
+ (local.tee $12
(select
- (local.tee $16
+ (local.tee $15
(i32.sub
(block $__rjto$8 (result i32)
(block $__rjti$8
@@ -3324,27 +2961,27 @@
(block $switch-case27
(br_table $switch-case42 $switch-default120 $switch-case40 $switch-default120 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case41 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case29 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-default120 $switch-case42 $switch-default120 $switch-case37 $switch-case34 $switch-case42 $switch-case42 $switch-case42 $switch-default120 $switch-case34 $switch-default120 $switch-default120 $switch-default120 $switch-case38 $switch-case27 $switch-case33 $switch-case28 $switch-default120 $switch-default120 $switch-case39 $switch-default120 $switch-case36 $switch-default120 $switch-default120 $switch-case29 $switch-default120
(i32.sub
- (local.tee $16
+ (local.tee $15
(select
(i32.and
- (local.tee $11
+ (local.tee $8
(i32.load8_s
- (local.get $16)
+ (local.get $8)
)
)
(i32.const -33)
)
- (local.get $11)
+ (local.get $8)
(i32.and
(i32.eq
(i32.and
- (local.get $11)
+ (local.get $8)
(i32.const 15)
)
(i32.const 3)
)
(i32.ne
- (local.get $9)
+ (local.get $10)
(i32.const 0)
)
)
@@ -3363,7 +3000,7 @@
(block $switch-case20
(block $switch-case19
(br_table $switch-case19 $switch-case20 $switch-case21 $switch-case22 $switch-case23 $switch-default26 $switch-case24 $switch-case25 $switch-default26
- (local.get $9)
+ (local.get $10)
)
)
(i32.store
@@ -3373,9 +3010,9 @@
(local.get $18)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3387,9 +3024,9 @@
(local.get $18)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3416,9 +3053,9 @@
)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3430,9 +3067,9 @@
(local.get $18)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3444,9 +3081,9 @@
(local.get $18)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3458,9 +3095,9 @@
(local.get $18)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -3487,24 +3124,24 @@
)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
)
(local.set $7
(i32.or
- (local.get $12)
+ (local.get $9)
(i32.const 8)
)
)
@@ -3518,13 +3155,13 @@
)
)
)
- (local.set $16
+ (local.set $15
(i32.const 120)
)
(br $__rjti$3)
)
(local.set $7
- (local.get $12)
+ (local.get $9)
)
(br $__rjti$3)
)
@@ -3583,12 +3220,12 @@
)
(if
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 8)
)
(block
(local.set $7
- (local.get $12)
+ (local.get $9)
)
(local.set $6
(select
@@ -3610,7 +3247,7 @@
)
)
(local.set $7
- (local.get $12)
+ (local.get $9)
)
)
(local.set $5
@@ -3619,7 +3256,7 @@
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjti$8)
@@ -3669,16 +3306,16 @@
(local.set $8
(i32.const 1)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjti$4)
)
)
- (local.set $9
+ (local.set $10
(if (result i32)
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 2048)
)
(block (result i32)
@@ -3689,9 +3326,9 @@
)
(block (result i32)
(local.set $8
- (local.tee $9
+ (local.tee $10
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 1)
)
)
@@ -3699,7 +3336,7 @@
(select
(i32.const 4093)
(i32.const 4091)
- (local.get $9)
+ (local.get $10)
)
)
)
@@ -3719,7 +3356,7 @@
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjti$4)
@@ -3738,16 +3375,16 @@
(local.set $7
(local.get $38)
)
- (local.set $12
- (local.get $8)
+ (local.set $9
+ (local.get $12)
)
- (local.set $11
+ (local.set $12
(i32.const 1)
)
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjto$8
@@ -3755,9 +3392,83 @@
)
)
(local.set $5
- (call $_strerror
- (i32.load
- (call $___errno_location)
+ (i32.load
+ (call $___errno_location)
+ )
+ )
+ (local.set $9
+ (i32.const 0)
+ )
+ (block $__rjto$1
+ (block $__rjti$10
+ (loop $while-in2
+ (if
+ (i32.ne
+ (local.get $5)
+ (i32.load8_u offset=687
+ (local.get $9)
+ )
+ )
+ (block
+ (br_if $while-in2
+ (i32.ne
+ (local.tee $9
+ (i32.add
+ (local.get $9)
+ (i32.const 1)
+ )
+ )
+ (i32.const 87)
+ )
+ )
+ (local.set $9
+ (i32.const 87)
+ )
+ (br $__rjti$10)
+ )
+ )
+ )
+ (br_if $__rjti$10
+ (local.get $9)
+ )
+ (local.set $5
+ (i32.const 775)
+ )
+ (br $__rjto$1)
+ )
+ (local.set $5
+ (i32.const 775)
+ )
+ (loop $while-in1
+ (local.set $5
+ (loop $while-in3 (result i32)
+ (local.set $7
+ (i32.add
+ (local.get $5)
+ (i32.const 1)
+ )
+ )
+ (if (result i32)
+ (i32.load8_s
+ (local.get $5)
+ )
+ (block
+ (local.set $5
+ (local.get $7)
+ )
+ (br $while-in3)
+ )
+ (local.get $7)
+ )
+ )
+ )
+ (br_if $while-in1
+ (local.tee $9
+ (i32.sub
+ (local.get $9)
+ (i32.const 1)
+ )
+ )
)
)
)
@@ -3814,7 +3525,7 @@
(i32.const 32)
(local.get $17)
(i32.const 0)
- (local.get $12)
+ (local.get $9)
)
(br $__rjti$7
(i32.const 0)
@@ -3861,7 +3572,7 @@
)
(if (result i32)
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 2048)
)
(block (result i32)
@@ -3874,7 +3585,7 @@
(local.set $27
(local.tee $5
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 1)
)
)
@@ -3938,23 +3649,23 @@
(i32.eq
(local.tee $26
(i32.or
- (local.get $16)
+ (local.get $15)
(i32.const 32)
)
)
(i32.const 97)
)
(block
- (local.set $9
+ (local.set $10
(select
(i32.add
(local.get $30)
(i32.const 9)
)
(local.get $30)
- (local.tee $15
+ (local.tee $16
(i32.and
- (local.get $16)
+ (local.get $15)
(i32.const 32)
)
)
@@ -4018,7 +3729,7 @@
)
(i32.eq
(i32.load8_s
- (local.get $9)
+ (local.get $10)
)
(i32.const 45)
)
@@ -4026,7 +3737,7 @@
)
)
)
- (local.set $11
+ (local.set $12
(i32.or
(local.get $27)
(i32.const 2)
@@ -4102,11 +3813,11 @@
)
)
(i32.add
- (local.get $16)
+ (local.get $15)
(i32.const 15)
)
)
- (local.set $16
+ (local.set $15
(i32.lt_s
(local.get $6)
(i32.const 1)
@@ -4115,7 +3826,7 @@
(local.set $20
(i32.eqz
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 8)
)
)
@@ -4158,7 +3869,7 @@
(i32.const 4075)
)
)
- (local.get $15)
+ (local.get $16)
)
)
(local.set $14
@@ -4190,7 +3901,7 @@
(i32.and
(local.get $20)
(i32.and
- (local.get $16)
+ (local.get $15)
(f64.eq
(local.get $14)
(f64.const 0)
@@ -4256,10 +3967,10 @@
)
)
)
- (local.get $11)
+ (local.get $12)
)
)
- (local.get $12)
+ (local.get $9)
)
(if
(i32.eqz
@@ -4272,8 +3983,8 @@
)
(drop
(call $___fwritex
- (local.get $9)
- (local.get $11)
+ (local.get $10)
+ (local.get $12)
(local.get $0)
)
)
@@ -4284,7 +3995,7 @@
(local.get $17)
(local.get $7)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 65536)
)
)
@@ -4352,7 +4063,7 @@
(local.get $17)
(local.get $7)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
@@ -4465,7 +4176,7 @@
)
(if
(i32.gt_s
- (local.tee $9
+ (local.tee $10
(i32.load
(local.get $21)
)
@@ -4477,19 +4188,19 @@
(local.get $8)
)
(loop $while-in62
- (local.set $15
+ (local.set $16
(select
(i32.const 29)
- (local.get $9)
+ (local.get $10)
(i32.gt_s
- (local.get $9)
+ (local.get $10)
(i32.const 29)
)
)
)
(if
(i32.ge_u
- (local.tee $9
+ (local.tee $10
(i32.sub
(local.get $7)
(i32.const 4)
@@ -4498,12 +4209,12 @@
(local.get $5)
)
(block $do-once63
- (local.set $11
+ (local.set $12
(i32.const 0)
)
(loop $while-in66
(i32.store
- (local.get $9)
+ (local.get $10)
(call $___uremdi3
(block (result i32)
(global.set $tempRet0
@@ -4512,15 +4223,15 @@
(local.tee $20
(call $_bitshift64Shl
(i32.load
- (local.get $9)
+ (local.get $10)
)
(i32.const 0)
- (local.get $15)
+ (local.get $16)
)
)
- (local.tee $11
+ (local.tee $12
(i32.add
- (local.get $11)
+ (local.get $12)
(local.get $20)
)
)
@@ -4528,7 +4239,7 @@
(global.get $tempRet0)
)
)
- (local.get $11)
+ (local.get $12)
)
(local.tee $20
(global.get $tempRet0)
@@ -4537,9 +4248,9 @@
(i32.const 0)
)
)
- (local.set $11
+ (local.set $12
(call $___udivdi3
- (local.get $11)
+ (local.get $12)
(local.get $20)
(i32.const 1000000000)
(i32.const 0)
@@ -4547,9 +4258,9 @@
)
(br_if $while-in66
(i32.ge_u
- (local.tee $9
+ (local.tee $10
(i32.sub
- (local.get $9)
+ (local.get $10)
(i32.const 4)
)
)
@@ -4559,7 +4270,7 @@
)
(br_if $do-once63
(i32.eqz
- (local.get $11)
+ (local.get $12)
)
)
(i32.store
@@ -4569,7 +4280,7 @@
(i32.const 4)
)
)
- (local.get $11)
+ (local.get $12)
)
)
)
@@ -4582,7 +4293,7 @@
(if
(i32.eqz
(i32.load
- (local.tee $9
+ (local.tee $10
(i32.sub
(local.get $7)
(i32.const 4)
@@ -4592,7 +4303,7 @@
)
(block
(local.set $7
- (local.get $9)
+ (local.get $10)
)
(br $while-in68)
)
@@ -4601,18 +4312,18 @@
)
(i32.store
(local.get $21)
- (local.tee $9
+ (local.tee $10
(i32.sub
(i32.load
(local.get $21)
)
- (local.get $15)
+ (local.get $16)
)
)
)
(br_if $while-in62
(i32.gt_s
- (local.get $9)
+ (local.get $10)
(i32.const 0)
)
)
@@ -4634,7 +4345,7 @@
)
(if
(i32.lt_s
- (local.get $9)
+ (local.get $10)
(i32.const 0)
)
(block
@@ -4664,13 +4375,13 @@
)
(local.set $5
(loop $while-in70 (result i32)
- (local.set $15
+ (local.set $16
(select
(i32.const 9)
(local.tee $7
(i32.sub
(i32.const 0)
- (local.get $9)
+ (local.get $10)
)
)
(i32.gt_s
@@ -4685,11 +4396,11 @@
(local.get $6)
)
(block $do-once71
- (local.set $11
+ (local.set $12
(i32.sub
(i32.shl
(i32.const 1)
- (local.get $15)
+ (local.get $16)
)
(i32.const 1)
)
@@ -4697,10 +4408,10 @@
(local.set $35
(i32.shr_u
(i32.const 1000000000)
- (local.get $15)
+ (local.get $16)
)
)
- (local.set $9
+ (local.set $10
(i32.const 0)
)
(local.set $7
@@ -4710,22 +4421,22 @@
(i32.store
(local.get $7)
(i32.add
- (local.get $9)
+ (local.get $10)
(i32.shr_u
- (local.tee $9
+ (local.tee $10
(i32.load
(local.get $7)
)
)
- (local.get $15)
+ (local.get $16)
)
)
)
- (local.set $9
+ (local.set $10
(i32.mul
(i32.and
- (local.get $9)
- (local.get $11)
+ (local.get $10)
+ (local.get $12)
)
(local.get $35)
)
@@ -4756,12 +4467,12 @@
)
(br_if $do-once71
(i32.eqz
- (local.get $9)
+ (local.get $10)
)
)
(i32.store
(local.get $5)
- (local.get $9)
+ (local.get $10)
)
(local.set $5
(i32.add
@@ -4783,7 +4494,7 @@
)
)
)
- (local.set $11
+ (local.set $12
(select
(i32.add
(local.tee $6
@@ -4813,18 +4524,18 @@
)
(i32.store
(local.get $21)
- (local.tee $9
+ (local.tee $10
(i32.add
(i32.load
(local.get $21)
)
- (local.get $15)
+ (local.get $16)
)
)
)
(if (result i32)
(i32.lt_s
- (local.get $9)
+ (local.get $10)
(i32.const 0)
)
(block
@@ -4832,13 +4543,13 @@
(local.get $7)
)
(local.set $5
- (local.get $11)
+ (local.get $12)
)
(br $while-in70)
)
(block (result i32)
- (local.set $9
- (local.get $11)
+ (local.set $10
+ (local.get $12)
)
(local.get $7)
)
@@ -4846,7 +4557,7 @@
)
)
)
- (local.set $9
+ (local.set $10
(local.get $7)
)
)
@@ -4856,7 +4567,7 @@
(if
(i32.lt_u
(local.get $5)
- (local.get $9)
+ (local.get $10)
)
(block $do-once75
(local.set $7
@@ -4950,7 +4661,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (local.get $9)
+ (local.get $10)
(local.get $20)
)
(i32.const 2)
@@ -4986,13 +4697,13 @@
(i32.const 9)
)
(block
- (local.set $11
+ (local.set $12
(i32.const 10)
)
(loop $while-in80
- (local.set $11
+ (local.set $12
(i32.mul
- (local.get $11)
+ (local.get $12)
(i32.const 10)
)
)
@@ -5009,11 +4720,11 @@
)
)
)
- (local.set $11
+ (local.set $12
(i32.const 10)
)
)
- (local.set $15
+ (local.set $16
(local.tee $8
(i32.load
(local.tee $6
@@ -5031,12 +4742,12 @@
)
)
)
- (local.set $15
+ (local.set $16
(if (result i32)
- (local.get $11)
+ (local.get $12)
(i32.rem_u
- (local.get $15)
- (local.get $11)
+ (local.get $16)
+ (local.get $12)
)
(i32.const 0)
)
@@ -5050,21 +4761,21 @@
(local.get $6)
(i32.const 4)
)
- (local.get $9)
+ (local.get $10)
)
)
(i32.eqz
- (local.get $15)
+ (local.get $16)
)
)
)
(block $do-once81
(local.set $36
(if (result i32)
- (local.get $11)
+ (local.get $12)
(i32.div_u
(local.get $8)
- (local.get $11)
+ (local.get $12)
)
(i32.const 0)
)
@@ -5072,10 +4783,10 @@
(local.set $14
(if (result f64)
(i32.lt_u
- (local.get $15)
+ (local.get $16)
(local.tee $48
(i32.div_s
- (local.get $11)
+ (local.get $12)
(i32.const 2)
)
)
@@ -5087,7 +4798,7 @@
(i32.and
(local.get $26)
(i32.eq
- (local.get $15)
+ (local.get $16)
(local.get $48)
)
)
@@ -5132,7 +4843,7 @@
(local.tee $8
(i32.sub
(local.get $8)
- (local.get $15)
+ (local.get $16)
)
)
)
@@ -5150,7 +4861,7 @@
(local.tee $7
(i32.add
(local.get $8)
- (local.get $11)
+ (local.get $12)
)
)
)
@@ -5225,7 +4936,7 @@
(i32.const 10)
)
)
- (local.set $11
+ (local.set $12
(i32.const 10)
)
(loop $while-in88
@@ -5238,9 +4949,9 @@
(br_if $while-in88
(i32.ge_u
(local.get $8)
- (local.tee $11
+ (local.tee $12
(i32.mul
- (local.get $11)
+ (local.get $12)
(i32.const 10)
)
)
@@ -5249,7 +4960,7 @@
)
)
)
- (local.set $11
+ (local.set $12
(local.get $5)
)
(local.set $8
@@ -5262,21 +4973,21 @@
(i32.const 4)
)
)
- (local.get $9)
+ (local.get $10)
(i32.lt_u
(local.get $5)
- (local.get $9)
+ (local.get $10)
)
)
)
(block (result i32)
- (local.set $11
+ (local.set $12
(local.get $5)
)
(local.set $8
(local.get $7)
)
- (local.get $9)
+ (local.get $10)
)
)
)
@@ -5286,13 +4997,13 @@
(local.get $8)
)
)
- (local.set $9
+ (local.set $10
(loop $while-in90 (result i32)
(block $while-out89 (result i32)
(if
(i32.le_u
(local.get $5)
- (local.get $11)
+ (local.get $12)
)
(block
(local.set $26
@@ -5371,7 +5082,7 @@
)
)
(i32.sub
- (local.get $16)
+ (local.get $15)
(i32.const 1)
)
)
@@ -5383,7 +5094,7 @@
)
)
(i32.sub
- (local.get $16)
+ (local.get $15)
(i32.const 2)
)
)
@@ -5392,9 +5103,9 @@
(drop
(br_if $do-once91
(local.get $19)
- (local.tee $15
+ (local.tee $16
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 8)
)
)
@@ -5405,10 +5116,10 @@
(block $do-once93
(if
(i32.eqz
- (local.tee $16
+ (local.tee $15
(i32.load
(i32.sub
- (local.get $9)
+ (local.get $10)
(i32.const 4)
)
)
@@ -5424,7 +5135,7 @@
(local.set $5
(if (result i32)
(i32.rem_u
- (local.get $16)
+ (local.get $15)
(i32.const 10)
)
(block
@@ -5451,7 +5162,7 @@
(br_if $while-in96
(i32.eqz
(if (result i32)
- (local.tee $15
+ (local.tee $16
(local.tee $6
(i32.mul
(local.get $6)
@@ -5460,8 +5171,8 @@
)
)
(i32.rem_u
- (local.get $16)
(local.get $15)
+ (local.get $16)
)
(i32.const 0)
)
@@ -5478,7 +5189,7 @@
(i32.mul
(i32.shr_s
(i32.sub
- (local.get $9)
+ (local.get $10)
(local.get $20)
)
(i32.const 2)
@@ -5497,7 +5208,7 @@
(i32.const 102)
)
(block (result i32)
- (local.set $15
+ (local.set $16
(i32.const 0)
)
(select
@@ -5524,7 +5235,7 @@
)
)
(block (result i32)
- (local.set $15
+ (local.set $16
(i32.const 0)
)
(select
@@ -5556,14 +5267,14 @@
)
)
(block (result i32)
- (local.set $15
+ (local.set $16
(i32.and
- (local.get $12)
+ (local.get $9)
(i32.const 8)
)
)
(local.set $7
- (local.get $16)
+ (local.get $15)
)
(local.get $19)
)
@@ -5578,7 +5289,7 @@
(local.tee $19
(i32.or
(local.get $5)
- (local.get $15)
+ (local.get $16)
)
)
(i32.const 0)
@@ -5595,7 +5306,7 @@
)
)
(block (result i32)
- (local.set $16
+ (local.set $15
(i32.const 0)
)
(select
@@ -5678,7 +5389,7 @@
)
)
(i32.store8
- (local.tee $16
+ (local.tee $15
(i32.sub
(local.get $6)
(i32.const 2)
@@ -5688,13 +5399,13 @@
)
(i32.sub
(local.get $22)
- (local.get $16)
+ (local.get $15)
)
)
)
)
)
- (local.get $12)
+ (local.get $9)
)
(if
(i32.eqz
@@ -5719,7 +5430,7 @@
(local.get $17)
(local.get $8)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 65536)
)
)
@@ -5727,12 +5438,12 @@
(local.get $31)
(block
(local.set $6
- (local.tee $11
+ (local.tee $12
(select
(local.get $20)
- (local.get $11)
+ (local.get $12)
(i32.gt_u
- (local.get $11)
+ (local.get $12)
(local.get $20)
)
)
@@ -5752,7 +5463,7 @@
(if
(i32.eq
(local.get $6)
- (local.get $11)
+ (local.get $12)
)
(block
(br_if $do-once103
@@ -5862,7 +5573,7 @@
(i32.and
(i32.lt_u
(local.get $7)
- (local.get $9)
+ (local.get $10)
)
(i32.gt_s
(local.get $5)
@@ -5940,7 +5651,7 @@
(i32.const 4)
)
)
- (local.get $9)
+ (local.get $10)
)
(i32.gt_s
(local.get $5)
@@ -5967,9 +5678,9 @@
(block $do-once99
(local.set $20
(select
- (local.get $9)
+ (local.get $10)
(i32.add
- (local.get $11)
+ (local.get $12)
(i32.const 4)
)
(local.get $26)
@@ -5985,13 +5696,13 @@
(i32.const -1)
)
(block (result i32)
- (local.set $15
+ (local.set $16
(i32.eqz
- (local.get $15)
+ (local.get $16)
)
)
(local.set $6
- (local.get $11)
+ (local.get $12)
)
(local.set $7
(local.get $5)
@@ -6024,7 +5735,7 @@
(if
(i32.eq
(local.get $6)
- (local.get $11)
+ (local.get $12)
)
(block
(if
@@ -6052,7 +5763,7 @@
)
(br_if $do-once115
(i32.and
- (local.get $15)
+ (local.get $16)
(i32.lt_s
(local.get $7)
(i32.const 1)
@@ -6102,7 +5813,7 @@
)
)
)
- (local.set $9
+ (local.set $10
(i32.sub
(local.get $41)
(local.get $5)
@@ -6121,11 +5832,11 @@
(call $___fwritex
(local.get $5)
(select
- (local.get $9)
+ (local.get $10)
(local.get $7)
(i32.gt_s
(local.get $7)
- (local.get $9)
+ (local.get $10)
)
)
(local.get $0)
@@ -6147,7 +5858,7 @@
(local.tee $7
(i32.sub
(local.get $7)
- (local.get $9)
+ (local.get $10)
)
)
(i32.const -1)
@@ -6174,10 +5885,10 @@
)
(drop
(call $___fwritex
- (local.get $16)
+ (local.get $15)
(i32.sub
(local.get $22)
- (local.get $16)
+ (local.get $15)
)
(local.get $0)
)
@@ -6190,7 +5901,7 @@
(local.get $17)
(local.get $8)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
@@ -6210,7 +5921,7 @@
(local.get $17)
(local.tee $7
(i32.add
- (local.tee $9
+ (local.tee $8
(select
(i32.const 0)
(local.get $27)
@@ -6225,7 +5936,33 @@
(i32.const 3)
)
)
- (local.get $8)
+ (local.get $12)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $5
+ (i32.load
+ (local.get $0)
+ )
+ )
+ (i32.const 32)
+ )
+ )
+ (block
+ (drop
+ (call $___fwritex
+ (local.get $30)
+ (local.get $8)
+ (local.get $0)
+ )
+ )
+ (local.set $5
+ (i32.load
+ (local.get $0)
+ )
+ )
+ )
)
(local.set $6
(select
@@ -6235,7 +5972,7 @@
(local.tee $8
(i32.ne
(i32.and
- (local.get $16)
+ (local.get $15)
(i32.const 32)
)
(i32.const 0)
@@ -6253,29 +5990,7 @@
(if
(i32.eqz
(i32.and
- (if (result i32)
- (i32.and
- (local.tee $5
- (i32.load
- (local.get $0)
- )
- )
- (i32.const 32)
- )
- (local.get $5)
- (block (result i32)
- (drop
- (call $___fwritex
- (local.get $30)
- (local.get $9)
- (local.get $0)
- )
- )
- (i32.load
- (local.get $0)
- )
- )
- )
+ (local.get $5)
(i32.const 32)
)
)
@@ -6293,7 +6008,7 @@
(local.get $17)
(local.get $7)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
@@ -6309,9 +6024,9 @@
)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $7)
)
(br $label$continue$L1)
@@ -6319,22 +6034,22 @@
(local.set $7
(local.get $5)
)
- (local.set $11
+ (local.set $12
(local.get $6)
)
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjto$8
(local.get $25)
)
)
- (local.set $9
+ (local.set $10
(i32.and
- (local.get $16)
+ (local.get $15)
(i32.const 32)
)
)
@@ -6345,7 +6060,7 @@
(local.get $13)
)
)
- (local.tee $12
+ (local.tee $9
(i32.load offset=4
(local.get $13)
)
@@ -6374,7 +6089,7 @@
(i32.const 4075)
)
)
- (local.get $9)
+ (local.get $10)
)
)
(br_if $while-in123
@@ -6382,11 +6097,11 @@
(local.tee $5
(call $_bitshift64Lshr
(local.get $5)
- (local.get $12)
+ (local.get $9)
(i32.const 4)
)
)
- (local.tee $12
+ (local.tee $9
(global.get $tempRet0)
)
)
@@ -6415,16 +6130,16 @@
)
)
(block (result i32)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(i32.const 0)
)
(block (result i32)
- (local.set $9
+ (local.set $10
(i32.add
(i32.shr_s
- (local.get $16)
+ (local.get $15)
(i32.const 4)
)
(i32.const 4091)
@@ -6442,7 +6157,7 @@
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
)
@@ -6457,40 +6172,222 @@
)
)
(local.set $7
- (local.get $12)
+ (local.get $9)
)
(br $__rjti$8)
)
- (local.set $15
+ (block $label$break$L8
+ (block $__rjti$29
+ (if
+ (i32.and
+ (local.tee $10
+ (i32.ne
+ (local.tee $7
+ (local.get $6)
+ )
+ (i32.const 0)
+ )
+ )
+ (i32.ne
+ (i32.and
+ (local.tee $9
+ (local.get $5)
+ )
+ (i32.const 3)
+ )
+ (i32.const 0)
+ )
+ )
+ (block
+ (local.set $8
+ (local.get $9)
+ )
+ (loop $while-in12
+ (br_if $__rjti$29
+ (i32.eqz
+ (i32.load8_u
+ (local.get $8)
+ )
+ )
+ )
+ (br_if $while-in12
+ (i32.and
+ (local.tee $9
+ (i32.ne
+ (local.tee $7
+ (i32.sub
+ (local.get $7)
+ (i32.const 1)
+ )
+ )
+ (i32.const 0)
+ )
+ )
+ (i32.ne
+ (i32.and
+ (local.tee $8
+ (i32.add
+ (local.get $8)
+ (i32.const 1)
+ )
+ )
+ (i32.const 3)
+ )
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ )
+ (block
+ (local.set $8
+ (local.get $9)
+ )
+ (local.set $9
+ (local.get $10)
+ )
+ )
+ )
+ (br_if $__rjti$29
+ (local.get $9)
+ )
+ (local.set $9
+ (i32.const 0)
+ )
+ (br $label$break$L8)
+ )
+ (local.set $9
+ (local.get $7)
+ )
+ (if
+ (i32.load8_u
+ (local.get $8)
+ )
+ (block
+ (block $__rjto$013
+ (block $__rjti$014
+ (br_if $__rjti$014
+ (i32.le_u
+ (local.get $9)
+ (i32.const 3)
+ )
+ )
+ (loop $while-in315
+ (if
+ (i32.eqz
+ (i32.and
+ (i32.xor
+ (i32.and
+ (local.tee $7
+ (i32.load
+ (local.get $8)
+ )
+ )
+ (i32.const -2139062144)
+ )
+ (i32.const -2139062144)
+ )
+ (i32.sub
+ (local.get $7)
+ (i32.const 16843009)
+ )
+ )
+ )
+ (block
+ (local.set $8
+ (i32.add
+ (local.get $8)
+ (i32.const 4)
+ )
+ )
+ (br_if $while-in315
+ (i32.gt_u
+ (local.tee $9
+ (i32.sub
+ (local.get $9)
+ (i32.const 4)
+ )
+ )
+ (i32.const 3)
+ )
+ )
+ (br $__rjti$014)
+ )
+ )
+ )
+ (br $__rjto$013)
+ )
+ (if
+ (i32.eqz
+ (local.get $9)
+ )
+ (block
+ (local.set $9
+ (i32.const 0)
+ )
+ (br $label$break$L8)
+ )
+ )
+ )
+ (local.set $9
+ (loop $while-in5 (result i32)
+ (br_if $label$break$L8
+ (i32.eqz
+ (i32.load8_u
+ (local.get $8)
+ )
+ )
+ )
+ (local.set $8
+ (i32.add
+ (local.get $8)
+ (i32.const 1)
+ )
+ )
+ (br_if $while-in5
+ (local.tee $9
+ (i32.sub
+ (local.get $9)
+ (i32.const 1)
+ )
+ )
+ )
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ )
+ (local.set $16
(i32.eqz
- (local.tee $16
- (call $_memchr
- (local.get $5)
+ (local.tee $15
+ (select
+ (local.get $8)
(i32.const 0)
- (local.get $6)
+ (local.get $9)
)
)
)
)
- (local.set $12
- (local.get $8)
+ (local.set $9
+ (local.get $12)
)
- (local.set $11
+ (local.set $12
(select
(local.get $6)
(i32.sub
- (local.get $16)
+ (local.get $15)
(local.tee $7
(local.get $5)
)
)
- (local.get $15)
+ (local.get $16)
)
)
(local.set $8
(i32.const 0)
)
- (local.set $9
+ (local.set $10
(i32.const 4091)
)
(br $__rjto$8
@@ -6499,8 +6396,8 @@
(local.get $5)
(local.get $6)
)
- (local.get $16)
(local.get $15)
+ (local.get $16)
)
)
)
@@ -6519,7 +6416,7 @@
(block $while-out124
(br_if $while-out124
(i32.eqz
- (local.tee $9
+ (local.tee $10
(i32.load
(local.get $6)
)
@@ -6532,7 +6429,7 @@
(local.tee $7
(call $_wctomb
(local.get $33)
- (local.get $9)
+ (local.get $10)
)
)
(i32.const 0)
@@ -6582,7 +6479,7 @@
(i32.const 32)
(local.get $17)
(local.get $5)
- (local.get $12)
+ (local.get $9)
)
(if (result i32)
(local.get $5)
@@ -6664,14 +6561,14 @@
)
)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(select
(local.get $17)
(local.get $7)
@@ -6683,7 +6580,7 @@
)
(br $label$continue$L1)
)
- (local.set $12
+ (local.set $9
(select
(i32.and
(local.get $7)
@@ -6696,11 +6593,11 @@
)
)
)
- (local.set $11
+ (local.set $12
(if (result i32)
(i32.or
(local.get $6)
- (local.tee $11
+ (local.tee $12
(i32.or
(i32.ne
(i32.load
@@ -6728,7 +6625,7 @@
)
)
(i32.xor
- (local.get $11)
+ (local.get $12)
(i32.const 1)
)
)
@@ -6751,10 +6648,10 @@
(local.get $7)
)
)
- (local.get $11)
+ (local.get $12)
(i32.lt_s
- (local.get $11)
- (local.get $16)
+ (local.get $12)
+ (local.get $15)
)
)
)
@@ -6769,7 +6666,7 @@
)
)
(local.get $5)
- (local.get $12)
+ (local.get $9)
)
(if
(i32.eqz
@@ -6782,7 +6679,7 @@
)
(drop
(call $___fwritex
- (local.get $9)
+ (local.get $10)
(local.get $8)
(local.get $0)
)
@@ -6794,15 +6691,15 @@
(local.get $6)
(local.get $5)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 65536)
)
)
(call $_pad
(local.get $0)
(i32.const 48)
- (local.get $11)
- (local.get $16)
+ (local.get $12)
+ (local.get $15)
(i32.const 0)
)
(if
@@ -6817,7 +6714,7 @@
(drop
(call $___fwritex
(local.get $7)
- (local.get $16)
+ (local.get $15)
(local.get $0)
)
)
@@ -6828,14 +6725,14 @@
(local.get $6)
(local.get $5)
(i32.xor
- (local.get $12)
+ (local.get $9)
(i32.const 8192)
)
)
(local.set $5
- (local.get $10)
+ (local.get $11)
)
- (local.set $10
+ (local.set $11
(local.get $6)
)
(br $label$continue$L1)
diff --git a/test/passes/inlining_optimize-level=3.txt b/test/passes/inlining_optimize-level=3.txt
index 74e1a0a99..c2c4013ab 100644
--- a/test/passes/inlining_optimize-level=3.txt
+++ b/test/passes/inlining_optimize-level=3.txt
@@ -8,45 +8,6 @@
(func $yes (result i32)
(i32.const 1)
)
- (func $no-tooBig (result i32)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (nop)
- (i32.const 1)
- )
(func $no-loops-but-one-use-but-exported (result i32)
(loop $loop-in (result i32)
(i32.const 1)
@@ -66,7 +27,49 @@
)
)
(drop
- (call $no-tooBig)
+ (block (result i32)
+ (block $__inlined_func$yes-big-but-single-use (result i32)
+ (block (result i32)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (i32.const 1)
+ )
+ )
+ )
)
(drop
(block (result i32)
diff --git a/test/passes/inlining_optimize-level=3.wast b/test/passes/inlining_optimize-level=3.wast
index 9ed44e30a..ba976e56a 100644
--- a/test/passes/inlining_optimize-level=3.wast
+++ b/test/passes/inlining_optimize-level=3.wast
@@ -7,7 +7,7 @@
(func $yes (result i32) ;; inlinable: small, lightweight, even with multi uses and a global use, ok when opt-level=3
(i32.const 1)
)
- (func $no-tooBig (result i32)
+ (func $yes-big-but-single-use (result i32)
(nop) (nop) (nop) (nop) (nop) (nop)
(nop) (nop) (nop) (nop) (nop) (nop)
(nop) (nop) (nop) (nop) (nop) (nop)
@@ -44,7 +44,7 @@
)
(func $intoHere
(drop (call $yes))
- (drop (call $no-tooBig))
+ (drop (call $yes-big-but-single-use))
(drop (call $no-calls))
(drop (call $no-calls))
(drop (call $yes-calls-but-one-use))
diff --git a/test/wasm2js/conversions-modified.2asm.js.opt b/test/wasm2js/conversions-modified.2asm.js.opt
index 499b78c5b..26480d72b 100644
--- a/test/wasm2js/conversions-modified.2asm.js.opt
+++ b/test/wasm2js/conversions-modified.2asm.js.opt
@@ -66,18 +66,6 @@ function asmFunc(env) {
return ~~$0 >>> 0 | 0;
}
- function $7($0) {
- $0 = Math_fround($0);
- i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0;
- return ~~$0 >>> 0 | 0;
- }
-
- function $9($0) {
- $0 = +$0;
- i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0;
- return ~~$0 >>> 0 | 0;
- }
-
function $11($0) {
$0 = $0 | 0;
return Math_fround(Math_fround($0 | 0));
@@ -135,17 +123,15 @@ function asmFunc(env) {
}
function legalstub$7($0) {
- var $1 = 0;
- $1 = $7($0);
+ i64toi32_i32$HIGH_BITS = Math_fround(Math_abs($0)) >= Math_fround(1.0) ? ($0 > Math_fround(0.0) ? ~~Math_fround(Math_min(Math_fround(Math_floor(Math_fround($0 * Math_fround(2.3283064365386963e-10)))), Math_fround(4294967296.0))) >>> 0 : ~~Math_fround(Math_ceil(Math_fround(Math_fround($0 - Math_fround(~~$0 >>> 0 >>> 0)) * Math_fround(2.3283064365386963e-10)))) >>> 0) : 0;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $1;
+ return ~~$0 >>> 0;
}
function legalstub$9($0) {
- var $1 = 0;
- $1 = $9($0);
+ i64toi32_i32$HIGH_BITS = Math_abs($0) >= 1.0 ? ($0 > 0.0 ? ~~Math_min(Math_floor($0 * 2.3283064365386963e-10), 4294967295.0) >>> 0 : ~~Math_ceil(($0 - +(~~$0 >>> 0 >>> 0)) * 2.3283064365386963e-10) >>> 0) : 0;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $1;
+ return ~~$0 >>> 0;
}
function legalstub$12($0, $1) {
diff --git a/test/wasm2js/i64-add-sub.2asm.js.opt b/test/wasm2js/i64-add-sub.2asm.js.opt
index ccbcf0126..62f464829 100644
--- a/test/wasm2js/i64-add-sub.2asm.js.opt
+++ b/test/wasm2js/i64-add-sub.2asm.js.opt
@@ -13,25 +13,15 @@ function asmFunc(env) {
var abort = env.abort;
var nan = NaN;
var infinity = Infinity;
- function $1($0, $1_1, $2, $3, $4, $5) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2 = $2 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- $5 = $5 | 0;
- $1_1 = $1_1 + $3 | 0;
+ function legalstub$1($0, $1, $2, $3, $4, $5) {
+ $1 = $1 + $3 | 0;
$0 = $0 + $2 | 0;
- $1_1 = $2 >>> 0 > $0 >>> 0 ? $1_1 + 1 | 0 : $1_1;
- return ($0 | 0) == ($4 | 0) & ($1_1 | 0) == ($5 | 0);
+ $1 = $2 >>> 0 > $0 >>> 0 ? $1 + 1 | 0 : $1;
+ return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0);
}
- function legalstub$1($0, $1_1, $2, $3, $4, $5) {
- return $1($0, $1_1, $2, $3, $4, $5);
- }
-
- function legalstub$2($0, $1_1, $2, $3, $4, $5) {
- return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1_1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ return ($4 | 0) == ($0 - $2 | 0) & ($5 | 0) == ($1 - (($0 >>> 0 < $2 >>> 0) + $3 | 0) | 0);
}
return {
diff --git a/test/wasm2js/i64-ctz.2asm.js.opt b/test/wasm2js/i64-ctz.2asm.js.opt
index 5fe370d39..fc2e030b9 100644
--- a/test/wasm2js/i64-ctz.2asm.js.opt
+++ b/test/wasm2js/i64-ctz.2asm.js.opt
@@ -17,52 +17,48 @@ function asmFunc(env) {
var setTempRet0 = env.setTempRet0;
var i64toi32_i32$HIGH_BITS = 0;
function legalstub$popcnt64($0, $1) {
- $0 = __wasm_popcnt_i64($0, $1);
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
+ $2 = $1;
+ while (1) {
+ $1 = $3;
+ $5 = $4;
+ if ($0 | $2) {
+ $1 = $0;
+ $0 = $0 - 1 & $0;
+ $2 = $2 - ($1 >>> 0 < 1) & $2;
+ $3 = $3 + 1 | 0;
+ $4 = $3 >>> 0 < 1 ? $4 + 1 | 0 : $4;
+ continue;
+ }
+ break;
+ };
+ i64toi32_i32$HIGH_BITS = $5;
+ $0 = $1;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
return $0;
}
function legalstub$ctz64($0, $1) {
- $0 = __wasm_ctz_i64($0, $1);
- setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $0;
- }
-
- function __wasm_ctz_i64($0, $1) {
- var $2 = 0, $3 = 0;
- if ($0 | $1) {
- $2 = $1 - 1 | 0;
- $3 = $0 - 1 | 0;
- $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2;
- $3 = Math_clz32($0 ^ $3) + 32 | 0;
- $0 = Math_clz32($1 ^ $2);
- $0 = ($0 | 0) == 32 ? $3 : $0;
- $1 = 63 - $0 | 0;
- i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
- return $1;
- }
- i64toi32_i32$HIGH_BITS = 0;
- return 64;
- }
-
- function __wasm_popcnt_i64($0, $1) {
var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
- while (1) {
- $5 = $4;
- $2 = $3;
+ __inlined_func$__wasm_ctz_i64 : {
if ($0 | $1) {
- $2 = $0;
- $0 = $2 - 1 & $2;
- $1 = $1 - ($2 >>> 0 < 1) & $1;
- $2 = $4 + 1 | 0;
- $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3;
+ $2 = $1 - 1 | 0;
+ $3 = $2 + 1 | 0;
$4 = $2;
- continue;
+ $2 = $0 - 1 | 0;
+ $5 = Math_clz32($0 ^ $2) + 32 | 0;
+ $0 = Math_clz32($1 ^ (($2 | 0) != -1 ? $3 : $4));
+ $0 = ($0 | 0) == 32 ? $5 : $0;
+ $1 = 63 - $0 | 0;
+ i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
+ $0 = $1;
+ break __inlined_func$__wasm_ctz_i64;
}
- break;
- };
- i64toi32_i32$HIGH_BITS = $2;
- return $5;
+ i64toi32_i32$HIGH_BITS = 0;
+ $0 = 64;
+ }
+ setTempRet0(i64toi32_i32$HIGH_BITS | 0);
+ return $0;
}
return {
diff --git a/test/wasm2js/i64-rotate.2asm.js.opt b/test/wasm2js/i64-rotate.2asm.js.opt
index b74f97053..ecffd160a 100644
--- a/test/wasm2js/i64-rotate.2asm.js.opt
+++ b/test/wasm2js/i64-rotate.2asm.js.opt
@@ -15,104 +15,100 @@ function asmFunc(env) {
var infinity = Infinity;
var i64toi32_i32$HIGH_BITS = 0;
function legalstub$1($0, $1, $2, $3, $4, $5) {
- return (__wasm_rotl_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function legalstub$2($0, $1, $2, $3, $4, $5) {
- return (__wasm_rotr_i64($0, $1, $2) | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function __wasm_rotl_i64($0, $1, $2) {
- var $3 = 0, $4 = 0, $5 = 0, $6 = 0;
- $6 = $2 & 63;
- $5 = $6;
- $3 = $5 & 31;
- if ($5 >>> 0 >= 32) {
- $3 = -1 >>> $3 | 0
+ var $6 = 0, $7 = 0, $8 = 0;
+ $3 = $0;
+ $8 = $2 & 63;
+ $6 = $8;
+ $0 = $6 & 31;
+ if ($6 >>> 0 >= 32) {
+ $0 = -1 >>> $0 | 0
} else {
- $4 = -1 >>> $3 | 0;
- $3 = (1 << $3) - 1 << 32 - $3 | -1 >>> $3;
+ $7 = -1 >>> $0 | 0;
+ $0 = (1 << $0) - 1 << 32 - $0 | -1 >>> $0;
}
- $5 = $3 & $0;
- $3 = $1 & $4;
- $4 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $3 = $5 << $4;
- $6 = 0;
+ $6 = $0 & $3;
+ $0 = $1 & $7;
+ $7 = $8 & 31;
+ if ($8 >>> 0 >= 32) {
+ $0 = $6 << $7;
+ $8 = 0;
} else {
- $3 = (1 << $4) - 1 & $5 >>> 32 - $4 | $3 << $4;
- $6 = $5 << $4;
+ $0 = (1 << $7) - 1 & $6 >>> 32 - $7 | $0 << $7;
+ $8 = $6 << $7;
}
- $5 = $3;
- $4 = 0 - $2 & 63;
- $3 = $4;
- $2 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $3 = -1 << $2;
+ $7 = $0;
+ $6 = 0 - $2 & 63;
+ $0 = $6;
+ $2 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = -1 << $2;
$2 = 0;
} else {
- $3 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2;
+ $0 = (1 << $2) - 1 & -1 >>> 32 - $2 | -1 << $2;
$2 = -1 << $2;
}
- $0 = $2 & $0;
- $3 = $1 & $3;
- $1 = $4 & 31;
- if ($4 >>> 0 >= 32) {
+ $3 = $2 & $3;
+ $1 = $0 & $1;
+ $0 = $6 & 31;
+ if ($6 >>> 0 >= 32) {
$2 = 0;
- $0 = $3 >>> $1 | 0;
+ $0 = $1 >>> $0 | 0;
} else {
- $2 = $3 >>> $1 | 0;
- $0 = ((1 << $1) - 1 & $3) << 32 - $1 | $0 >>> $1;
+ $2 = $1 >>> $0 | 0;
+ $0 = ((1 << $0) - 1 & $1) << 32 - $0 | $3 >>> $0;
}
- $0 = $0 | $6;
- i64toi32_i32$HIGH_BITS = $2 | $5;
- return $0;
+ $0 = $0 | $8;
+ i64toi32_i32$HIGH_BITS = $2 | $7;
+ return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
- function __wasm_rotr_i64($0, $1, $2) {
- var $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0;
- $6 = $2 & 63;
- $3 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $4 = -1 << $3;
- $7 = 0;
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ var $6 = 0, $7 = 0, $8 = 0, $9 = 0;
+ $3 = $0;
+ $8 = $2 & 63;
+ $0 = $8;
+ $6 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = -1 << $6;
+ $6 = 0;
} else {
- $4 = (1 << $3) - 1 & -1 >>> 32 - $3 | -1 << $3;
- $7 = -1 << $3;
+ $0 = (1 << $6) - 1 & -1 >>> 32 - $6 | -1 << $6;
+ $6 = -1 << $6;
}
- $7 = $7 & $0;
- $3 = $1 & $4;
- $5 = $6 & 31;
- if ($6 >>> 0 >= 32) {
- $4 = 0;
- $6 = $3 >>> $5 | 0;
+ $9 = $6 & $3;
+ $7 = $0 & $1;
+ $6 = $8 & 31;
+ if ($8 >>> 0 >= 32) {
+ $0 = 0;
+ $8 = $7 >>> $6 | 0;
} else {
- $4 = $3 >>> $5 | 0;
- $6 = ((1 << $5) - 1 & $3) << 32 - $5 | $7 >>> $5;
+ $0 = $7 >>> $6 | 0;
+ $8 = ((1 << $6) - 1 & $7) << 32 - $6 | $9 >>> $6;
}
- $7 = $4;
- $3 = 0 - $2 & 63;
- $5 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $4 = 0;
- $2 = -1 >>> $5 | 0;
+ $6 = $0;
+ $7 = 0 - $2 & 63;
+ $0 = $7;
+ $2 = $0 & 31;
+ if ($0 >>> 0 >= 32) {
+ $0 = 0;
+ $2 = -1 >>> $2 | 0;
} else {
- $4 = -1 >>> $5 | 0;
- $2 = (1 << $5) - 1 << 32 - $5 | -1 >>> $5;
+ $0 = -1 >>> $2 | 0;
+ $2 = (1 << $2) - 1 << 32 - $2 | -1 >>> $2;
}
- $0 = $2 & $0;
- $1 = $1 & $4;
- $4 = $3 & 31;
- if ($3 >>> 0 >= 32) {
- $2 = $0 << $4;
+ $2 = $2 & $3;
+ $1 = $0 & $1;
+ $0 = $7 & 31;
+ if ($7 >>> 0 >= 32) {
+ $1 = $2 << $0;
$0 = 0;
} else {
- $2 = (1 << $4) - 1 & $0 >>> 32 - $4 | $1 << $4;
- $0 = $0 << $4;
+ $1 = (1 << $0) - 1 & $2 >>> 32 - $0 | $1 << $0;
+ $0 = $2 << $0;
}
- $0 = $0 | $6;
- i64toi32_i32$HIGH_BITS = $2 | $7;
- return $0;
+ $0 = $0 | $8;
+ i64toi32_i32$HIGH_BITS = $1 | $6;
+ return ($0 | 0) == ($4 | 0) & ($5 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
return {
diff --git a/test/wasm2js/i64-shifts.2asm.js.opt b/test/wasm2js/i64-shifts.2asm.js.opt
index 488263496..3bc6cac10 100644
--- a/test/wasm2js/i64-shifts.2asm.js.opt
+++ b/test/wasm2js/i64-shifts.2asm.js.opt
@@ -13,48 +13,28 @@ function asmFunc(env) {
var abort = env.abort;
var nan = NaN;
var infinity = Infinity;
- function $1($0, $1_1, $2_1, $3, $4) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2_1 = $2_1 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- var $5 = 0;
- $5 = $2_1 & 31;
- if (($2_1 & 63) >>> 0 >= 32) {
- $1_1 = $0 << $5;
+ function legalstub$1($0, $1, $2, $3, $4, $5) {
+ $3 = $2 & 31;
+ if (($2 & 63) >>> 0 >= 32) {
+ $1 = $0 << $3;
$0 = 0;
} else {
- $1_1 = (1 << $5) - 1 & $0 >>> 32 - $5 | $1_1 << $5;
- $0 = $0 << $5;
+ $1 = (1 << $3) - 1 & $0 >>> 32 - $3 | $1 << $3;
+ $0 = $0 << $3;
}
- return ($0 | 0) == ($3 | 0) & ($1_1 | 0) == ($4 | 0);
+ return ($0 | 0) == ($4 | 0) & ($1 | 0) == ($5 | 0);
}
- function $2($0, $1_1, $2_1, $3, $4) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2_1 = $2_1 | 0;
- $3 = $3 | 0;
- $4 = $4 | 0;
- var $5 = 0;
- $5 = $2_1 & 31;
- if (($2_1 & 63) >>> 0 >= 32) {
- $2_1 = $1_1 >> 31;
- $0 = $1_1 >> $5;
+ function legalstub$2($0, $1, $2, $3, $4, $5) {
+ $3 = $2 & 31;
+ if (($2 & 63) >>> 0 >= 32) {
+ $2 = $1 >> 31;
+ $0 = $1 >> $3;
} else {
- $2_1 = $1_1 >> $5;
- $0 = ((1 << $5) - 1 & $1_1) << 32 - $5 | $0 >>> $5;
+ $2 = $1 >> $3;
+ $0 = ((1 << $3) - 1 & $1) << 32 - $3 | $0 >>> $3;
}
- return ($0 | 0) == ($3 | 0) & ($2_1 | 0) == ($4 | 0);
- }
-
- function legalstub$1($0, $1_1, $2_1, $3, $4, $5) {
- return $1($0, $1_1, $2_1, $4, $5);
- }
-
- function legalstub$2($0, $1_1, $2_1, $3, $4, $5) {
- return $2($0, $1_1, $2_1, $4, $5);
+ return ($0 | 0) == ($4 | 0) & ($2 | 0) == ($5 | 0);
}
return {
diff --git a/test/wasm2js/reinterpret.2asm.js.opt b/test/wasm2js/reinterpret.2asm.js.opt
index ffb64c1fa..cc5d4e984 100644
--- a/test/wasm2js/reinterpret.2asm.js.opt
+++ b/test/wasm2js/reinterpret.2asm.js.opt
@@ -48,19 +48,13 @@ function asmFunc(env) {
return ((wasm2js_scratch_store_f32((wasm2js_scratch_store_i32(2, $0), wasm2js_scratch_load_f32())), wasm2js_scratch_load_i32(2)) | 0) == ($0 | 0) | 0;
}
- function $2($0, $1_1) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- var $2_1 = 0;
+ function legalstub$2($0, $1_1) {
+ var $2 = 0;
wasm2js_scratch_store_i32(0, $0 | 0);
wasm2js_scratch_store_i32(1, $1_1 | 0);
wasm2js_scratch_store_f64(+wasm2js_scratch_load_f64());
- $2_1 = wasm2js_scratch_load_i32(1) | 0;
- return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2_1 | 0);
- }
-
- function legalstub$2($0, $1_1) {
- return $2($0, $1_1);
+ $2 = wasm2js_scratch_load_i32(1) | 0;
+ return (wasm2js_scratch_load_i32(0) | 0) == ($0 | 0) & ($1_1 | 0) == ($2 | 0);
}
return {
diff --git a/test/wasm2js/stack-modified.2asm.js.opt b/test/wasm2js/stack-modified.2asm.js.opt
index 60758cce0..f08671743 100644
--- a/test/wasm2js/stack-modified.2asm.js.opt
+++ b/test/wasm2js/stack-modified.2asm.js.opt
@@ -16,47 +16,34 @@ function asmFunc(env) {
var infinity = Infinity;
var setTempRet0 = env.setTempRet0;
var i64toi32_i32$HIGH_BITS = 0;
- function $0($0_1, $1) {
- $0_1 = $0_1 | 0;
- $1 = $1 | 0;
- var $2 = 0, $3 = 0, $4 = 0;
- $2 = $1;
- $3 = 1;
+ function legalstub$0($0, $1) {
+ var $2 = 0, $3 = 0, $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
+ $4 = $1;
+ $2 = 1;
while (1) {
- if ($0_1 | $2) {
- $3 = _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $2, $3, $4);
- $4 = i64toi32_i32$HIGH_BITS;
- $1 = $0_1;
- $0_1 = $0_1 - 1 | 0;
- $2 = $2 - ($1 >>> 0 < 1) | 0;
+ if ($0 | $4) {
+ $1 = $2 >>> 16 | 0;
+ $3 = $0 >>> 16 | 0;
+ $9 = Math_imul($1, $3);
+ $5 = $2 & 65535;
+ $6 = $0 & 65535;
+ $7 = Math_imul($5, $6);
+ $3 = ($7 >>> 16 | 0) + Math_imul($3, $5) | 0;
+ $1 = ($3 & 65535) + Math_imul($1, $6) | 0;
+ i64toi32_i32$HIGH_BITS = (Math_imul($2, $4) + $9 | 0) + Math_imul($0, $8) + ($3 >>> 16) + ($1 >>> 16) | 0;
+ $2 = $7 & 65535 | $1 << 16;
+ $8 = i64toi32_i32$HIGH_BITS;
+ $1 = $0;
+ $0 = $1 - 1 | 0;
+ $4 = $4 - ($1 >>> 0 < 1) | 0;
continue;
}
break;
};
- i64toi32_i32$HIGH_BITS = $4;
- return $3 | 0;
- }
-
- function legalstub$0($0_1, $1) {
- $0_1 = $0($0_1, $1);
+ i64toi32_i32$HIGH_BITS = $8;
+ $0 = $2;
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
- return $0_1;
- }
-
- function _ZN17compiler_builtins3int3mul3Mul3mul17h070e9a1c69faec5bE($0_1, $1, $2, $3) {
- var $4 = 0, $5 = 0, $6 = 0, $7 = 0, $8 = 0, $9 = 0;
- $4 = $2 >>> 16 | 0;
- $5 = $0_1 >>> 16 | 0;
- $9 = Math_imul($4, $5);
- $6 = $2 & 65535;
- $7 = $0_1 & 65535;
- $8 = Math_imul($6, $7);
- $5 = ($8 >>> 16 | 0) + Math_imul($5, $6) | 0;
- $4 = ($5 & 65535) + Math_imul($4, $7) | 0;
- $0_1 = (Math_imul($1, $2) + $9 | 0) + Math_imul($0_1, $3) + ($5 >>> 16) + ($4 >>> 16) | 0;
- $1 = $8 & 65535 | $4 << 16;
- i64toi32_i32$HIGH_BITS = $0_1;
- return $1;
+ return $0;
}
return {
diff --git a/test/wasm2js/unaligned.2asm.js.opt b/test/wasm2js/unaligned.2asm.js.opt
index e5005fef5..1f0fd6f4c 100644
--- a/test/wasm2js/unaligned.2asm.js.opt
+++ b/test/wasm2js/unaligned.2asm.js.opt
@@ -56,11 +56,6 @@ function asmFunc(env) {
return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
}
- function $1() {
- i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24);
- return HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
- }
-
function $2() {
return Math_fround((wasm2js_scratch_store_i32(2, HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24)), wasm2js_scratch_load_f32()));
}
@@ -92,14 +87,14 @@ function asmFunc(env) {
}
function $7() {
- var $0_1 = 0, $1_1 = 0;
+ var $0_1 = 0, $1 = 0;
wasm2js_scratch_store_f64(0.0);
$0_1 = wasm2js_scratch_load_i32(1) | 0;
- $1_1 = wasm2js_scratch_load_i32(0) | 0;
- HEAP8[0] = $1_1;
- HEAP8[1] = $1_1 >>> 8;
- HEAP8[2] = $1_1 >>> 16;
- HEAP8[3] = $1_1 >>> 24;
+ $1 = wasm2js_scratch_load_i32(0) | 0;
+ HEAP8[0] = $1;
+ HEAP8[1] = $1 >>> 8;
+ HEAP8[2] = $1 >>> 16;
+ HEAP8[3] = $1 >>> 24;
HEAP8[4] = $0_1;
HEAP8[5] = $0_1 >>> 8;
HEAP8[6] = $0_1 >>> 16;
@@ -108,7 +103,8 @@ function asmFunc(env) {
function legalstub$1() {
var $0_1 = 0;
- $0_1 = $1();
+ i64toi32_i32$HIGH_BITS = HEAPU8[4] | HEAPU8[5] << 8 | (HEAPU8[6] << 16 | HEAPU8[7] << 24);
+ $0_1 = HEAPU8[0] | HEAPU8[1] << 8 | (HEAPU8[2] << 16 | HEAPU8[3] << 24);
setTempRet0(i64toi32_i32$HIGH_BITS | 0);
return $0_1;
}
diff --git a/test/wasm2js/unary-ops.2asm.js.opt b/test/wasm2js/unary-ops.2asm.js.opt
index cb37b0099..027c9164d 100644
--- a/test/wasm2js/unary-ops.2asm.js.opt
+++ b/test/wasm2js/unary-ops.2asm.js.opt
@@ -16,7 +16,17 @@ function asmFunc(env) {
var i64toi32_i32$HIGH_BITS = 0;
function $1($0) {
$0 = $0 | 0;
- return __wasm_popcnt_i32($0) | 0;
+ var $1_1 = 0, $2 = 0;
+ while (1) {
+ $2 = $1_1;
+ if ($0) {
+ $0 = $0 - 1 & $0;
+ $1_1 = $1_1 + 1 | 0;
+ continue;
+ }
+ break;
+ };
+ return $2 | 0;
}
function $6($0) {
@@ -34,19 +44,25 @@ function asmFunc(env) {
return $0 | 0;
}
- function $8($0, $1_1, $2, $3) {
- $0 = $0 | 0;
- $1_1 = $1_1 | 0;
- $2 = $2 | 0;
- $3 = $3 | 0;
- var $4 = 0;
- $4 = Math_clz32($0) + 32 | 0;
- $0 = Math_clz32($1_1);
- return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0);
- }
-
function legalstub$2($0, $1_1, $2, $3) {
- return (__wasm_popcnt_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
+ var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0;
+ $7_1 = $2;
+ $4 = $1_1;
+ while (1) {
+ $2 = $5;
+ $1_1 = $6_1;
+ if ($0 | $4) {
+ $1_1 = $0;
+ $0 = $1_1 - 1 & $1_1;
+ $4 = $4 - ($1_1 >>> 0 < 1) & $4;
+ $5 = $5 + 1 | 0;
+ $6_1 = $5 >>> 0 < 1 ? $6_1 + 1 | 0 : $6_1;
+ continue;
+ }
+ break;
+ };
+ i64toi32_i32$HIGH_BITS = $1_1;
+ return ($2 | 0) == ($7_1 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
function legalstub$3($0, $1_1, $2) {
@@ -62,62 +78,31 @@ function asmFunc(env) {
}
function legalstub$8($0, $1_1, $2, $3) {
- return $8($0, $1_1, $2, $3);
+ var $4 = 0;
+ $4 = Math_clz32($0) + 32 | 0;
+ $0 = Math_clz32($1_1);
+ return !$3 & ($2 | 0) == ((($0 | 0) == 32 ? $4 : $0) | 0);
}
function legalstub$9($0, $1_1, $2, $3) {
- return (__wasm_ctz_i64($0, $1_1) | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
- }
-
- function __wasm_ctz_i64($0, $1_1) {
- var $2 = 0, $3 = 0;
- if ($0 | $1_1) {
- $2 = $1_1 - 1 | 0;
- $3 = $0 - 1 | 0;
- $2 = ($3 | 0) != -1 ? $2 + 1 | 0 : $2;
- $3 = Math_clz32($0 ^ $3) + 32 | 0;
- $0 = Math_clz32($1_1 ^ $2);
- $0 = ($0 | 0) == 32 ? $3 : $0;
- $1_1 = 63 - $0 | 0;
- i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
- return $1_1;
- }
- i64toi32_i32$HIGH_BITS = 0;
- return 64;
- }
-
- function __wasm_popcnt_i32($0) {
- var $1_1 = 0, $2 = 0;
- while (1) {
- $2 = $1_1;
- if ($0) {
- $0 = $0 - 1 & $0;
- $1_1 = $1_1 + 1 | 0;
- continue;
- }
- break;
- };
- return $2;
- }
-
- function __wasm_popcnt_i64($0, $1_1) {
- var $2 = 0, $3 = 0, $4 = 0, $5 = 0;
- while (1) {
- $5 = $4;
- $2 = $3;
+ var $4 = 0, $5 = 0, $6_1 = 0, $7_1 = 0;
+ __inlined_func$__wasm_ctz_i64 : {
if ($0 | $1_1) {
- $2 = $0;
- $0 = $2 - 1 & $2;
- $1_1 = $1_1 - ($2 >>> 0 < 1) & $1_1;
- $2 = $4 + 1 | 0;
- $3 = $2 >>> 0 < 1 ? $3 + 1 | 0 : $3;
- $4 = $2;
- continue;
+ $4 = $1_1 - 1 | 0;
+ $5 = $4 + 1 | 0;
+ $6_1 = $4;
+ $4 = $0 - 1 | 0;
+ $7_1 = Math_clz32($0 ^ $4) + 32 | 0;
+ $0 = Math_clz32($1_1 ^ (($4 | 0) != -1 ? $5 : $6_1));
+ $0 = ($0 | 0) == 32 ? $7_1 : $0;
+ $1_1 = 63 - $0 | 0;
+ i64toi32_i32$HIGH_BITS = 0 - ($0 >>> 0 > 63) | 0;
+ break __inlined_func$__wasm_ctz_i64;
}
- break;
- };
- i64toi32_i32$HIGH_BITS = $2;
- return $5;
+ i64toi32_i32$HIGH_BITS = 0;
+ $1_1 = 64;
+ }
+ return ($1_1 | 0) == ($2 | 0) & ($3 | 0) == (i64toi32_i32$HIGH_BITS | 0);
}
return {