]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - opencl/llvm.git/commit
Fix the inliner to maintain the current de facto invoke semantics:
authorJohn McCall <rjmccall@apple.com>
Fri, 27 May 2011 18:34:38 +0000 (18:34 +0000)
committerJohn McCall <rjmccall@apple.com>
Fri, 27 May 2011 18:34:38 +0000 (18:34 +0000)
commita3de16bc8f36638d5444e3e7b0112998af54f826
tree347a748b21b29f74599252689782c948b28362ea
parent11f6cc96bf794c7ede7bf8e24805f4187b24c549
Fix the inliner to maintain the current de facto invoke semantics:
  - the selector for the landing pad must provide all available information
    about the handlers, filters, and cleanups within that landing pad
  - calls to _Unwind_Resume must be converted to branches to the enclosing
    lpad so as to avoid re-entering the unwinder when the lpad claimed it
    was going to handle the exception in some way
This is quite specific to libUnwind-based unwinding.  In an effort to not
interfere too badly with other unwinders, and with existing hacks in frontends,
this only triggers on _Unwind_Resume (not _Unwind_Resume_or_Rethrow) and does
nothing with selectors if it cannot find a selector call for either lpad.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132200 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/InlineFunction.cpp
test/Transforms/Inline/inline_invoke.ll [new file with mode: 0644]