From 90d0ee4337c56ce4b30a6cb2a931ae814d150ee7 Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Tue, 12 Feb 2019 11:31:29 -0800 Subject: respect --no-validation in pass-debug mode (#1904) --- src/passes/pass.cpp | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp index 2872575c2..3eed059bb 100644 --- a/src/passes/pass.cpp +++ b/src/passes/pass.cpp @@ -289,28 +289,31 @@ void PassRunner::run() { std::chrono::duration diff = after - before; std::cerr << diff.count() << " seconds." << std::endl; totalTime += diff; - // validate, ignoring the time - std::cerr << "[PassRunner] (validating)\n"; - if (!WasmValidator().validate(*wasm, options.features, validationFlags)) { - WasmPrinter::printModule(wasm); - if (passDebug >= 2) { - std::cerr << "Last pass (" << pass->name << ") broke validation. Here is the module before: \n" << moduleBefore.str() << "\n"; - } else { - std::cerr << "Last pass (" << pass->name << ") broke validation. Run with BINARYEN_PASS_DEBUG=2 in the env to see the earlier state, or 3 to dump byn-* files for each pass\n"; + if (options.validate) { + // validate, ignoring the time + std::cerr << "[PassRunner] (validating)\n"; + if (!WasmValidator().validate(*wasm, options.features, validationFlags)) { + WasmPrinter::printModule(wasm); + if (passDebug >= 2) { + std::cerr << "Last pass (" << pass->name << ") broke validation. Here is the module before: \n" << moduleBefore.str() << "\n"; + } else { + std::cerr << "Last pass (" << pass->name << ") broke validation. Run with BINARYEN_PASS_DEBUG=2 in the env to see the earlier state, or 3 to dump byn-* files for each pass\n"; + } + abort(); } - abort(); } if (passDebug >= 3) { dumpWast(pass->name, wasm); } } std::cerr << "[PassRunner] passes took " << totalTime.count() << " seconds." << std::endl; - // validate - std::cerr << "[PassRunner] (final validation)\n"; - if (!WasmValidator().validate(*wasm, options.features, validationFlags)) { - WasmPrinter::printModule(wasm); - std::cerr << "final module does not validate\n"; - abort(); + if (options.validate) { + std::cerr << "[PassRunner] (final validation)\n"; + if (!WasmValidator().validate(*wasm, options.features, validationFlags)) { + WasmPrinter::printModule(wasm); + std::cerr << "final module does not validate\n"; + abort(); + } } } else { // non-debug normal mode, run them in an optimal manner - for locality it is better -- cgit v1.2.3