blob: 18b552e5d81c4bdf77cb57ce1b336ed6d40ca206 [file] [edit]
(module
(type $0 (func (param i32 i32)))
(type $1 (func (param i32 i32) (result i32)))
(type $2 (func (param i32 f32 f32) (result i64)))
(type $3 (func (param i32 i32 i32)))
(type $4 (func))
(global $global$0 (mut i32) (i32.const 10))
(func $test (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(local.get $x)
)
(func $test2 (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(local.get $x)
)
(func $test-multiple (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(drop
(local.get $x)
)
(local.get $x)
)
(func $test-just-some (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(drop
(local.get $x)
)
(local.set $y
(i32.const 200)
)
(local.get $y)
)
(func $test-just-some2 (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(if
(i32.const 300)
(then
(local.set $y
(i32.const 400)
)
)
(else
(drop
(local.get $x)
)
)
)
(i32.const 500)
)
(func $test-just-some3 (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(i32.const 200)
)
)
)
(if
(i32.const 300)
(then
(local.set $y
(i32.const 400)
)
)
(else
(drop
(local.get $y)
)
)
)
(local.get $y)
)
(func $silly-self (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.get $x)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(local.get $y)
)
(func $silly-multi (type $1) (param $x i32) (param $y i32) (result i32)
(drop
(if (result i32)
(local.tee $x
(local.tee $y
(local.get $x)
)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(local.get $y)
)
(func $undo-1 (type $0) (param $var$1 i32) (param $var$2 i32)
(local $var$5 i32)
(local.set $var$2
(local.get $var$1)
)
(local.set $var$2
(i32.const 1)
)
(drop
(local.get $var$1)
)
)
(func $undo-2 (type $0) (param $var$1 i32) (param $var$2 i32)
(local $var$5 i32)
(local.set $var$2
(local.get $var$1)
)
(if
(local.get $var$1)
(then
(local.set $var$2
(i32.const 1)
)
)
)
(drop
(local.get $var$1)
)
)
(func $reverse (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $y)
)
)
)
(drop
(local.get $y)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $reverse-end (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
)
(func $reverse-lone-end-2 (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(local.set $y
(i32.const 200)
)
(drop
(local.get $y)
)
)
(func $reverse-undo (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $y)
)
)
)
(local.set $x
(i32.const 300)
)
(drop
(local.get $x)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $reverse-undo2 (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(i32.const 150)
)
)
)
(local.set $x
(i32.const 300)
)
(drop
(local.get $x)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $reverse-undo3-conditional (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(i32.const 150)
)
)
)
(if
(i32.const 1)
(then
(local.set $x
(i32.const 300)
)
)
)
(drop
(local.get $x)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $reverse-undo3-conditional-b (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(local.get $x)
)
)
)
(if
(i32.const 1)
(then
(local.set $x
(i32.const 300)
)
)
)
(drop
(local.get $x)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $reverse-undo3-conditional-c (type $0) (param $x i32) (param $y i32)
(drop
(if (result i32)
(local.tee $x
(local.get $y)
)
(then
(i32.const 100)
)
(else
(i32.const 150)
)
)
)
(if
(i32.const 1)
(then
(drop
(local.get $x)
)
)
(else
(if
(i32.const 1)
(then
(local.set $x
(i32.const 300)
)
)
)
(drop
(local.get $x)
)
)
)
(if
(i32.const 1)
(then
(local.set $y
(i32.const 200)
)
)
)
(drop
(local.get $y)
)
)
(func $fuzz (type $2) (param $var$0 i32) (param $var$1 f32) (param $var$2 f32) (result i64)
(local $var$3 i32)
(global.set $global$0
(i32.sub
(global.get $global$0)
(i32.const 1)
)
)
(loop $label$1 (result i64)
(global.set $global$0
(i32.sub
(global.get $global$0)
(i32.const 1)
)
)
(br_if $label$1
(block $label$2 (result i32)
(drop
(if (result i32)
(block $label$3 (result i32)
(global.set $global$0
(i32.sub
(global.get $global$0)
(i32.const 3)
)
)
(local.set $var$3
(i32.const 1)
)
(local.tee $var$3
(local.get $var$0)
)
)
(then
(i32.const 0)
)
(else
(local.set $var$3
(if (result i32)
(i32.const 0)
(then
(block $label$7
(block $label$8
(local.set $var$0
(i32.const 34738786)
)
)
)
(local.get $var$3)
)
(else
(if
(i32.eqz
(global.get $global$0)
)
(then
(return
(i64.const 137438953472)
)
)
)
(global.set $global$0
(i32.sub
(global.get $global$0)
(i32.const 1)
)
)
(br_if $label$1
(i32.eqz
(local.get $var$3)
)
)
(return
(i64.const 44125)
)
)
)
)
(i32.const -129)
)
)
)
(i32.const 0)
)
)
(i64.const -36028797018963968)
)
)
(func $trivial-confusion (type $3) (param $unused i32) (param $param i32) (param $result i32)
(loop $label$1
(if
(i32.const 1)
(then
(drop
(local.get $result)
)
)
)
(local.set $result
(local.get $param)
)
(br_if $label$1
(local.tee $unused
(local.get $param)
)
)
)
)
(func $subtype-test (type $4)
(local $0 anyref)
(local $1 i31ref)
(local $2 i31ref)
(local.set $0
(local.get $1)
)
(local.set $2
(local.get $1)
)
)
)