diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2003-07-01 09:00:45 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2003-07-01 09:00:45 +0000 |
commit | 5b030314afd5f84d30e79594db48bb76da28e36a (patch) | |
tree | 1ab2a373f3e8ac65651f191c54f58b1023039ddc | |
parent | c9bdad35171f64bcabad635254fa9f3dfc05a376 (diff) | |
download | gcc-5b030314afd5f84d30e79594db48bb76da28e36a.zip gcc-5b030314afd5f84d30e79594db48bb76da28e36a.tar.gz gcc-5b030314afd5f84d30e79594db48bb76da28e36a.tar.bz2 |
c-tree.h (define_label): Replace filename and lineno arguments with a location_t.
* 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
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/c-decl.c | 20 | ||||
-rw-r--r-- | gcc/c-parse.in | 2 | ||||
-rw-r--r-- | gcc/c-tree.h | 2 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/cp/cp-tree.h | 2 | ||||
-rw-r--r-- | gcc/cp/decl.c | 11 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/java/decl.c | 3 |
10 files changed, 43 insertions, 23 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8f4e33..f0272cc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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, diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 70d31fe..557438b 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -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) diff --git a/gcc/c-parse.in b/gcc/c-parse.in index 55d06b4..d575013 100644 --- a/gcc/c-parse.in +++ b/gcc/c-parse.in @@ -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) { diff --git a/gcc/c-tree.h b/gcc/c-tree.h index bd3e22e..f32eb11 100644 --- a/gcc/c-tree.h +++ b/gcc/c-tree.h @@ -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); diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 45a879d..3b96014 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -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 diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h index cb0bdfc..aec80b3 100644 --- a/gcc/cp/cp-tree.h +++ b/gcc/cp/cp-tree.h @@ -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); diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index 67babc2..24e8f78 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -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; diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index aaf8be4..a42443b 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -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)); } diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 885525b..2ef46cf 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -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. diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 5354f89..2737463 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -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"); |