diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-10-18 10:50:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-18 10:50:54 -0700 |
commit | b9698cc7076390ae2bb937537850395ae7bad056 (patch) | |
tree | a7048c7c9b01e57b6c64d1b0e8a06ad103c674da /src/tools/wasm-opt.cpp | |
parent | c3d2775402d74a920577ed317930f3693305354f (diff) | |
download | binaryen-b9698cc7076390ae2bb937537850395ae7bad056.tar.gz binaryen-b9698cc7076390ae2bb937537850395ae7bad056.tar.bz2 binaryen-b9698cc7076390ae2bb937537850395ae7bad056.zip |
Pass options (#788)
* add PassOptions structure, and use it for new -Os param to wasm-opt
Diffstat (limited to 'src/tools/wasm-opt.cpp')
-rw-r--r-- | src/tools/wasm-opt.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/tools/wasm-opt.cpp b/src/tools/wasm-opt.cpp index d6e7d3bd6..aad87726b 100644 --- a/src/tools/wasm-opt.cpp +++ b/src/tools/wasm-opt.cpp @@ -37,6 +37,7 @@ using namespace wasm; int main(int argc, const char* argv[]) { Name entry; std::vector<std::string> passes; + PassOptions passOptions; Options options("wasm-opt", "Optimize .wast files"); options @@ -48,9 +49,22 @@ int main(int argc, const char* argv[]) { }) .add("", "-O", "execute default optimization passes", Options::Arguments::Zero, - [&passes](Options*, const std::string&) { + [&passes, &passOptions](Options*, const std::string&) { + passOptions.setDefaultOptimizationOptions(); passes.push_back("O"); }) + .add("", "-Os", "execute default optimization passes, focusing on code size", + Options::Arguments::Zero, + [&passes, &passOptions](Options*, const std::string&) { + passOptions.setDefaultOptimizationOptions(); + passOptions.shrinkLevel = 1; + passes.push_back("O"); + }) + .add("--shrink-level", "-s", "How much to focus on shrinking code size", + Options::Arguments::One, + [&passOptions](Options* o, const std::string& argument) { + passOptions.shrinkLevel = atoi(argument.c_str()); + }) .add_positional("INFILE", Options::Arguments::One, [](Options* o, const std::string& argument) { o->extra["infile"] = argument; @@ -84,7 +98,7 @@ int main(int argc, const char* argv[]) { if (passes.size() > 0) { if (options.debug) std::cerr << "running passes...\n"; - PassRunner passRunner(&wasm); + PassRunner passRunner(&wasm, passOptions); if (options.debug) passRunner.setDebug(true); for (auto& passName : passes) { if (passName == "O") { |