summaryrefslogtreecommitdiff
path: root/src/tools/wasm-opt.cpp
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-10-18 10:50:54 -0700
committerGitHub <noreply@github.com>2016-10-18 10:50:54 -0700
commitb9698cc7076390ae2bb937537850395ae7bad056 (patch)
treea7048c7c9b01e57b6c64d1b0e8a06ad103c674da /src/tools/wasm-opt.cpp
parentc3d2775402d74a920577ed317930f3693305354f (diff)
downloadbinaryen-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.cpp18
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") {