diff options
author | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-08 15:04:44 +0000 |
---|---|---|
committer | gdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-08 15:04:44 +0000 |
commit | 46f9c5eceb36152c13cfa5f3981137e6724296bb (patch) | |
tree | 227413f279ea46db2c8aeeeee10f6e4e20bccd53 /gcc/c-decl.c | |
parent | 01537105c429936699974ef73f9dcefa33bbfa58 (diff) | |
download | gcc-46f9c5eceb36152c13cfa5f3981137e6724296bb.tar.gz |
* c-decl.c (define_label): Tidy. Don't use any of
error_with_file_and_line or warning_with_file_and_file.
(pending_xref_error): Likewise.
(store_parm_decls): Likewise.
(current_function_prototype_locus): New object. Package from
current_function_prototype_file and current_function_prototype_line.
(start_function): Use it.
(current_function_prototype_file): Remove.
(current_function_prototype_line): Remove;
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66599 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-decl.c')
-rw-r--r-- | gcc/c-decl.c | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 11f7499c774..7ac47391b6f 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -100,8 +100,7 @@ static tree current_function_parm_tags; /* Similar, for the file and line that the prototype came from if this is an old-style definition. */ -static const char *current_function_prototype_file; -static int current_function_prototype_line; +static location_t current_function_prototype_locus; /* The current statement tree. */ @@ -2070,12 +2069,12 @@ shadow_label (name) Otherwise return 0. */ tree -define_label (filename, line, name) - const char *filename; - int line; - tree name; +define_label (const char* filename, int line, 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) @@ -2086,14 +2085,12 @@ define_label (filename, line, name) } if (warn_traditional && !in_system_header && lookup_name (name)) - warning_with_file_and_line (filename, line, - "traditional C lacks a separate namespace for labels, identifier `%s' conflicts", - IDENTIFIER_POINTER (name)); + warning ("%Htraditional C lacks a separate namespace for labels, " + "identifier `%s' conflicts", &locus, IDENTIFIER_POINTER (name)); if (DECL_INITIAL (decl) != 0) { - error_with_file_and_line (filename, line, "duplicate label `%s'", - IDENTIFIER_POINTER (name)); + error ("%Hduplicate label `%s'", &locus, IDENTIFIER_POINTER (name)); return 0; } else @@ -2101,8 +2098,7 @@ define_label (filename, line, 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) = locus; return decl; } } @@ -2202,10 +2198,9 @@ void pending_xref_error () { if (pending_invalid_xref != 0) - error_with_file_and_line (pending_invalid_xref_location.file, - pending_invalid_xref_location.line, - "`%s' defined as wrong kind of tag", - IDENTIFIER_POINTER (pending_invalid_xref)); + error ("%H`%s' defined as wrong kind of tag", + &pending_invalid_xref_location, + IDENTIFIER_POINTER (pending_invalid_xref)); pending_invalid_xref = 0; } @@ -5536,8 +5531,7 @@ start_function (declspecs, declarator, attributes) && TYPE_ARG_TYPES (TREE_TYPE (decl1)) == 0) { TREE_TYPE (decl1) = TREE_TYPE (old_decl); - current_function_prototype_file = DECL_SOURCE_FILE (old_decl); - current_function_prototype_line = DECL_SOURCE_LINE (old_decl); + current_function_prototype_locus = DECL_SOURCE_LOCATION (old_decl); } /* Optionally warn of old-fashioned def with no previous prototype. */ @@ -5966,9 +5960,8 @@ store_parm_decls () || TYPE_MAIN_VARIANT (TREE_VALUE (type)) == void_type_node) { error ("number of arguments doesn't match prototype"); - error_with_file_and_line (current_function_prototype_file, - current_function_prototype_line, - "prototype declaration"); + error ("%Hprototype declaration", + ¤t_function_prototype_locus); break; } /* Type for passing arg must be consistent with that @@ -5997,19 +5990,16 @@ store_parm_decls () { pedwarn ("promoted argument `%s' doesn't match prototype", IDENTIFIER_POINTER (DECL_NAME (parm))); - warning_with_file_and_line - (current_function_prototype_file, - current_function_prototype_line, - "prototype declaration"); + warning ("%Hprototype declaration", + ¤t_function_prototype_locus); } } else { error ("argument `%s' doesn't match prototype", IDENTIFIER_POINTER (DECL_NAME (parm))); - error_with_file_and_line (current_function_prototype_file, - current_function_prototype_line, - "prototype declaration"); + error ("%Hprototype declaration", + ¤t_function_prototype_locus); } } } |