diff options
author | Tom Tromey <tromey@redhat.com> | 2011-01-05 14:51:20 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2011-01-05 14:51:20 +0000 |
commit | 7bd111573699079b760f18e81439cd7dc5268cca (patch) | |
tree | c6fc2880160c7b40280f2a22134ddb900dd3730f /gcc | |
parent | cd656e236051edd0e84bbadea2d8bd174d604d08 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/c-family/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 17 | ||||
-rw-r--r-- | gcc/c-family/c-common.h | 4 | ||||
-rw-r--r-- | gcc/c-parser.c | 5 | ||||
-rw-r--r-- | gcc/c-typeck.c | 22 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 6 |
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)) |