This change causes 'call unwindabort' to emit EH_LABELs and add them
to the list of EH regions, in both SelectionDAG and GlobalISel.
It also adjusts the DWARF "resume" lowering to lower "resume
unwindabort" to "call unwindabort" appropriately.
The actual LSDA callsite table emission did not require any changes:
it already worked as desired. Test-cases were added, however.
This does not yet implement support for the other varieties of
exception-handling supported by LLVM:
- Windows funclets
- WebAssembly
- setjmp/longjmp
TODO: currently basic-block-sections are broken, as they have a
pre-existing flaw: they emit invalid unwind tables, where the callsite
table size is larger than it should be. The assumption in the initial
commit was that this was a harmless lie: that the unwinder would never
notice the garbage after the callsites, because the prior entries
would cover the whole function. That was not _necessarily_ the case
before, but is definitely not the case now.
Depends on D141916
no else after return?