introduce EH_ELSE_EXPR tree and gimplifier
commitebebc928d8b0d17676e751848892f927373b1fe5
authorAlexandre Oliva <oliva@adacore.com>
Thu, 4 Jul 2019 15:00:00 +0000 (4 15:00 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Thu, 4 Jul 2019 15:00:00 +0000 (4 15:00 +0000)
tree5b00c4867b3d58dc4865627ffab29da1e0baa2d0
parente57c896e86c4257741b574d99d7cacbfda219755
introduce EH_ELSE_EXPR tree and gimplifier

I found GIMPLE_EH_ELSE offered exactly the semantics I needed for some
Ada changes yet to be contributed, but GIMPLE_EH_ELSE was only built
by GIMPLE passes, and I needed to build earlier something that
eventually became GIMPLE_EH_ELSE.

This patch does that, introducing an EH_ELSE_EXPR tree, and logic to
dump it and to gimplify it.

for  gcc/ChangeLog

* doc/generic.texi (Cleanups): Document EH_ELSE_EXPR.
* except.c: Likewise.
* expr.c (expand_expr_real_1): Reject it.
* gimplify.c (gimplify_expr): Gimplify it, within
TRY_FINALLY_EXPR.
* tree-dump.c (dequeue_and_dump): Dump it.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree.c (block_may_fallthru): Handle it.
* tree.def (EH_ELSE_EXPR): Introduce it.
* gimple-pretty-print.c (dump_gimple_try): Dump TRY_FINALLY
with GIMPLE_EH_ELSE as try/finally/else.

From-SVN: r273084
gcc/ChangeLog
gcc/doc/generic.texi
gcc/except.c
gcc/expr.c
gcc/gimple-pretty-print.c
gcc/gimplify.c
gcc/tree-dump.c
gcc/tree-pretty-print.c
gcc/tree.c
gcc/tree.def