]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-parser.c (c_parser_omp_atomic): Pass location of assignment operator to c_finish_om...
authorTom Tromey <tromey@redhat.com>
Wed, 5 Jan 2011 14:51:20 +0000 (14:51 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Wed, 5 Jan 2011 14:51:20 +0000 (14:51 +0000)
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

gcc/ChangeLog
gcc/c-family/ChangeLog
gcc/c-family/c-common.c
gcc/c-family/c-common.h
gcc/c-parser.c
gcc/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/typeck.c

index 14397ef9b61a7ba6982c80f350de63aae3cc189f..1a072a5d9ee8e78b46b82705ae2f354a49e78102 100644 (file)
@@ -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
index bf0bc7689f7c2d101aa2685f5d594fca5bc10eff..668524415b996dca5cde782cf6781a2e68da3499 100644 (file)
@@ -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
index 8eb849aa17466116e67d0952cb324d42fb984286..4af7ef4ee4e7cee883146a71fee5d7bacc8c5b87 100644 (file)
@@ -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 ();
index 12845757c093eb5a88da5e1d3d12ce7fddce55cd..05456d33abd50bc067f7bc77e40e344cb95cc7f1 100644 (file)
@@ -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);
index 4eaf8680f67ad86e06d54d331c582a03e0d222aa..1e868afddf6c40836dd57f6125d63ad655e24f42 100644 (file)
@@ -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;
index 44223fb38da39cfe08b16f7bbf1331c0e085b194..149235a8e775e61cdcbbba7004c2f5de07674e85 100644 (file)
@@ -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 *);
 \f
@@ -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
index 854fff306202391a6180bfb0a9ca74f4489bdc7b..67411a5fe09e61450ae4cacc21e1c0eb94a06c77 100644 (file)
@@ -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
index 64ca9bd79f51b8bcbd93ec4cc7be9c3bd4bf3e9c..c062f0fa5e4d005bb753d02df571522b3504f931 100644 (file)
@@ -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))