From 3342d56e4a13170c094a29138b32ff17cad4c01d Mon Sep 17 00:00:00 2001 From: Alon Zakai Date: Thu, 21 Nov 2024 11:26:33 -0800 Subject: [wasm2js] Properly handle loops without labels (#7100) When a loop has no name, the name does not matter, but we also cannot emit the same name for all such loops, as that is invalid JS. Just do not emit a while(){} at all in that case, as no continue can exist anyhow. Fixes #7099 Also fix two missing * in error reporting logic, that was printing pointers rather than the expression we wanted to print. I think we changed how iostream prints things years ago, and forgot to update these. --- test/wasm2js/empty_loop.2asm.js.opt | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 test/wasm2js/empty_loop.2asm.js.opt (limited to 'test/wasm2js/empty_loop.2asm.js.opt') diff --git a/test/wasm2js/empty_loop.2asm.js.opt b/test/wasm2js/empty_loop.2asm.js.opt new file mode 100644 index 000000000..ff37d056f --- /dev/null +++ b/test/wasm2js/empty_loop.2asm.js.opt @@ -0,0 +1,26 @@ + +function wasm2js_trap() { throw new Error('abort'); } + +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; + function test() { + wasm2js_trap(); + } + + return { + "test": test + }; +} + +var retasmFunc = asmFunc({ +}); +export var test = retasmFunc.test; -- cgit v1.2.3