bug1969987.js (983B)
1 // This exposed an obscure bug to do with flag handling in GVN. 2 3 const t =` 4 (module 5 (func (export "w0") 6 (local $v1 i32) 7 (local $v4 i32) 8 (local $v5 i32) 9 (local $v7 i32) 10 (local $v8 i32) 11 (local $v10 i32) 12 i32.const 1 13 local.set $v1 14 15 local.get $v4 16 local.get $v1 17 local.get $v1 18 local.get $v1 19 20 loop (param i32 i32 i32 i32) ;; label = @1 21 local.set $v5 22 local.set $v7 23 local.set $v8 24 local.set $v10 25 26 local.get $v8 27 local.get $v4 28 local.get $v8 29 local.get $v7 30 31 local.get $v10 32 br_if 0 (;@1;) 33 34 drop 35 drop 36 drop 37 drop 38 39 local.get $v1 40 local.get $v4 41 local.get $v10 42 local.get $v1 43 44 local.get $v5 45 br_if 0 (;@1;) 46 47 drop 48 drop 49 drop 50 drop 51 52 end 53 ) 54 )`; 55 56 // Check we can compile and run this without asserting. 57 const v52 58 = new WebAssembly.Instance(new WebAssembly.Module(wasmTextToBinary(t))); 59 v52.exports.w0();