Open kripken opened 1 year ago
We won't emit the local.set $local
instruction into the binary, but we will emit the local.get $local
, so it makes sense that V8 would complain about this. Replacing the unreachable with something reachable will cause us to emit the local.set
, which fixes the problem.
We should update our domination calculation to take into account the fact that unreachable sets won't be emitted.
bin/wasm-as -all --nominal wat -o wasm
emits a binary that V8 complains about,uninitialized non-defaultable local
. Binaryen does accept the binary as valid, oddly. Also oddly, replacing the unreachable with something reachable fixes it in V8.I think Binaryen thinks this validates since the unnamed block is not emitted in the binary format, so the
local.set
dominates thelocal.get
. But perhaps unreachability makes us behave differently somehow?