Utilize Binaryen's -O4

When specifying -O3 or -Oz, asc now automatically increases the optimize level to 4, then including costly non-LLVM optimizations for blocky code, in turn achieving similar results as an LLVM-based generator.
This commit is contained in:
dcodeIO
2018-06-09 14:05:33 +02:00
parent e9094bbd6f
commit c6ec5e2832
46 changed files with 14240 additions and 16223 deletions

View File

@ -20,125 +20,17 @@
(get_local $0)
)
(func $inlining/test_funcs (; 3 ;) (type $v)
(local $0 i32)
(if
(i32.ne
(block $inlining/func_ii|inlined.0 (result i32)
(drop
(br_if $inlining/func_ii|inlined.0
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 42)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
)
(i32.const 1)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 60)
(i32.const 2)
)
(unreachable)
)
(set_global $~argc
(i32.const 1)
)
(if
(i32.ne
(block $inlining/func_ii|inlined.1 (result i32)
(drop
(br_if $inlining/func_ii|inlined.1
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 41)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
(call_indirect (type $ii)
(i32.const 2)
(i32.const 0)
)
(i32.const 2)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 61)
(i32.const 2)
)
(unreachable)
)
)
(if
(i32.ne
(block $inlining/func_ii|inlined.2 (result i32)
(drop
(br_if $inlining/func_ii|inlined.2
(i32.const 1)
(i32.eq
(tee_local $0
(i32.const 43)
)
(i32.const 42)
)
)
)
(select
(i32.const 2)
(i32.const 3)
(i32.lt_s
(get_local $0)
(i32.const 42)
)
)
)
(i32.const 3)
)
(block
(call $~lib/env/abort
(i32.const 0)
(i32.const 8)
(i32.const 62)
(i32.const 2)
)
(unreachable)
)
)
(if
(block (result i32)
(set_global $~argc
(i32.const 1)
)
(i32.ne
(call_indirect (type $ii)
(i32.const 2)
(i32.const 0)
)
(i32.const 2)
)
)
(block
(call $~lib/env/abort
(i32.const 0)