aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2011-01-05 14:51:20 +0000
committerTom Tromey <tromey@gcc.gnu.org>2011-01-05 14:51:20 +0000
commit7bd111573699079b760f18e81439cd7dc5268cca (patch)
treec6fc2880160c7b40280f2a22134ddb900dd3730f
parentcd656e236051edd0e84bbadea2d8bd174d604d08 (diff)
downloadgcc-7bd111573699079b760f18e81439cd7dc5268cca.zip
gcc-7bd111573699079b760f18e81439cd7dc5268cca.tar.gz
gcc-7bd111573699079b760f18e81439cd7dc5268cca.tar.bz2
c-parser.c (c_parser_omp_atomic): Pass location of assignment operator to c_finish_omp_atomic.
gcc * c-parser.c (c_parser_omp_atomic): Pass location of assignment operator to c_finish_omp_atomic. * c-typeck.c (lvalue_or_else): Add 'loc' argument. (build_unary_op): Update. (build_modify_expr): Update. (build_asm_expr): Update. gcc/cp * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error. (lvalue_or_else): Likewise. gcc/c-family * c-common.h (lvalue_error): Update. * c-common.c (lvalue_error): Add 'loc' argument. Call error_at, not error. From-SVN: r168514
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/c-family/ChangeLog6
-rw-r--r--gcc/c-family/c-common.c17
-rw-r--r--gcc/c-family/c-common.h4
-rw-r--r--gcc/c-parser.c5
-rw-r--r--gcc/c-typeck.c22
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/typeck.c6
8 files changed, 50 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14397ef..1a072a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2011-01-05 Tom Tromey <tromey@redhat.com>
+
+ * c-parser.c (c_parser_omp_atomic): Pass location of assignment
+ operator to c_finish_omp_atomic.
+ * c-typeck.c (lvalue_or_else): Add 'loc' argument.
+ (build_unary_op): Update.
+ (build_modify_expr): Update.
+ (build_asm_expr): Update.
+
2011-01-05 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
* config/spu/spu.c (emit_nop_for_insn): Set INSN_LOCATOR for
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index bf0bc76..6685244 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,9 @@
+2011-01-05 Tom Tromey <tromey@redhat.com>
+
+ * c-common.h (lvalue_error): Update.
+ * c-common.c (lvalue_error): Add 'loc' argument. Call error_at,
+ not error.
+
2010-12-29 Nicola Pero <nicola@nicola.brainstorm.co.uk>
PR objc/47075
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index 8eb849a..4af7ef4 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -1,6 +1,6 @@
/* Subroutines shared by all languages that are variants of C.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -8631,27 +8631,28 @@ readonly_error (tree arg, enum lvalue_use use)
}
/* Print an error message for an invalid lvalue. USE says
- how the lvalue is being used and so selects the error message. */
+ how the lvalue is being used and so selects the error message. LOC
+ is the location for the error. */
void
-lvalue_error (enum lvalue_use use)
+lvalue_error (location_t loc, enum lvalue_use use)
{
switch (use)
{
case lv_assign:
- error ("lvalue required as left operand of assignment");
+ error_at (loc, "lvalue required as left operand of assignment");
break;
case lv_increment:
- error ("lvalue required as increment operand");
+ error_at (loc, "lvalue required as increment operand");
break;
case lv_decrement:
- error ("lvalue required as decrement operand");
+ error_at (loc, "lvalue required as decrement operand");
break;
case lv_addressof:
- error ("lvalue required as unary %<&%> operand");
+ error_at (loc, "lvalue required as unary %<&%> operand");
break;
case lv_asm:
- error ("lvalue required in asm statement");
+ error_at (loc, "lvalue required in asm statement");
break;
default:
gcc_unreachable ();
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index 1284575..05456d3 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -1,6 +1,6 @@
/* Definitions for c-common.c.
Copyright (C) 1987, 1993, 1994, 1995, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -929,7 +929,7 @@ enum lvalue_use {
};
extern void readonly_error (tree, enum lvalue_use);
-extern void lvalue_error (enum lvalue_use);
+extern void lvalue_error (location_t, enum lvalue_use);
extern void invalid_indirection_error (location_t, tree, ref_operator);
extern int complete_array_type (tree *, tree, bool);
diff --git a/gcc/c-parser.c b/gcc/c-parser.c
index 4eaf868..1e868af 100644
--- a/gcc/c-parser.c
+++ b/gcc/c-parser.c
@@ -1,6 +1,6 @@
/* Parser for C and Objective-C.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Parser actions based on the old Bison parser; structure somewhat
@@ -9104,6 +9104,9 @@ c_parser_omp_atomic (location_t loc, c_parser *parser)
goto saw_error;
}
+ /* Arrange to pass the location of the assignment operator to
+ c_finish_omp_atomic. */
+ loc = c_parser_peek_token (parser)->location;
c_parser_consume_token (parser);
{
location_t rhs_loc = c_parser_peek_token (parser)->location;
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c
index 44223fb..149235a 100644
--- a/gcc/c-typeck.c
+++ b/gcc/c-typeck.c
@@ -1,6 +1,6 @@
/* Build expressions with type checking for C compiler.
Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
This file is part of GCC.
@@ -98,7 +98,7 @@ static void set_nonincremental_init (struct obstack *);
static void set_nonincremental_init_from_string (tree, struct obstack *);
static tree find_init_member (tree, struct obstack *);
static void readonly_warning (tree, enum lvalue_use);
-static int lvalue_or_else (const_tree, enum lvalue_use);
+static int lvalue_or_else (location_t, const_tree, enum lvalue_use);
static void record_maybe_used_decl (tree);
static int comptypes_internal (const_tree, const_tree, bool *, bool *);
@@ -3564,7 +3564,8 @@ build_unary_op (location_t location,
/* Complain about anything that is not a true lvalue. In
Objective-C, skip this check for property_refs. */
if (!objc_is_property_ref (arg)
- && !lvalue_or_else (arg, ((code == PREINCREMENT_EXPR
+ && !lvalue_or_else (location,
+ arg, ((code == PREINCREMENT_EXPR
|| code == POSTINCREMENT_EXPR)
? lv_increment
: lv_decrement)))
@@ -3747,7 +3748,7 @@ build_unary_op (location_t location,
/* Anything not already handled and not a true memory reference
or a non-lvalue array is an error. */
else if (typecode != FUNCTION_TYPE && !flag
- && !lvalue_or_else (arg, lv_addressof))
+ && !lvalue_or_else (location, arg, lv_addressof))
return error_mark_node;
/* Move address operations inside C_MAYBE_CONST_EXPR to simplify
@@ -3905,15 +3906,16 @@ readonly_warning (tree arg, enum lvalue_use use)
/* Return nonzero if REF is an lvalue valid for this language;
otherwise, print an error message and return zero. USE says
- how the lvalue is being used and so selects the error message. */
+ how the lvalue is being used and so selects the error message.
+ LOCATION is the location at which any error should be reported. */
static int
-lvalue_or_else (const_tree ref, enum lvalue_use use)
+lvalue_or_else (location_t loc, const_tree ref, enum lvalue_use use)
{
int win = lvalue_p (ref);
if (!win)
- lvalue_error (use);
+ lvalue_error (loc, use);
return win;
}
@@ -4801,7 +4803,7 @@ build_modify_expr (location_t location, tree lhs, tree lhs_origtype,
return error_mark_node;
/* For ObjC properties, defer this check. */
- if (!objc_is_property_ref (lhs) && !lvalue_or_else (lhs, lv_assign))
+ if (!objc_is_property_ref (lhs) && !lvalue_or_else (location, lhs, lv_assign))
return error_mark_node;
if (TREE_CODE (rhs) == EXCESS_PRECISION_EXPR)
@@ -4851,7 +4853,7 @@ build_modify_expr (location_t location, tree lhs, tree lhs_origtype,
return result;
/* Else, do the check that we postponed for Objective-C. */
- if (!lvalue_or_else (lhs, lv_assign))
+ if (!lvalue_or_else (location, lhs, lv_assign))
return error_mark_node;
}
@@ -8479,7 +8481,7 @@ build_asm_expr (location_t loc, tree string, tree outputs, tree inputs,
get an error. Gross, but ... */
STRIP_NOPS (output);
- if (!lvalue_or_else (output, lv_asm))
+ if (!lvalue_or_else (loc, output, lv_asm))
output = error_mark_node;
if (output != error_mark_node
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 854fff3..67411a5 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2011-01-05 Tom Tromey <tromey@redhat.com>
+
+ * typeck.c (cp_build_addr_expr_1): Update call to lvalue_error.
+ (lvalue_or_else): Likewise.
+
2011-01-01 Kai Tietz <kai.tietz@onevision.com>
PR target/38662
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 64ca9bd..c062f0f 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1,6 +1,6 @@
/* Build expressions with type checking for C++ compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
- 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+ 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Hacked by Michael Tiemann (tiemann@cygnus.com)
@@ -4756,7 +4756,7 @@ cp_build_addr_expr_1 (tree arg, bool strict_lvalue, tsubst_flags_t complain)
if (kind == clk_none)
{
if (complain & tf_error)
- lvalue_error (lv_addressof);
+ lvalue_error (input_location, lv_addressof);
return error_mark_node;
}
if (strict_lvalue && (kind & (clk_rvalueref|clk_class)))
@@ -8219,7 +8219,7 @@ lvalue_or_else (tree ref, enum lvalue_use use, tsubst_flags_t complain)
if (kind == clk_none)
{
if (complain & tf_error)
- lvalue_error (use);
+ lvalue_error (input_location, use);
return 0;
}
else if (kind & (clk_rvalueref|clk_class))