aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2015-10-07 06:52:45 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2015-10-07 06:52:45 +0000
commit5b5dce39b8c076c185ce1fa19d4800d6129f3f53 (patch)
treeadefe0417cb5fcc10eaf977e1ba8716919e63640 /gcc
parent00852255e4a0d3b67ed853aacbc4aa4f4dfe724a (diff)
downloadgcc-5b5dce39b8c076c185ce1fa19d4800d6129f3f53.zip
gcc-5b5dce39b8c076c185ce1fa19d4800d6129f3f53.tar.gz
gcc-5b5dce39b8c076c185ce1fa19d4800d6129f3f53.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog11
-rw-r--r--gcc/cp/cp-gimplify.c7
-rw-r--r--gcc/cp/decl.c3
-rw-r--r--gcc/cp/parser.c10
-rw-r--r--gcc/cp/semantics.c8
5 files changed, 22 insertions, 17 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1b2f6b4..3c78545 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,14 @@
+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
diff --git a/gcc/cp/cp-gimplify.c b/gcc/cp/cp-gimplify.c
index 32a3a89..9b6ac89 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 eff5281..8eb9cc2 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 f9b668a..d4ef7f9 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 ea40398..c1f4330 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);