[LLVMdev] clang/g++ frontend: can __cxa_end_catch throw?

Yuri yuri at rawbw.com
Mon Jul 12 13:22:02 PDT 2010


On 07/12/2010 12:41, John McCall wrote:
> For your test case, clang++'s code is correct (and better) because
> __cxa_end_catch won't throw for a caught exception of that type.  That 
> said,

Which type? There are two pending exceptions at the moment when 
__cxa_end_catch is called, both with invisible destructors: E* and 
unknown type thrown from mycatching(). __cxa_end_catch attempts to 
delete E* and proceed to rethrow the unknown one when the other unknown 
exception is thrown by E::~E(). Isn't this the condition for terminate()?

Yuri



More information about the llvm-dev mailing list