Support __cxa_free_exception and fix exception handling.
gcc/cp/ * except.c (do_free_exception): Use transactional wrapper. libitm/ * testsuite/libitm.c++/eh-5.C: New. * libitm.h (_ITM_cxa_free_exception): New. * libitm.map (_ITM_cxa_free_exception): Add it. * libitm.texi: Update ABI docs. * libitm_i.h (gtm_transaction_cp::cxa_unthrown): Remove. (gtm_transaction_cp::cxa_uncaught_count): Add. (gtm_thread::cxa_unthrown): Remove. (gtm_thread::cxa_uncaught_count_ptr): Add. (gtm_thread::cxa_uncaught_count): Add. (gtm_thread::drop_references_allocations): Rename to... (gtm_thread::discard_allocation): ... this and adapt. (gtm_thread::init_cpp_exceptions): New. * beginend.cc (gtm_thread::gtm_thread): Adapt EH handling. (gtm_thread::begin_transaction): Likewise. (gtm_transaction_cp::save): Likewise. (gtm_thread::trycommit): Likewise. * eh_cpp.cc: Add overview comments. (__cxa_eh_globals, __cxa_get_globals, __cxa_free_exception): Declare. (free_any_exception, _ITM_cxa_free_exception): New. (gtm_thread::init_cpp_exceptions): Define. (_ITM_cxa_allocate_exception, _ITM_cxa_throw): Adapt. (_ITM_cxa_begin_catch, _ITM_cxa_end_catch): Likewise. (gtm_thread::revert_cpp_exceptions): Likewise. From-SVN: r230634
Showing
- gcc/cp/ChangeLog 4 additions, 0 deletionsgcc/cp/ChangeLog
- gcc/cp/except.c 10 additions, 0 deletionsgcc/cp/except.c
- libitm/ChangeLog 26 additions, 0 deletionslibitm/ChangeLog
- libitm/beginend.cc 8 additions, 2 deletionslibitm/beginend.cc
- libitm/eh_cpp.cc 121 additions, 19 deletionslibitm/eh_cpp.cc
- libitm/libitm.h 1 addition, 0 deletionslibitm/libitm.h
- libitm/libitm.map 1 addition, 0 deletionslibitm/libitm.map
- libitm/libitm.texi 19 additions, 5 deletionslibitm/libitm.texi
- libitm/libitm_i.h 7 additions, 4 deletionslibitm/libitm_i.h
- libitm/testsuite/libitm.c++/eh-5.C 46 additions, 0 deletionslibitm/testsuite/libitm.c++/eh-5.C
Loading
Please register or sign in to comment