]> granicus.if.org Git - clang/commit
When re-raising an exception after a cleanup, we need to call _Unwind_Resume_or_Rethrow
authorJohn McCall <rjmccall@apple.com>
Wed, 11 Aug 2010 20:59:53 +0000 (20:59 +0000)
committerJohn McCall <rjmccall@apple.com>
Wed, 11 Aug 2010 20:59:53 +0000 (20:59 +0000)
commita5f2de2e49e25ece82dd9fd63d8f390a7cda6417
tree61fdc8f8870de75fde93bce6186c43921ca3a58e
parent1cf26f5c103cd2d6d1e14d4d6b72df477d8bf107
When re-raising an exception after a cleanup, we need to call _Unwind_Resume_or_Rethrow
instead of _Unwind_Resume.  With SJLJ exceptions, this is spelled
"_Unwind_SjLj_Resume_or_Rethrow", not "_Unwind_SjLj_Resume", which has
significantly different semantics.

We should actually never be generating a call to _Unwind_SjLj_Resume directly;
even if we were generating true cleanups (which we aren't because of the
horrible hack), we should be calling __cxa_end_cleanup() on ARM.  I
haven't implemented this because there's little point as long as the HH is
present.

I believe this fixes <rdar://problem/8281377>.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110851 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/CGException.cpp
test/CodeGenObjC/unwind-fn.m