From 5b5dce39b8c076c185ce1fa19d4800d6129f3f53 Mon Sep 17 00:00:00 2001 From: Marek Polacek Date: Wed, 7 Oct 2015 06:52:45 +0000 Subject: [PATCH] cp-gimplify.c (genericize_if_stmt): Use protected_set_expr_location. * cp-gimplify.c (genericize_if_stmt): Use protected_set_expr_location. (genericize_cp_loop): Likewise. * decl.c (cxx_maybe_build_cleanup): Likewise. * parser.c (cp_parser_binary_expression): Likewise. (cp_parser_omp_for_loop): Likewise. (cp_parser_omp_construct): Likewise. * semantics.c (finish_transaction_stmt): Likewise. (build_transaction_expr): Likewise. From-SVN: r228560 --- gcc/cp/ChangeLog | 11 +++++++++++ gcc/cp/cp-gimplify.c | 7 +++---- gcc/cp/decl.c | 3 +-- gcc/cp/parser.c | 10 ++++------ gcc/cp/semantics.c | 8 +++----- 5 files changed, 22 insertions(+), 17 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 1b2f6b4cd74..3c785451126 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,14 @@ +2015-10-07 Marek Polacek + + * cp-gimplify.c (genericize_if_stmt): Use protected_set_expr_location. + (genericize_cp_loop): Likewise. + * decl.c (cxx_maybe_build_cleanup): Likewise. + * parser.c (cp_parser_binary_expression): Likewise. + (cp_parser_omp_for_loop): Likewise. + (cp_parser_omp_construct): Likewise. + * semantics.c (finish_transaction_stmt): Likewise. + (build_transaction_expr): Likewise. + 2015-10-06 Jason Merrill PR c++/67810 diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c index 32a3a89cb04..9b6ac89d1a1 100644 --- a/gcc/cp/cp-gimplify.c +++ b/gcc/cp/cp-gimplify.c @@ -207,8 +207,8 @@ genericize_if_stmt (tree *stmt_p) stmt = else_; else stmt = build3 (COND_EXPR, void_type_node, cond, then_, else_); - if (CAN_HAVE_LOCATION_P (stmt) && !EXPR_HAS_LOCATION (stmt)) - SET_EXPR_LOCATION (stmt, locus); + if (!EXPR_HAS_LOCATION (stmt)) + protected_set_expr_location (stmt, locus); *stmt_p = stmt; } @@ -231,8 +231,7 @@ genericize_cp_loop (tree *stmt_p, location_t start_locus, tree cond, tree body, blab = begin_bc_block (bc_break, start_locus); clab = begin_bc_block (bc_continue, start_locus); - if (incr && EXPR_P (incr)) - SET_EXPR_LOCATION (incr, start_locus); + protected_set_expr_location (incr, start_locus); cp_walk_tree (&cond, cp_genericize_r, data, NULL); cp_walk_tree (&body, cp_genericize_r, data, NULL); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index eff52819aca..8eb9cc2e27f 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -14964,8 +14964,7 @@ cxx_maybe_build_cleanup (tree decl, tsubst_flags_t complain) a "jumpy" behaviour for users of debuggers when they step around the end of the block. So let's unset the location of the destructor call instead. */ - if (cleanup != NULL && EXPR_P (cleanup)) - SET_EXPR_LOCATION (cleanup, UNKNOWN_LOCATION); + protected_set_expr_location (cleanup, UNKNOWN_LOCATION); if (cleanup && !lookup_attribute ("warn_unused", TYPE_ATTRIBUTES (TREE_TYPE (decl))) diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index f9b668ab0cb..d4ef7f9d864 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -8612,8 +8612,7 @@ cp_parser_binary_expression (cp_parser* parser, bool cast_p, rhs, rhs_type, &overload, complain_flags (decltype_p)); current.lhs_type = current.tree_type; - if (EXPR_P (current.lhs)) - SET_EXPR_LOCATION (current.lhs, current.loc); + protected_set_expr_location (current.lhs, current.loc); /* If the binary operator required the use of an overloaded operator, then this expression cannot be an integral constant-expression. @@ -32046,8 +32045,8 @@ cp_parser_omp_for_loop (cp_parser *parser, enum tree_code code, tree clauses, incr = cp_parser_omp_for_incr (parser, real_decl); else incr = cp_parser_expression (parser); - if (CAN_HAVE_LOCATION_P (incr) && !EXPR_HAS_LOCATION (incr)) - SET_EXPR_LOCATION (incr, input_location); + if (!EXPR_HAS_LOCATION (incr)) + protected_set_expr_location (incr, input_location); } if (!cp_parser_require (parser, CPP_CLOSE_PAREN, RT_CLOSE_PAREN)) @@ -34045,8 +34044,7 @@ cp_parser_omp_construct (cp_parser *parser, cp_token *pragma_tok) gcc_unreachable (); } - if (stmt) - SET_EXPR_LOCATION (stmt, pragma_tok->location); + protected_set_expr_location (stmt, pragma_tok->location); } /* Transactional Memory parsing routines. */ diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index ea403987b23..c1f43301b00 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -7086,9 +7086,8 @@ finish_transaction_stmt (tree stmt, tree compound_stmt, int flags, tree noex) { tree body = build_must_not_throw_expr (TRANSACTION_EXPR_BODY (stmt), noex); - /* This may not be true when the STATEMENT_LIST is empty. */ - if (EXPR_P (body)) - SET_EXPR_LOCATION (body, EXPR_LOCATION (TRANSACTION_EXPR_BODY (stmt))); + protected_set_expr_location + (body, EXPR_LOCATION (TRANSACTION_EXPR_BODY (stmt))); TREE_SIDE_EFFECTS (body) = 1; TRANSACTION_EXPR_BODY (stmt) = body; } @@ -7108,8 +7107,7 @@ build_transaction_expr (location_t loc, tree expr, int flags, tree noex) if (noex) { expr = build_must_not_throw_expr (expr, noex); - if (EXPR_P (expr)) - SET_EXPR_LOCATION (expr, loc); + protected_set_expr_location (expr, loc); TREE_SIDE_EFFECTS (expr) = 1; } ret = build1 (TRANSACTION_EXPR, TREE_TYPE (expr), expr); -- 2.30.2