=== input wast ===
(module
 (type $i (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (; 0 ;) (type $i) (param $0 i32) (result i32)
  (block (result i32)
   (block (result i32)
    (if (result i32)
     (local.get $0)
     (local.get $0)
     (i32.const 0)
    )
   )
  )
 )
)

=== default ===
(module
 (type $i (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (; 0 ;) (type $i) (param $0 i32) (result i32)
  block $block0 (result i32)
   local.get $0
   if (result i32)
    local.get $0
   else
    i32.const 0
   end
  end
 )
)

=== optimize ===
(module
 (type $i (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (; 0 ;) (type $i) (param $0 i32) (result i32)
  local.get $0
  if (result i32)
   local.get $0
  else
   i32.const 0
  end
 )
)

