* 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
+2015-10-07 Marek Polacek <polacek@redhat.com>
+
+ * 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 <jason@redhat.com>
PR c++/67810
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;
}
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);
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)))
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.
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))
gcc_unreachable ();
}
- if (stmt)
- SET_EXPR_LOCATION (stmt, pragma_tok->location);
+ protected_set_expr_location (stmt, pragma_tok->location);
}
\f
/* Transactional Memory parsing routines. */
{
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;
}
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);