Before we placed all TRY/END_TRY markers before placing BLOCK/END_BLOCK
markers. This couldn't handle this case:
bb0: br bb2 bb1: // nearest common dominator of bb3 and bb4 ... bb2: br_if ... bb3 br bb4 bb3: call @foo // unwinds to ehpad bb4: call @bar // unwinds to ehpad ehpad: catch ...
When we placed TRY markers, we placed it in bb1 because it is the
nearest common dominator of bb3 and bb4. But because bb0 jumps to bb2,
when we placed block markers, we ended up with interleaved scopes like
block try end_block catch end_try
which was not correct.
This patch fixes the bug by placing BLOCK and TRY markers in one pass
while iterating BBs in a function. This also adds some more routines to
placeTryMarkers, because we now have to assume that there can be
previously placed BLOCK and END_BLOCK.