diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-01-09 10:07:43 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-01-09 10:15:11 -0800 |
commit | c32dc275c594f83e652d419a1452b65a3b628779 (patch) | |
tree | d156c58c3f3c21611bdb1ac2c2c7573c4d360610 | |
parent | c6cefdac99c511bdd05b68f8e2b53a0edb7ff815 (diff) | |
download | binaryen-c32dc275c594f83e652d419a1452b65a3b628779.tar.gz binaryen-c32dc275c594f83e652d419a1452b65a3b628779.tar.bz2 binaryen-c32dc275c594f83e652d419a1452b65a3b628779.zip |
use simplify-locals by default
-rwxr-xr-x | build.sh | 3 | ||||
-rw-r--r-- | src/asm2wasm.h | 1 | ||||
-rw-r--r-- | src/binaryen-shell.cpp | 1 | ||||
-rw-r--r-- | src/passes/SimplifyLocals.cpp | 1 | ||||
-rw-r--r-- | test/emcc_O2_hello_world.fromasm | 1 | ||||
-rw-r--r-- | test/emcc_hello_world.fromasm | 5 | ||||
-rw-r--r-- | test/passes/O.txt | 1 | ||||
-rw-r--r-- | test/two_sides.fromasm | 2 | ||||
-rw-r--r-- | test/unit.fromasm | 1 |
9 files changed, 4 insertions, 12 deletions
@@ -11,7 +11,6 @@ make -j #echo "building s2wasm" #g++ -O2 -std=c++11 src/s2wasm-main.cpp src/support/command-line.cpp src/support/file.cpp src/support/colors.cpp -Isrc/ -o bin/s2wasm echo "building interpreter/js" -em++ -std=c++11 src/wasm-js.cpp src/pass.cpp src/passes/MergeBlocks.cpp src/passes/RemoveUnusedBrs.cpp src/passes/RemoveUnusedNames.cpp src/passes/SimplifyLocals.cpp - src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp src/support/colors.cpp -Isrc/ -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2 +em++ -std=c++11 src/wasm-js.cpp src/pass.cpp src/passes/MergeBlocks.cpp src/passes/RemoveUnusedBrs.cpp src/passes/RemoveUnusedNames.cpp src/passes/SimplifyLocals.cpp src/emscripten-optimizer/parser.cpp src/emscripten-optimizer/simple_ast.cpp src/emscripten-optimizer/optimizer-shared.cpp src/support/colors.cpp -Isrc/ -o bin/wasm.js -s MODULARIZE=1 -s 'EXPORT_NAME="WasmJS"' --memory-init-file 0 -Oz -s ALLOW_MEMORY_GROWTH=1 -profiling -s DEMANGLE_SUPPORT=1 #-DWASM_JS_DEBUG -DWASM_INTERPRETER_DEBUG=2 cat src/js/wasm.js-post.js >> bin/wasm.js diff --git a/src/asm2wasm.h b/src/asm2wasm.h index 0320b7924..db7cc1ae0 100644 --- a/src/asm2wasm.h +++ b/src/asm2wasm.h @@ -1574,6 +1574,7 @@ void Asm2WasmBuilder::optimize() { passRunner.add("remove-unused-brs"); passRunner.add("remove-unused-names"); passRunner.add("merge-blocks"); + passRunner.add("simplify-locals"); passRunner.run(&wasm); } diff --git a/src/binaryen-shell.cpp b/src/binaryen-shell.cpp index 95cf3abef..55beb6aa8 100644 --- a/src/binaryen-shell.cpp +++ b/src/binaryen-shell.cpp @@ -210,6 +210,7 @@ int main(int argc, char **argv) { passes.push_back("remove-unused-brs"); passes.push_back("remove-unused-names"); passes.push_back("merge-blocks"); + passes.push_back("simplify-locals"); } else { // otherwise, assumed to be a pass const char* name = curr + 1; diff --git a/src/passes/SimplifyLocals.cpp b/src/passes/SimplifyLocals.cpp index 232c5e2a9..b1adf5c26 100644 --- a/src/passes/SimplifyLocals.cpp +++ b/src/passes/SimplifyLocals.cpp @@ -26,6 +26,7 @@ namespace wasm { struct SimplifyLocals : public Pass { void visitBlock(Block *curr) override { // look for pairs of setlocal-getlocal, which can be just a setlocal (since it returns a value) + if (curr->list.size() == 0) return; for (size_t i = 0; i < curr->list.size() - 1; i++) { auto set = curr->list[i]->dyn_cast<SetLocal>(); if (!set) continue; diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm index e056b0c05..ac4c031cc 100644 --- a/test/emcc_O2_hello_world.fromasm +++ b/test/emcc_O2_hello_world.fromasm @@ -7047,7 +7047,6 @@ (set_local $i13 (i32.const 0) ) - (get_local $i13) ) ) (func $_free (param $i1 i32) diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm index 1ced56e05..3b0331011 100644 --- a/test/emcc_hello_world.fromasm +++ b/test/emcc_hello_world.fromasm @@ -553,7 +553,6 @@ (get_local $$e) ) ) - (get_local $$call) ) (func $_strerror (param $$e i32) (result i32) (local $$0 i32) @@ -4400,7 +4399,6 @@ (i32.const 0) ) ) - (get_local $$cond) ) (func $___syscall_ret (param $$r i32) (result i32) (local $$call i32) @@ -27059,7 +27057,6 @@ (set_local $$retval$0 (i32.const 0) ) - (get_local $$retval$0) ) ) (func $_free (param $$mem i32) @@ -31321,7 +31318,6 @@ (get_local $$7$1) ) ) - (get_local $$10$0) ) (func $___remdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$rem i32) @@ -31587,7 +31583,6 @@ (i32.const 0) ) ) - (get_local $$1$0) ) (func $___uremdi3 (param $$a$0 i32) (param $$a$1 i32) (param $$b$0 i32) (param $$b$1 i32) (result i32) (local $$rem i32) diff --git a/test/passes/O.txt b/test/passes/O.txt index e2555d435..dec081fd4 100644 --- a/test/passes/O.txt +++ b/test/passes/O.txt @@ -6792,7 +6792,6 @@ (set_local $i37 (i32.const 0) ) - (get_local $i37) ) ) (func $_printf_core (param $i50 i32) (param $i3 i32) (param $i51 i32) (param $i52 i32) (param $i53 i32) (result i32) diff --git a/test/two_sides.fromasm b/test/two_sides.fromasm index aff27f665..a9b154e61 100644 --- a/test/two_sides.fromasm +++ b/test/two_sides.fromasm @@ -39,7 +39,6 @@ (get_local $d6) ) ) - (get_local $i5) ) (block (set_local $d6 @@ -71,7 +70,6 @@ (get_local $d6) ) ) - (get_local $i5) ) ) ) diff --git a/test/unit.fromasm b/test/unit.fromasm index 0eb3bcce4..98978436c 100644 --- a/test/unit.fromasm +++ b/test/unit.fromasm @@ -263,7 +263,6 @@ (i32.const -1) ) ) - (get_local $x) ) (func $fr (param $x f32) (local $y f32) |