It's my understanding that it is ok to ignore unreachable code. Does a block whose end is never reached count as unreachable code? Example:
(module
(func $__Z12serveroptionPc (result i32)
(block $no-exit
(return
(i32.const 0)
)
)
)
)
The block is entered but never exited. The spec interpreter doesn't accept this, but binaryen does (it gives the block type unreachable, just like it would to e.g. (i32.ctz (unreachable))).