summaryrefslogtreecommitdiff
path: root/gcc/c-decl.c
diff options
context:
space:
mode:
authorgdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-08 15:04:44 +0000
committergdr <gdr@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-08 15:04:44 +0000
commit46f9c5eceb36152c13cfa5f3981137e6724296bb (patch)
tree227413f279ea46db2c8aeeeee10f6e4e20bccd53 /gcc/c-decl.c
parent01537105c429936699974ef73f9dcefa33bbfa58 (diff)
downloadgcc-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.c48
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",
+ &current_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",
+ &current_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",
+ &current_function_prototype_locus);
}
}
}