=== 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)
   (if (result i32)
    (local.get $0)
    (then (local.get $0))
    (else (i32.const 0))
   )
  )
 )
)

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

=== optimized using defaults ===
optimizeLevel=2
shrinkLevel=1
(module
 (type $i (func (param i32) (result i32)))
 (export "test" (func $test))
 (func $test (param $0 i32) (result i32)
  (local.get $0)
 )
)

=== optimized with -O0 ===
optimizeLevel=0
shrinkLevel=0
(module
 (type $i (func (param i32) (result i32)))
 (export "test" (func $test))
 (func $test (param $0 i32) (result i32)
  (local.get $0)
 )
)

=== optimized with -Os ===
optimizeLevel=2
shrinkLevel=1
(module
 (type $i (func (param i32) (result i32)))
 (export "test" (func $test))
 (func $test (param $0 i32) (result i32)
  (local.get $0)
 )
)

