diff options
Diffstat (limited to 'src/tools/wasm-opt.cpp')
-rw-r--r-- | src/tools/wasm-opt.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/tools/wasm-opt.cpp b/src/tools/wasm-opt.cpp index 61e554276..d2f3d718c 100644 --- a/src/tools/wasm-opt.cpp +++ b/src/tools/wasm-opt.cpp @@ -71,6 +71,7 @@ int main(int argc, const char* argv[]) { std::string extraFuzzCommand; bool translateToFuzz = false; bool fuzzPasses = false; + bool fuzzNaNs = true; std::string emitJSWrapper; std::string emitSpecWrapper; std::string inputSourceMapFilename; @@ -112,6 +113,9 @@ int main(int argc, const char* argv[]) { .add("--fuzz-passes", "-fp", "Pick a random set of passes to run, useful for fuzzing. this depends on translate-to-fuzz (it picks the passes from the input)", Options::Arguments::Zero, [&](Options *o, const std::string& arguments) { fuzzPasses = true; }) + .add("--no-fuzz-nans", "", "don't emit NaNs when fuzzing, and remove them at runtime as well (helps avoid nondeterminism between VMs)", + Options::Arguments::Zero, + [&](Options *o, const std::string& arguments) { fuzzNaNs = false; }) .add("--emit-js-wrapper", "-ejw", "Emit a JavaScript wrapper file that can run the wasm with some test values, useful for fuzzing", Options::Arguments::One, [&](Options *o, const std::string& arguments) { emitJSWrapper = arguments; }) @@ -166,7 +170,9 @@ int main(int argc, const char* argv[]) { if (fuzzPasses) { reader.pickPasses(options); } - reader.build(options.getFeatures()); + reader.setFeatures(options.getFeatures()); + reader.setAllowNaNs(fuzzNaNs); + reader.build(); if (options.passOptions.validate) { if (!WasmValidator().validate(wasm, options.getFeatures())) { WasmPrinter::printModule(&wasm); |