=== 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 $i32_=>_i32 (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (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 $i32_=>_i32 (func (param i32) (result i32)))
 (memory $0 0)
 (export "test" (func $test))
 (func $test (param $0 i32) (result i32)
  local.get $0
  if (result i32)
   local.get $0
  else
   i32.const 0
  end
 )
)

