Closed
Description
Looks like the drop changes in 0xc change the block/br type system significantly. I've been trying to figure out what's going on from the new spec tests, but can't seem to. Is this documented somewhere?
For example, one source of puzzlement is that this should be invalid
(block $block1
(br $block1
(unreachable)
)
)
Intuitively that seems like it should be valid, as no value is sent to the block? So I can only guess it is invalid because the type of unreachable is unacceptable here. Yet, on the other hand this should be valid,
(block $block1
(br $block1
(br $block0
(i32.const 8)
)
)
)
So somehow the type of br
is different from the type of unreachable
? That seems odd as both halt control flow.