[llvm-commits] [llvm] r129302 - /llvm/trunk/lib/CodeGen/SjLjEHPrepare.cpp

Bill Wendling wendling at apple.com
Tue Apr 12 00:49:55 PDT 2011


On Apr 11, 2011, at 11:11 PM, Duncan Sands wrote:

> Hi Bill,
> 
>> It turns out, we get there if the _Unwind_Resume_or_Rethrow call returns (which
>> it's not supposed to do).
> 
> IIRC it will return if there are only cleanups all the way up the stack.  Then
> you can use _Unwind_ForcedUnwind to unwind anyway IIRC (Ada uses this because
> it always runs cleanups [*], unlike C++ which for some reason thinks that
> cleanups don't matter if there is nothing else to do).  I might be remembering
> wrong though.
> 
That's correct. And it's probably meant to use _Unwind_ForceUnwind afterwards. But at the point where this is happening, we no longer have such information (unfortunately).

> [*] For example a cleanup that shuts down the reactor.

Which is why Ada is used in such situations. :-) Though I would hate to have these systems using exceptions...

-bw




More information about the llvm-commits mailing list