Support __cxa_free_exception and fix exception handling.
authorTorvald Riegel <triegel@redhat.com>
Fri, 20 Nov 2015 00:10:08 +0000 (00:10 +0000)
committerTorvald Riegel <torvald@gcc.gnu.org>
Fri, 20 Nov 2015 00:10:08 +0000 (00:10 +0000)
commit258c1d072225bac0a5063ce486907c9b6eb357e2
treea5f0213fc60fbb82a4c54b886984d2979e44646d
parent9afebea2d5e12b574d70497a87f0d2fd1b1d7f90
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
gcc/cp/ChangeLog
gcc/cp/except.c
libitm/ChangeLog
libitm/beginend.cc
libitm/eh_cpp.cc
libitm/libitm.h
libitm/libitm.map
libitm/libitm.texi
libitm/libitm_i.h
libitm/testsuite/libitm.c++/eh-5.C [new file with mode: 0644]