Implement and document the llvm.eh.resume intrinsic, which is
authorJohn McCall <rjmccall@apple.com>
Sat, 28 May 2011 07:45:59 +0000 (07:45 +0000)
committerJohn McCall <rjmccall@apple.com>
Sat, 28 May 2011 07:45:59 +0000 (07:45 +0000)
commitd7c10862016939c9850cadfe5e1c35513c0adf28
tree9c4361dee8c7f6f75c33e68bd4a8de1223e6f6d3
parentbd0fa4c00d7870b1da36eac7b2181700381f2f96
Implement and document the llvm.eh.resume intrinsic, which is
transformed by the inliner into a branch to the enclosing landing pad
(when inlined through an invoke).  If not so optimized, it is lowered
DWARF EH preparation into a call to _Unwind_Resume (or _Unwind_SjLj_Resume
as appropriate).  Its chief advantage is that it takes both the
exception value and the selector value as arguments, meaning that there
is zero effort in recovering these;  however, the frontend is required
to pass these down, which is not actually particularly difficult.

Also document the behavior of landing pads a bit better, and make it
clearer that it's okay that personality functions don't always land at
landing pads.  This is just a fact of life.  Don't write optimizations that
rely on pushing things over an unwind edge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132253 91177308-0d34-0410-b5e6-96231b3b80d8
docs/ExceptionHandling.html
lib/CodeGen/DwarfEHPrepare.cpp
lib/Transforms/Utils/InlineFunction.cpp
test/Transforms/Inline/inline_invoke.ll