c-tree.h (define_label): Replace filename and lineno arguments with a location_t.
authorNathan Sidwell <nathan@codesourcery.com>
Tue, 1 Jul 2003 09:00:45 +0000 (09:00 +0000)
committerNathan Sidwell <nathan@gcc.gnu.org>
Tue, 1 Jul 2003 09:00:45 +0000 (09:00 +0000)
* c-tree.h (define_label): Replace filename and lineno arguments
with a location_t.
* c-decl.c (poplevel): Adjust define_label call.
(pop_label_level): Likewise.
(define_label): Replace filename and lineno arguments with a
location_t.
(store_parm_decls): Use DECL_SOURCE_LOCATION.
* c-parse.in (label): Adjust define_label call.

* cp/cp-tree.h (define_label): Replace filename and lineno
arguments with a location_t.
* cp/decl.c (pop_label): Adjust define_label call.
(define_label): Replace filename and lineno arguments with a
location_t.
* cp/semantics.c (finish_label): Adjust define_label call.

* java/decl.c (poplevel): Adjust define_label call.

From-SVN: r68766

gcc/ChangeLog
gcc/c-decl.c
gcc/c-parse.in
gcc/c-tree.h
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/semantics.c
gcc/java/ChangeLog
gcc/java/decl.c

index a8f4e3367f06527551df25b29889d853ab3a037f..f0272ccae669322b5b20d7271373c382ad746ae0 100644 (file)
@@ -1,3 +1,14 @@
+2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * c-tree.h (define_label): Replace filename and lineno arguments
+       with a location_t.
+       * c-decl.c (poplevel): Adjust define_label call.
+       (pop_label_level): Likewise.
+       (define_label): Replace filename and lineno arguments with a
+       location_t.
+       (store_parm_decls): Use DECL_SOURCE_LOCATION.
+       * c-parse.in (label): Adjust define_label call.
+
 2003-07-01  Neil Booth  <neil@daikokuya.co.uk>
 
        * config/sol2.h, config/alpha/alpha.h, config/alpha/linux.h,
index 70d31fe176fd0f540b94ab307e15fb6d51ebd92d..557438b935ab10caba5f77131e186517a47df708 100644 (file)
@@ -607,8 +607,7 @@ poplevel (int keep, int reverse, int functionbody)
            {
              error_with_decl (label, "label `%s' used but not defined");
              /* Avoid crashing later.  */
-             define_label (input_filename, input_line,
-                           DECL_NAME (label));
+             define_label (input_location, DECL_NAME (label));
            }
          else if (warn_unused_label && !TREE_USED (label))
            warning_with_decl (label, "label `%s' defined but not used");
@@ -699,8 +698,7 @@ pop_label_level (void)
              error_with_decl (TREE_VALUE (link),
                               "label `%s' used but not defined");
              /* Avoid crashing later.  */
-             define_label (input_filename, input_line,
-                           DECL_NAME (TREE_VALUE (link)));
+             define_label (input_location, DECL_NAME (TREE_VALUE (link)));
            }
          else if (warn_unused_label && !TREE_USED (TREE_VALUE (link)))
            warning_with_decl (TREE_VALUE (link),
@@ -2055,12 +2053,9 @@ shadow_label (tree name)
    Otherwise return 0.  */
 
 tree
-define_label (const char* filename, int line, tree name)
+define_label (location_t location, tree name)
 {
-  location_t locus;
   tree decl = lookup_label (name);
-  locus.file = filename;
-  locus.line = line;
 
   /* If label with this name is known from an outer context, shadow it.  */
   if (decl != 0 && DECL_CONTEXT (decl) != current_function_decl)
@@ -2072,11 +2067,11 @@ define_label (const char* filename, int line, tree name)
 
   if (warn_traditional && !in_system_header && lookup_name (name))
     warning ("%Htraditional C lacks a separate namespace for labels, "
-             "identifier `%s' conflicts", &locus, IDENTIFIER_POINTER (name));
+             "identifier `%s' conflicts", &location, IDENTIFIER_POINTER (name));
 
   if (DECL_INITIAL (decl) != 0)
     {
-      error ("%Hduplicate label `%s'", &locus, IDENTIFIER_POINTER (name));
+      error ("%Hduplicate label `%s'", &location, IDENTIFIER_POINTER (name));
       return 0;
     }
   else
@@ -2084,7 +2079,7 @@ define_label (const char* filename, int line, tree name)
       /* Mark label as having been defined.  */
       DECL_INITIAL (decl) = error_mark_node;
       /* Say where in the source.  */
-      DECL_SOURCE_LOCATION (decl) = locus;
+      DECL_SOURCE_LOCATION (decl) = location;
       return decl;
     }
 }
@@ -5879,8 +5874,7 @@ store_parm_decls (void)
              found = build_decl (PARM_DECL, TREE_VALUE (parm),
                                  integer_type_node);
              DECL_ARG_TYPE (found) = TREE_TYPE (found);
-             DECL_SOURCE_LINE (found) = DECL_SOURCE_LINE (fndecl);
-             DECL_SOURCE_FILE (found) = DECL_SOURCE_FILE (fndecl);
+             DECL_SOURCE_LOCATION (found) = DECL_SOURCE_LOCATION (fndecl);
              if (flag_isoc99)
                pedwarn_with_decl (found, "type of `%s' defaults to `int'");
              else if (extra_warnings)
