diff options
Diffstat (limited to 'src/tools/wasm-opt.cpp')
-rw-r--r-- | src/tools/wasm-opt.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/tools/wasm-opt.cpp b/src/tools/wasm-opt.cpp index ca4d87dd8..d36459a4a 100644 --- a/src/tools/wasm-opt.cpp +++ b/src/tools/wasm-opt.cpp @@ -162,8 +162,10 @@ int main(int argc, const char* argv[]) { Fatal() << "error in building module, std::bad_alloc (possibly invalid request for silly amounts of memory)"; } + options.calculateFeatures(wasm); + if (options.passOptions.validate) { - if (!WasmValidator().validate(wasm, options.getFeatures())) { + if (!WasmValidator().validate(wasm, options.passOptions.features)) { WasmPrinter::printModule(&wasm); Fatal() << "error in validating input"; } @@ -174,12 +176,12 @@ int main(int argc, const char* argv[]) { if (fuzzPasses) { reader.pickPasses(options); } - reader.setFeatures(options.getFeatures()); + reader.setFeatures(options.passOptions.features); reader.setAllowNaNs(fuzzNaNs); reader.setAllowMemory(fuzzMemory); reader.build(); if (options.passOptions.validate) { - if (!WasmValidator().validate(wasm, options.getFeatures())) { + if (!WasmValidator().validate(wasm, options.passOptions.features)) { WasmPrinter::printModule(&wasm); std::cerr << "translate-to-fuzz must always generate a valid module"; abort(); @@ -239,7 +241,7 @@ int main(int argc, const char* argv[]) { WasmBinaryBuilder parser(other, input, false); parser.read(); if (options.passOptions.validate) { - bool valid = WasmValidator().validate(other, options.getFeatures()); + bool valid = WasmValidator().validate(other, options.passOptions.features); if (!valid) { WasmPrinter::printModule(&other); } @@ -253,7 +255,8 @@ int main(int argc, const char* argv[]) { auto runPasses = [&]() { options.runPasses(*curr); if (options.passOptions.validate) { - bool valid = WasmValidator().validate(*curr, options.getFeatures()); + bool valid = + WasmValidator().validate(*curr, options.passOptions.features); if (!valid) { WasmPrinter::printModule(&*curr); } |