Source code

Revision control

Copy as Markdown

Other Tools

// This exposed an obscure bug to do with flag handling in GVN.
const t =`
(module
(func (export "w0")
(local $v1 i32)
(local $v4 i32)
(local $v5 i32)
(local $v7 i32)
(local $v8 i32)
(local $v10 i32)
i32.const 1
local.set $v1
local.get $v4
local.get $v1
local.get $v1
local.get $v1
loop (param i32 i32 i32 i32) ;; label = @1
local.set $v5
local.set $v7
local.set $v8
local.set $v10
local.get $v8
local.get $v4
local.get $v8
local.get $v7
local.get $v10
br_if 0 (;@1;)
drop
drop
drop
drop
local.get $v1
local.get $v4
local.get $v10
local.get $v1
local.get $v5
br_if 0 (;@1;)
drop
drop
drop
drop
end
)
)`;
// Check we can compile and run this without asserting.
const v52
= new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(t)));
v52.exports.w0();