index 55d06b4030c7de066ca775a44e26c09f673379ac..d575013848713ccc31e38f2aaf0454fad7d3d8d1 100644 (file)
@@ -2446,7 +2446,7 @@ label:      CASE expr_no_commas ':'
                 { stmt_count++;
                  $$ = do_case (NULL_TREE, NULL_TREE); }
        | identifier save_location ':' maybe_attribute
-               { tree label = define_label ($2.file, $2.line, $1);
+               { tree label = define_label ($2, $1);
                  stmt_count++;
                  if (label)
                    {
index bd3e22eb48c74585fb6ab49d648b5447d5653a77..f32eb1196f17b8024243c53866094791b41731e2 100644 (file)
@@ -189,7 +189,7 @@ extern void check_for_loop_decls (void);
 extern void clear_parm_order (void);
 extern int  complete_array_type (tree, tree, int);
 extern void declare_parm_level (int);
-extern tree define_label (const char *, int, tree);
+extern tree define_label (location_t, tree);
 extern void finish_decl (tree, tree, tree);
 extern tree finish_enum (tree, tree, tree);
 extern void finish_function (int, int);
index 45a879d590d07ada1d33bc827a497f2a27818a46..3b9601458ff4fb6d4ce199eafb24eee8c4736fd7 100644 (file)
@@ -1,3 +1,12 @@
+2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * cp-tree.h (define_label): Replace filename and lineno
+       arguments with a location_t.
+       * decl.c (pop_label): Adjust define_label call.
+       (define_label): Replace filename and lineno arguments with a
+       location_t.
+       * semantics.c (finish_label): Adjust define_label call.
+
 2003-07-01  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/9559
index cb0bdfcc8038f96d86d9b575d7f04ca60ee46839..aec80b3895cfb51d4128aaaf3052385550544a5d 100644 (file)
@@ -3650,7 +3650,7 @@ extern tree push_using_directive                (tree);
 extern bool push_class_level_binding           (tree, tree);
 extern tree implicitly_declare                 (tree);
 extern tree declare_local_label                 (tree);
-extern tree define_label                       (const char *, int, tree);
+extern tree define_label                       (location_t, tree);
 extern void check_goto                         (tree);
 extern void define_case_label                  (void);
 extern tree namespace_binding                   (tree, tree);
index 67babc26284938c80cf2ab004daa9a9d4edf6af2..24e8f787569f04960b3b62a6efadfc27c82d95c3 100644 (file)
@@ -1175,9 +1175,13 @@ pop_label (tree label, tree old_value)
     {
       if (DECL_INITIAL (label) == NULL_TREE)
        {
+         location_t location;
+
          cp_error_at ("label `%D' used but not defined", label);
+         location.file = input_filename;
+         location.line = 0;
          /* Avoid crashing later.  */
-         define_label (input_filename, 1, DECL_NAME (label));
+         define_label (location, DECL_NAME (label));
        }
       else if (warn_unused_label && !TREE_USED (label))
        cp_warning_at ("label `%D' defined but not used", label);
@@ -4939,7 +4943,7 @@ check_goto (tree decl)
    Otherwise return 0.  */
 
 tree
-define_label (const char* filename, int line, tree name)
+define_label (location_t location, tree name)
 {
   tree decl = lookup_label (name);
   struct named_label_list *ent;
@@ -4968,8 +4972,7 @@ define_label (const char* filename, int line, tree name)
       /* Mark label as having been defined.  */
       DECL_INITIAL (decl) = error_mark_node;
       /* Say where in the source.  */
-      DECL_SOURCE_FILE (decl) = filename;
-      DECL_SOURCE_LINE (decl) = line;
+      DECL_SOURCE_LOCATION (decl) = location;
       if (ent)
        {
          ent->names_in_scope = current_binding_level->names;
index aaf8be405a4fda7205c48d9ae8d22a35f2f5b877..a42443b94f65d1d279879ff12df65c1839a54a19 100644 (file)
@@ -1136,7 +1136,7 @@ finish_asm_stmt (tree cv_qualifier,
 tree
 finish_label_stmt (tree name)
 {
-  tree decl = define_label (input_filename, input_line, name);
+  tree decl = define_label (input_location, name);
   return add_stmt (build_stmt (LABEL_STMT, decl));
 }
 
index 885525bacb057571f66f5fcc99d0e12aa91454fb..2ef46cf369b92c709da9a989a0d8c42072ae8873 100644 (file)
@@ -1,3 +1,7 @@
+2003-07-01  Nathan Sidwell  <nathan@codesourcery.com>
+
+       * decl.c (poplevel): Adjust define_label call.
+
 2003-06-27  Zack Weinberg  <zack@codesourcery.com>
 
        * gjavah.c (flag_jni): Make non-static.
index 5354f8963dd9b7babcf412600d35acf7e045f4b0..2737463eca005378b4938dc861aeff5aa7d757f6 100644 (file)
@@ -1366,8 +1366,7 @@ poplevel (int keep, int reverse, int functionbody)
            {
              error_with_decl (label, "label `%s' used but not defined");
              /* Avoid crashing later.  */
-             define_label (input_filename, lineno,
-                           DECL_NAME (label));
+             define_label (input_location, DECL_NAME (label));
            }
          else if (warn_unused[UNUSED_LABEL] && !TREE_USED (label))
            warning_with_decl (label, "label `%s' defined but not used");