diff options
author | Alon Zakai <azakai@google.com> | 2024-11-21 11:26:33 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-21 11:26:33 -0800 |
commit | 3342d56e4a13170c094a29138b32ff17cad4c01d (patch) | |
tree | 8a63abc6e8f0e9cdb01eef40ffbd9010bf009d8b /test/wasm2js/empty_loop.wast | |
parent | af5f74aeb3c53081ffaedbde18a77bdede0a697e (diff) | |
download | binaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.tar.gz binaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.tar.bz2 binaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.zip |
[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.
Diffstat (limited to 'test/wasm2js/empty_loop.wast')
-rw-r--r-- | test/wasm2js/empty_loop.wast | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/wasm2js/empty_loop.wast b/test/wasm2js/empty_loop.wast new file mode 100644 index 000000000..8f22c033d --- /dev/null +++ b/test/wasm2js/empty_loop.wast @@ -0,0 +1,18 @@ +(module + (global $g (mut i32) (i32.const 0)) + + (func $test (export "test") + ;; Loops without labels. We should not emit anything invalid here (like a + ;; null name, which would end up identical between the two, which is wrong). + (loop + (loop + ;; Some content, so the loop is not trivial. + (global.set $g + (i32.const 0) + ) + (unreachable) + ) + (unreachable) + ) + ) +) |