summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/regress/bug1857829.js
blob: df0598f678adbf050b35beee278b71aa5ef51dc0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// |jit-test| --setpref=wasm_gc=true; skip-if: !wasmGcEnabled()

// Tests if i31ref global value is normalized.
var ins = wasmEvalText(`(module
    (global $i (ref i31) (ref.i31 (i32.const -1)))
    (func (export "f") (result i32)
       (ref.eq (ref.i31 (i32.const -1)) (global.get $i))
    )
 )`);
assertEq(ins.exports.f(), 1);

// OP test
var ins = wasmEvalText(`(module
    (import "env" "v" (func $g (result (ref eq))))
    (func (export "f")
       (local $v (ref eq))
       (local.set $v (call $g))
       (if (i32.eq (i31.get_s (ref.cast (ref i31) (local.get $v))) (i32.const -1))
          (then
            (if (i32.eqz (ref.eq (local.get $v) (ref.i31 (i32.const -1))))
               (then (unreachable))))))
)`, {env:{v:()=>-1}});
ins.exports.f();