diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-06-02 20:20:23 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-06-02 20:20:23 -0700 |
commit | f64e1852dc065c17d7c78b43a7cfb7fbe64e3cb4 (patch) | |
tree | 571bf874365e41a50976da0d15604e5d6f1edebb /src/passes/pass.cpp | |
parent | b37bd96ea3345cf7015e9e925e0d33524cd1c3db (diff) | |
parent | e4a81f9ea487441e0c01f399d15026672fdeadf9 (diff) | |
download | binaryen-f64e1852dc065c17d7c78b43a7cfb7fbe64e3cb4.tar.gz binaryen-f64e1852dc065c17d7c78b43a7cfb7fbe64e3cb4.tar.bz2 binaryen-f64e1852dc065c17d7c78b43a7cfb7fbe64e3cb4.zip |
Merge pull request #560 from WebAssembly/func-running
Option to optimize while building modules
Diffstat (limited to 'src/passes/pass.cpp')
-rw-r--r-- | src/passes/pass.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index ca9f477a3..e5bbf5866 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -74,6 +74,25 @@ void PassRunner::addDefaultOptimizationPasses() { add("duplicate-function-elimination"); // optimizations show more functions as duplicate } +void PassRunner::addDefaultFunctionOptimizationPasses() { + add("dce"); + add("remove-unused-brs"); + add("remove-unused-names"); + add("optimize-instructions"); + add("simplify-locals"); + add("vacuum"); // previous pass creates garbage + add("coalesce-locals"); + add("vacuum"); // previous pass creates garbage + add("reorder-locals"); + add("merge-blocks"); + add("optimize-instructions"); + add("vacuum"); // should not be needed, last few passes do not create garbage, but just to be safe +} + +void PassRunner::addDefaultGlobalOptimizationPasses() { + add("duplicate-function-elimination"); +} + void PassRunner::run() { std::chrono::high_resolution_clock::time_point beforeEverything; size_t padding = 0; @@ -108,6 +127,12 @@ void PassRunner::run() { } } +void PassRunner::runFunction(Function* func) { + for (auto pass : passes) { + pass->runFunction(this, wasm, func); + } +} + template<class P> P* PassRunner::getLast() { bool found = false; |