Fix cleanup location for try_finally_expr. 59/138559/4
authorSlava Barinov <v.barinov@samsung.com>
Thu, 6 Jul 2017 13:14:58 +0000 (16:14 +0300)
committerSlava Barinov <v.barinov@samsung.com>
Thu, 3 Aug 2017 10:49:15 +0000 (13:49 +0300)
commitdb1663e7932e2e1878c40273f0488dcead9656a8
tree28db833e2409a61a7cfb874a59b65c05ac61c180
parent56c888a5a7232334e1d726beadbba66c26a80867
Fix cleanup location for try_finally_expr.

        gcc/
        * tree.def: Add STATEMENT_LIST_END tree code.
        * tree.c: Add STATEMENT_LIST_END handling as TS_COMMON.
        * gimplify.c (gimplify_expr): Use STATEMENT_LIST_END location to
        provide right information for try_finally_expr.
        * tree-eh.c (lower_try_finally_onedest): Set finally location
        * c-family/c-semantics.c (pop_stmt_list): Support single-statement
        lists extraction with STATEMENT_LIST_END in the end.
        * fold-const.c (operand_equal_p): Add STATEMENT_LIST_END support.
        gcc/cp/
        * parser.c (cp_parser_compound_statement): Use STATEMENT_LIST_END
        to keep the location of closing brace.
        * pt.c: Handle STATEMENT_LIST_END.
        * constraint.cc (check_function_concept): Handle concept definitions
        with STATEMENT_LIST_END.
        * error.c (dump_expr): Add STATEMENT_LIST_END support.
        gcc/testsuite/
        * g++.dg/ext/statement-list-end.C: New.

Change-Id: Id22e953b97b52d0f2a2ba44065337a59639578db
Signed-off-by: Slava Barinov <v.barinov@samsung.com>
20 files changed:
gcc/ChangeLog
gcc/c-family/c-semantics.c
gcc/cp/ChangeLog
gcc/cp/constexpr.c
gcc/cp/constraint.cc
gcc/cp/error.c
gcc/cp/parser.c
gcc/cp/pt.c
gcc/fold-const.c
gcc/gimple.c
gcc/gimplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/statement-list-end.C [new file with mode: 0644]
gcc/testsuite/g++.dg/gcov/gcov-2.C
gcc/testsuite/g++.dg/parse/error26.C
gcc/testsuite/g++.dg/tm/inherit2.C
gcc/testsuite/g++.dg/tm/unsafe1.C
gcc/tree-eh.c
gcc/tree.c
gcc/tree.def