summaryrefslogtreecommitdiff
path: root/src/tools/wasm-ctor-eval.cpp
diff options
context:
space:
mode:
authorThomas Lively <7121787+tlively@users.noreply.github.com>2019-04-08 15:49:26 -0700
committerGitHub <noreply@github.com>2019-04-08 15:49:26 -0700
commitc5ad2e5ecc517030aa242c18fd738b9d79f11429 (patch)
tree7b12d8c5896d5a0d1806efefc9abc5267e5f99eb /src/tools/wasm-ctor-eval.cpp
parent3eb9b27246d5d021d68b9a854c064d5a537728dd (diff)
downloadbinaryen-c5ad2e5ecc517030aa242c18fd738b9d79f11429.tar.gz
binaryen-c5ad2e5ecc517030aa242c18fd738b9d79f11429.tar.bz2
binaryen-c5ad2e5ecc517030aa242c18fd738b9d79f11429.zip
Move segment merging to fit web limits into its own pass (#1980)
It was previously part of writing a binary, but changing the number of segments at such a late stage would not work in the presence of bulk memory's datacount section. Also updates the memory packing pass to respect the web's limits on the number of data segments.
Diffstat (limited to 'src/tools/wasm-ctor-eval.cpp')
-rw-r--r--src/tools/wasm-ctor-eval.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/tools/wasm-ctor-eval.cpp b/src/tools/wasm-ctor-eval.cpp
index 8b8eaa4ad..be1de7684 100644
--- a/src/tools/wasm-ctor-eval.cpp
+++ b/src/tools/wasm-ctor-eval.cpp
@@ -25,9 +25,9 @@
#include <memory>
#include "pass.h"
-#include "support/command-line.h"
#include "support/file.h"
#include "support/colors.h"
+#include "tool-options.h"
#include "wasm-io.h"
#include "wasm-interpreter.h"
#include "wasm-builder.h"
@@ -383,7 +383,7 @@ int main(int argc, const char* argv[]) {
bool debugInfo = false;
std::string ctorsString;
- Options options("wasm-ctor-eval", "Execute C++ global constructors ahead of time");
+ ToolOptions options("wasm-ctor-eval", "Execute C++ global constructors ahead of time");
options
.add("--output", "-o", "Output file (stdout if not specified)",
Options::Arguments::One,
@@ -425,6 +425,8 @@ int main(int argc, const char* argv[]) {
}
}
+ options.calculateFeatures(wasm);
+
if (!WasmValidator().validate(wasm)) {
WasmPrinter::printModule(&wasm);
Fatal() << "error in validating input";
@@ -442,6 +444,7 @@ int main(int argc, const char* argv[]) {
// Do some useful optimizations after the evalling
{
PassRunner passRunner(&wasm);
+ passRunner.setFeatures(options.passOptions.features);
passRunner.add("memory-packing"); // we flattened it, so re-optimize
passRunner.add("remove-unused-names");
passRunner.add("dce");