blob: e6883c0f84c98fc09f81500ffa3d02cdfa9833a3 [file] [edit]
(module
(type $0 (func (param i32)))
(type $1 (func))
(type $2 (func (result i32)))
(global $global$0 (mut i32) (i32.const 1))
(func $basics (; 0 ;) (type $0) (param $x i32)
(local $y i32)
(local $z f32)
(local $w i64)
(local $t f64)
(local $5 i32)
(local $6 f64)
(local $7 f64)
(drop
(get_local $x)
)
(drop
(i32.const 0)
)
(drop
(f32.const 0)
)
(drop
(i64.const 0)
)
(drop
(f64.const 0)
)
(set_local $5
(i32.const 100)
)
(drop
(get_local $5)
)
(set_local $6
(f64.const 2)
)
(drop
(get_local $6)
)
(set_local $7
(f64.const 33)
)
(drop
(get_local $7)
)
(drop
(get_local $7)
)
)
(func $if (; 1 ;) (type $0) (param $p i32)
(local $x i32)
(local $y i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(local $9 i32)
(local $10 i32)
(local $11 i32)
(local $12 i32)
(local $13 i32)
(local $14 i32)
(local $15 i32)
(local $16 i32)
(local $17 i32)
(set_local $13
(get_local $p)
)
(block
(drop
(if (result i32)
(i32.const 1)
(i32.const 0)
(i32.const 0)
)
)
(if
(i32.const 1)
(set_local $3
(tee_local $15
(tee_local $14
(tee_local $12
(i32.const 1)
)
)
)
)
)
(drop
(get_local $12)
)
(if
(i32.const 1)
(set_local $4
(tee_local $13
(i32.const 1)
)
)
)
(drop
(get_local $13)
)
(if
(i32.const 1)
(set_local $5
(tee_local $15
(tee_local $14
(i32.const 2)
)
)
)
(nop)
)
(drop
(get_local $14)
)
(if
(i32.const 1)
(nop)
(set_local $6
(tee_local $15
(i32.const 3)
)
)
)
(drop
(get_local $15)
)
(if
(i32.const 1)
(set_local $7
(tee_local $16
(i32.const 4)
)
)
(set_local $8
(tee_local $16
(i32.const 5)
)
)
)
(drop
(get_local $16)
)
(if
(i32.const 1)
(set_local $9
(tee_local $17
(i32.const 6)
)
)
(block $block
(set_local $10
(i32.const 7)
)
(set_local $11
(tee_local $17
(i32.const 8)
)
)
)
)
(drop
(get_local $17)
)
)
)
(func $if2 (; 2 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(set_local $2
(get_local $x)
)
(block
(if
(i32.const 1)
(block $block
(set_local $1
(tee_local $2
(i32.const 1)
)
)
(drop
(get_local $1)
)
)
)
(drop
(get_local $2)
)
)
)
(func $block (; 3 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(set_local $2
(get_local $x)
)
(block
(block $out
(br_if $out
(i32.const 2)
)
(set_local $1
(tee_local $2
(i32.const 1)
)
)
)
(drop
(get_local $2)
)
)
)
(func $block2 (; 4 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(block $out
(set_local $1
(tee_local $6
(i32.const 1)
)
)
(drop
(get_local $1)
)
(br_if $out
(i32.const 2)
)
(drop
(get_local $1)
)
(if
(i32.const 3)
(block $block
(set_local $2
(tee_local $6
(i32.const 1)
)
)
(drop
(get_local $2)
)
(br $out)
)
)
(drop
(get_local $1)
)
(set_local $3
(tee_local $6
(i32.const 4)
)
)
(drop
(get_local $3)
)
(if
(i32.const 5)
(br $out)
)
(drop
(get_local $3)
)
(if
(i32.const 6)
(nop)
)
(if
(i32.const 7)
(nop)
(nop)
)
(block $in
(set_local $4
(tee_local $6
(i32.const 8)
)
)
(drop
(get_local $4)
)
(br_table $in $out
(i32.const 9)
)
)
(drop
(get_local $4)
)
(block $in2
(set_local $5
(tee_local $6
(i32.const 10)
)
)
(drop
(get_local $5)
)
(br_table $out $in2
(i32.const 11)
)
)
(drop
(get_local $5)
)
)
(drop
(get_local $6)
)
)
(func $loop (; 5 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(set_local $2
(get_local $x)
)
(block
(drop
(get_local $x)
)
(loop $moar
(drop
(get_local $2)
)
(set_local $1
(tee_local $2
(i32.const 1)
)
)
(br_if $moar
(i32.const 2)
)
)
(drop
(get_local $1)
)
)
)
(func $loop2 (; 6 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(set_local $4
(get_local $x)
)
(block
(drop
(get_local $x)
)
(loop $moar
(drop
(get_local $4)
)
(set_local $1
(i32.const 1)
)
(drop
(get_local $1)
)
(set_local $2
(tee_local $4
(i32.const 123)
)
)
(drop
(get_local $2)
)
(br_if $moar
(i32.const 2)
)
(drop
(get_local $2)
)
(set_local $3
(i32.const 3)
)
(drop
(get_local $3)
)
)
(drop
(get_local $3)
)
)
)
(func $loop2-zeroinit (; 7 ;) (type $1)
(local $x i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(drop
(i32.const 0)
)
(loop $moar
(drop
(get_local $4)
)
(set_local $1
(i32.const 1)
)
(drop
(get_local $1)
)
(set_local $2
(tee_local $4
(i32.const 123)
)
)
(drop
(get_local $2)
)
(br_if $moar
(i32.const 2)
)
(drop
(get_local $2)
)
(set_local $3
(i32.const 3)
)
(drop
(get_local $3)
)
)
(drop
(get_local $3)
)
)
(func $real-loop (; 8 ;) (type $0) (param $param i32)
(local $loopvar i32)
(local $inc i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(set_local $3
(tee_local $7
(tee_local $6
(get_local $param)
)
)
)
(loop $more
(block $stop
(if
(i32.const 1)
(br $stop)
)
(set_local $4
(i32.add
(get_local $6)
(i32.const 1)
)
)
(set_local $5
(tee_local $7
(tee_local $6
(get_local $4)
)
)
)
(br $more)
)
)
(drop
(get_local $7)
)
)
(func $real-loop-outblock (; 9 ;) (type $0) (param $param i32)
(local $loopvar i32)
(local $inc i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(set_local $3
(tee_local $7
(tee_local $6
(get_local $param)
)
)
)
(block $stop
(loop $more
(if
(i32.const 1)
(br $stop)
)
(set_local $4
(i32.add
(get_local $6)
(i32.const 1)
)
)
(set_local $5
(tee_local $7
(tee_local $6
(get_local $4)
)
)
)
(br $more)
)
)
(drop
(get_local $7)
)
)
(func $loop-loop-param (; 10 ;) (type $0) (param $param i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(set_local $3
(get_local $param)
)
(set_local $4
(get_local $param)
)
(block
(loop $loop1
(block $out1
(if
(get_local $3)
(br $out1)
)
(set_local $1
(tee_local $4
(tee_local $3
(i32.const 1)
)
)
)
(br $loop1)
)
)
(loop $loop2
(block $out2
(if
(get_local $4)
(br $out2)
)
(set_local $2
(tee_local $4
(i32.const 2)
)
)
(br $loop2)
)
)
)
)
(func $loop-loop-param-nomerge (; 11 ;) (type $0) (param $param i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(loop $loop1
(block $out1
(set_local $1
(tee_local $3
(i32.const 1)
)
)
(if
(get_local $1)
(br $out1)
)
(br $loop1)
)
)
(loop $loop2
(block $out2
(if
(get_local $3)
(br $out2)
)
(set_local $2
(tee_local $3
(i32.const 2)
)
)
(br $loop2)
)
)
)
(func $loop-nesting (; 12 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(set_local $3
(get_local $x)
)
(set_local $4
(get_local $x)
)
(set_local $5
(get_local $x)
)
(block
(block $out
(loop $loop1
(if
(get_local $3)
(br $out)
)
(loop $loop2
(if
(get_local $4)
(br $out)
)
(set_local $1
(tee_local $5
(tee_local $4
(i32.const 1)
)
)
)
(br $loop2)
)
(set_local $2
(tee_local $5
(tee_local $4
(tee_local $3
(i32.const 2)
)
)
)
)
(br $loop1)
)
)
(drop
(get_local $5)
)
)
)
(func $loop-nesting-2 (; 13 ;) (type $0) (param $x i32)
(local $1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(set_local $3
(get_local $x)
)
(set_local $4
(get_local $x)
)
(set_local $5
(get_local $x)
)
(block
(block $out
(loop $loop1
(if
(get_local $3)
(br $out)
)
(loop $loop2
(if
(get_local $4)
(br $out)
)
(set_local $1
(tee_local $5
(tee_local $4
(i32.const 1)
)
)
)
(br_if $loop2
(i32.const 3)
)
)
(set_local $2
(tee_local $5
(tee_local $4
(tee_local $3
(i32.const 2)
)
)
)
)
(br $loop1)
)
)
(drop
(get_local $5)
)
)
)
(func $func_6 (; 14 ;) (type $2) (result i32)
(local $result i32)
(local $zero i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(loop $label$1
(if
(i32.eqz
(get_global $global$0)
)
(return
(get_local $4)
)
)
(set_global $global$0
(i32.const 0)
)
(set_local $2
(tee_local $4
(i32.const 1)
)
)
(br_if $label$1
(i32.const 0)
)
(set_local $3
(tee_local $4
(i32.const 0)
)
)
(br $label$1)
)
)
(func $ssa-merge-tricky (; 15 ;) (type $2) (result i32)
(local $var$0 i32)
(local $var$1 i32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
(local $6 i32)
(local $7 i32)
(local $8 i32)
(set_local $2
(tee_local $8
(tee_local $3
(tee_local $7
(i32.const 0)
)
)
)
)
(loop $label$1
(if
(i32.eqz
(get_global $global$0)
)
(return
(i32.const 12345)
)
)
(set_global $global$0
(i32.const 0)
)
(if
(i32.eqz
(get_local $7)
)
(br_if $label$1
(i32.eqz
(tee_local $4
(tee_local $7
(i32.const 1)
)
)
)
)
)
(br_if $label$1
(i32.eqz
(tee_local $5
(tee_local $8
(tee_local $6
(tee_local $7
(get_local $8)
)
)
)
)
)
)
)
(i32.const -54)
)
)