blob: cb0d58fa8fe6827cbbbff3c44338d217bb233997 [file] [edit]
(module
(type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32)))
(type $FUNCSIG$iii (func (param i32 i32) (result i32)))
(type $2 (func))
(type $3 (func (param i32 f32)))
(type $4 (func (param i32)))
(type $FUNCSIG$i (func (result i32)))
(type $FUNCSIG$ii (func (param i32) (result i32)))
(type $FUNCSIG$jdi (func (param f64 i32) (result i64)))
(type $FUNCSIG$vii (func (param i32 i32)))
(type $FUNCSIG$d (func (result f64)))
(import "env" "_emscripten_autodebug_i32" (func $_emscripten_autodebug_i32 (param i32 i32) (result i32)))
(import "env" "get" (func $get (result i32)))
(import "env" "set" (func $set (param i32)))
(memory $0 10)
(func $nothing-to-do (; 3 ;) (type $2)
(local $0 i32)
(nop)
)
(func $merge (; 4 ;) (type $2)
(local $0 i32)
(nop)
)
(func $leave-type (; 5 ;) (type $2)
(local $0 i32)
(local $1 f32)
(nop)
)
(func $leave-interfere (; 6 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(local.set $1
(i32.const 0)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $almost-interfere (; 7 ;) (type $2)
(local $0 i32)
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
)
(func $redundant-copy (; 8 ;) (type $2)
(local $0 i32)
(local.set $0
(i32.const 0)
)
(nop)
(drop
(local.get $0)
)
)
(func $ineffective-store (; 9 ;) (type $2)
(local $0 i32)
(drop
(i32.const 0)
)
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
)
(func $block (; 10 ;) (type $2)
(local $0 i32)
(block $block0
(local.set $0
(i32.const 0)
)
)
(drop
(local.get $0)
)
)
(func $see-both-sides (; 11 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(block $block0
(local.set $1
(i32.const 0)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $see-br-and-ignore-dead (; 12 ;) (type $2)
(local $0 i32)
(local.set $0
(i32.const 0)
)
(block $block
(br $block)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
(drop
(i32.const -1)
)
)
(drop
(local.get $0)
)
)
(func $see-block-body (; 13 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(block $block
(local.set $1
(i32.const 0)
)
(drop
(local.get $1)
)
(br $block)
)
(drop
(local.get $0)
)
)
(func $zero-init (; 14 ;) (type $2)
(local $0 i32)
(local $1 i32)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $multi (; 15 ;) (type $2)
(local $0 i32)
(local $1 i32)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $if-else (; 16 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
(func $if-else-parallel (; 17 ;) (type $2)
(local $0 i32)
(if
(i32.const 0)
(block $block1
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
)
(block $block3
(local.set $0
(i32.const 1)
)
(drop
(local.get $0)
)
)
)
)
(func $if-else-after (; 18 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
(local.set $0
(i32.const 0)
)
(local.set $1
(i32.const 1)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $if-else-through (; 19 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(local.set $1
(i32.const 1)
)
(if
(i32.const 0)
(drop
(i32.const 1)
)
(drop
(i32.const 2)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $if-through (; 20 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(local.set $1
(i32.const 1)
)
(if
(i32.const 0)
(drop
(i32.const 1)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $if-through2 (; 21 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(if
(i32.const 0)
(local.set $1
(i32.const 1)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $if-through3 (; 22 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(if
(i32.const 0)
(block $block1
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
)
(func $if2 (; 23 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(local.tee $0
(i32.const 0)
)
(block $block1
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
)
(func $if3 (; 24 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
(block $block1
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
)
)
(drop
(local.get $1)
)
)
(func $if4 (; 25 ;) (type $2)
(local $0 i32)
(if
(i32.const 0)
(block $block1
(local.set $0
(i32.const 0)
)
(drop
(local.get $0)
)
(local.set $0
(i32.const 1)
)
)
)
(drop
(local.get $0)
)
)
(func $if5 (; 26 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
(block $block1
(drop
(local.get $0)
)
(local.set $1
(i32.const 1)
)
)
)
(drop
(local.get $1)
)
)
(func $loop (; 27 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $in
(drop
(local.get $0)
)
(local.set $0
(i32.const 0)
)
(drop
(local.get $1)
)
(br $in)
)
)
(func $interfere-in-dead (; 28 ;) (type $2)
(local $0 i32)
(block $block
(br $block)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
)
(func $interfere-in-dead2 (; 29 ;) (type $2)
(local $0 i32)
(block $block
(unreachable)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
)
(func $interfere-in-dead3 (; 30 ;) (type $2)
(local $0 i32)
(block $block
(return)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
)
(func $params (; 31 ;) (type $3) (param $0 i32) (param $1 f32)
(local $2 i32)
(local $3 i32)
(local $4 i32)
(drop
(local.get $2)
)
(drop
(local.get $3)
)
(drop
(local.get $4)
)
)
(func $interfere-in-dead4 (; 32 ;) (type $2)
(local $0 i32)
(local $1 i32)
(block $block
(br_if $block
(i32.const 0)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
(func $switch (; 33 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local $2 i32)
(block $switch$def
(block $switch-case$1
(block $switch-case$2
(br_table $switch-case$1 $switch-case$2 $switch-case$1 $switch-case$1 $switch$def
(i32.const 100)
)
(drop
(i32.const 0)
)
)
(drop
(local.get $0)
)
)
(drop
(local.get $1)
)
)
(drop
(local.get $2)
)
)
(func $greedy-can-be-happy (; 34 ;) (type $2)
(local $0 i32)
(local $1 i32)
(if
(i32.const 0)
(if
(i32.const 1)
(if
(i32.const 2)
(block $block3
(local.set $0
(i32.const 100)
)
(local.set $1
(i32.const 101)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(block $block5
(local.set $0
(i32.const 102)
)
(local.set $1
(i32.const 103)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
(if
(i32.const 3)
(block $block8
(local.set $0
(i32.const 104)
)
(local.set $1
(i32.const 105)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(block $block10
(local.set $0
(i32.const 106)
)
(local.set $1
(i32.const 107)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
)
(if
(i32.const 4)
(block $block13
(local.set $0
(i32.const 108)
)
(local.set $1
(i32.const 109)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(block $block15
(local.set $0
(i32.const 110)
)
(local.set $1
(i32.const 111)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
)
)
)
(func $greedy-can-be-sad (; 35 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local $2 i32)
(if
(i32.const 0)
(if
(i32.const 1)
(if
(i32.const 2)
(block $block3
(local.set $0
(i32.const 100)
)
(local.set $1
(i32.const 101)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(block $block5
(local.set $0
(i32.const 102)
)
(local.set $2
(i32.const 103)
)
(drop
(local.get $0)
)
(drop
(local.get $2)
)
)
)
(if
(i32.const 3)
(block $block8
(local.set $1
(i32.const 104)
)
(local.set $0
(i32.const 105)
)
(drop
(local.get $1)
)
(drop
(local.get $0)
)
)
(block $block10
(local.set $1
(i32.const 106)
)
(local.set $2
(i32.const 107)
)
(drop
(local.get $1)
)
(drop
(local.get $2)
)
)
)
)
(if
(i32.const 4)
(block $block13
(local.set $2
(i32.const 108)
)
(local.set $0
(i32.const 109)
)
(drop
(local.get $2)
)
(drop
(local.get $0)
)
)
(block $block15
(local.set $2
(i32.const 110)
)
(local.set $1
(i32.const 111)
)
(drop
(local.get $2)
)
(drop
(local.get $1)
)
)
)
)
)
(func $_memcpy (; 36 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
(if
(i32.ge_s
(local.get $2)
(i32.const 4096)
)
(drop
(local.get $0)
)
)
(local.set $3
(local.get $0)
)
(if
(i32.eq
(i32.and
(local.get $0)
(i32.const 3)
)
(i32.and
(local.get $1)
(i32.const 3)
)
)
(block $block2
(block $while-out$0
(loop $while-in$1
(if
(i32.eqz
(i32.and
(local.get $0)
(i32.const 3)
)
)
(br $while-out$0)
)
(block $block4
(if
(i32.eqz
(local.get $2)
)
(return
(local.get $3)
)
)
(i32.store8
(local.get $0)
(i32.load8_s
(local.get $1)
)
)
(local.set $0
(i32.add
(local.get $0)
(i32.const 1)
)
)
(local.set $1
(i32.add
(local.get $1)
(i32.const 1)
)
)
(local.set $2
(i32.sub
(local.get $2)
(i32.const 1)
)
)
)
(br $while-in$1)
)
)
(block $while-out$2
(loop $while-in$3
(if
(i32.eqz
(i32.ge_s
(local.get $2)
(i32.const 4)
)
)
(br $while-out$2)
)
(block $block7
(i32.store
(local.get $0)
(i32.load
(local.get $1)
)
)
(local.set $0
(i32.add
(local.get $0)
(i32.const 4)
)
)
(local.set $1
(i32.add
(local.get $1)
(i32.const 4)
)
)
(local.set $2
(i32.sub
(local.get $2)
(i32.const 4)
)
)
)
(br $while-in$3)
)
)
)
)
(block $while-out$4
(loop $while-in$5
(if
(i32.eqz
(i32.gt_s
(local.get $2)
(i32.const 0)
)
)
(br $while-out$4)
)
(block $block9
(i32.store8
(local.get $0)
(i32.load8_s
(local.get $1)
)
)
(local.set $0
(i32.add
(local.get $0)
(i32.const 1)
)
)
(local.set $1
(i32.add
(local.get $1)
(i32.const 1)
)
)
(local.set $2
(i32.sub
(local.get $2)
(i32.const 1)
)
)
)
(br $while-in$5)
)
)
(return
(local.get $3)
)
)
(func $this-is-effective-i-tell-you (; 37 ;) (type $4) (param $0 i32)
(if
(i32.const -1)
(block $block1
(if
(i32.const 0)
(nop)
)
(local.set $0
(i32.const 1)
)
)
(nop)
)
(drop
(local.get $0)
)
)
(func $prefer-remove-copies1 (; 38 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(nop)
(local.set $1
(i32.const 1)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
)
(func $prefer-remove-copies2 (; 39 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 0)
)
(nop)
(local.set $1
(i32.const 1)
)
(drop
(local.get $1)
)
(drop
(local.get $0)
)
)
(func $in-unreachable (; 40 ;) (type $2)
(local $0 i32)
(block $x
(return)
(drop
(i32.const 1)
)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
(block $y
(unreachable)
(drop
(i32.const 1)
)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
(block $z
(br $z)
(drop
(i32.const 1)
)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
(block $z14
(br_table $z14 $z14
(i32.const 100)
)
(drop
(i32.const 1)
)
(drop
(i32.const 0)
)
(drop
(i32.const 0)
)
)
)
(func $nop-in-unreachable (; 41 ;) (type $2)
(local $0 i32)
(block $block
(unreachable)
(i32.store
(i32.const 0)
(i32.const 0)
)
)
)
(func $loop-backedge (; 42 ;) (type $2)
(local $0 i32)
(local $1 i32)
(local.set $0
(i32.const 2)
)
(block $out
(loop $while-in7
(local.set $1
(i32.const 0)
)
(call $set
(local.get $1)
)
(local.set $0
(i32.add
(local.get $0)
(i32.const 1)
)
)
(if
(call $get)
(local.set $1
(local.get $0)
)
)
(br_if $out
(local.get $1)
)
(local.set $0
(i32.const 100)
)
(nop)
(br $while-in7)
)
)
)
(func $if-copy1 (; 43 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $top
(local.set $0
(if (result i32)
(i32.const 1)
(local.get $0)
(local.get $1)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
(br $top)
)
)
(func $if-copy2 (; 44 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $top
(local.set $1
(if (result i32)
(i32.const 1)
(local.get $0)
(local.get $1)
)
)
(drop
(local.get $1)
)
(drop
(local.get $0)
)
(br $top)
)
)
(func $if-copy3 (; 45 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $top
(local.set $0
(if (result i32)
(i32.const 1)
(unreachable)
(local.get $0)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
(br $top)
)
)
(func $if-copy4 (; 46 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $top
(local.set $1
(if (result i32)
(i32.const 1)
(unreachable)
(local.get $0)
)
)
(drop
(local.get $1)
)
(drop
(local.get $0)
)
(br $top)
)
)
(func $if-copy-tee (; 47 ;) (type $2)
(local $0 i32)
(local $1 i32)
(loop $top
(drop
(local.tee $0
(if (result i32)
(i32.const 1)
(local.get $0)
(i32.const 2)
)
)
)
(drop
(local.get $0)
)
(drop
(local.get $1)
)
(br $top)
)
)
(func $tee_br (; 48 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32)
(block $b
(return
(br $b)
)
)
(i32.const 1)
)
(func $unused-tee-with-child-if-no-else (; 49 ;) (type $4) (param $0 i32)
(loop $label$0
(drop
(if
(br $label$0)
(nop)
)
)
)
)
(func $tee_if_with_unreachable_else (; 50 ;) (type $FUNCSIG$jdi) (param $0 f64) (param $1 i32) (result i64)
(call $tee_if_with_unreachable_else
(local.tee $0
(if (result f64)
(local.get $1)
(local.get $0)
(unreachable)
)
)
(f64.lt
(f64.const -128)
(local.get $0)
)
)
)
(func $tee_if_with_unreachable_true (; 51 ;) (type $FUNCSIG$jdi) (param $0 f64) (param $1 i32) (result i64)
(call $tee_if_with_unreachable_else
(local.tee $0
(if (result f64)
(local.get $1)
(unreachable)
(local.get $0)
)
)
(f64.lt
(f64.const -128)
(local.get $0)
)
)
)
(func $pick (; 52 ;) (type $2)
(local $0 i32)
(nop)
(if
(i32.const 1)
(drop
(i32.const 1)
)
)
(nop)
(nop)
)
(func $pick-2 (; 53 ;) (type $2)
(local $0 i32)
(nop)
(if
(i32.const 1)
(drop
(i32.const 1)
)
)
(nop)
(nop)
)
(func $many (; 54 ;) (type $2)
(local $0 i32)
(nop)
(nop)
(nop)
(nop)
(if
(i32.const 1)
(drop
(i32.const 1)
)
)
(nop)
(if
(i32.const 1)
(drop
(i32.const 1)
)
)
(nop)
(nop)
(nop)
(local.set $0
(i32.const 2)
)
(nop)
(if
(i32.const 1)
(drop
(i32.const 1)
)
)
(nop)
(nop)
(nop)
(drop
(i32.const 2)
)
(nop)
)
(func $loop-copies (; 55 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32)
(loop $loop
(local.set $0
(local.get $1)
)
(local.set $1
(local.get $0)
)
(br_if $loop
(local.get $0)
)
)
)
(func $proper-type (; 56 ;) (type $FUNCSIG$d) (result f64)
(local $0 f64)
(local $1 i32)
(drop
(select
(i32.const 0)
(i32.const 1)
(local.get $1)
)
)
(local.get $0)
)
(func $reuse-param (; 57 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32)
(i32.add
(local.tee $0
(i32.xor
(i32.shr_s
(i32.shl
(local.get $0)
(i32.const 16)
)
(i32.const 16)
)
(i32.shr_s
(i32.shl
(local.get $1)
(i32.const 16)
)
(i32.const 16)
)
)
)
(local.get $0)
)
)
)