r273444 - in /trunk/gcc: ChangeLog testsuite/Ch...

aoliva@gcc.gnu.org aoliva@gcc.gnu.org
Fri Jul 12 13:51:00 GMT 2019


Author: aoliva
Date: Fri Jul 12 13:51:00 2019
New Revision: 273444

URL: https://gcc.gnu.org/viewcvs?rev=273444&root=gcc&view=rev
Log:
allow EH to escape from GIMPLE_EH_ELSE ELSE block

The only preexisting use of GIMPLE_EH_ELSE, for transactional memory
commits, did not allow exceptions to escape from the ELSE path.  The
trick it uses to allow the ELSE path to see the propagating exception
does not work very well if the exception cleanup raises further
exceptions: the ELSE block is configured to handle exceptions in
itself.  This confuses the heck out of CFG and EH cleanups.

Basing the lowering context for the ELSE block on outer_state, rather
than this_state, gets us the expected enclosing handler.


for  gcc/ChangeLog

	* tree-eh.c (honor_protect_cleanup_actions): Use outer_
	rather than this_state as the lowering context for the ELSE
	seq in a GIMPLE_EH_ELSE.

for  gcc/testsuite/ChangeLog

	* gcc.dg/gimplefe-44.c: New.

Added:
    trunk/gcc/testsuite/gcc.dg/gimplefe-44.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-eh.c



More information about the Gcc-cvs mailing list