From a96fe1a8422140072db7ad7db421378b87898a0d Mon Sep 17 00:00:00 2001 From: Will Cohen Date: Wed, 4 Jan 2023 13:47:47 -0500 Subject: wasm2js: Avoid emitting non-JS code during opt (#5378) As noted in #4806, trying to optimize past level 0 can result in passes emitting non-JS code, which is then unable to be converted during final output. This commit creates a new targetJS option in PassOptions, which can be checked inside each pass where non-JS code might be emitted. This commit initially adds that logic to OptimizeInstructions, where this issue was first noticed. --- test/wasm2js/target_js.2asm.js.opt | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 test/wasm2js/target_js.2asm.js.opt (limited to 'test/wasm2js/target_js.2asm.js.opt') diff --git a/test/wasm2js/target_js.2asm.js.opt b/test/wasm2js/target_js.2asm.js.opt new file mode 100644 index 000000000..12e1a475b --- /dev/null +++ b/test/wasm2js/target_js.2asm.js.opt @@ -0,0 +1,27 @@ + +function asmFunc(imports) { + var Math_imul = Math.imul; + var Math_fround = Math.fround; + var Math_abs = Math.abs; + var Math_clz32 = Math.clz32; + var Math_min = Math.min; + var Math_max = Math.max; + var Math_floor = Math.floor; + var Math_ceil = Math.ceil; + var Math_trunc = Math.trunc; + var Math_sqrt = Math.sqrt; + var nan = NaN; + var infinity = Infinity; + function func($0) { + $0 = $0 | 0; + return 1 << $0 ^ -1; + } + + return { + "func": func + }; +} + +var retasmFunc = asmFunc({ +}); +export var func = retasmFunc.func; -- cgit v1.2.3