aboutsummaryrefslogtreecommitdiff
path: root/gcc/c-decl.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/c-decl.c')
-rw-r--r--gcc/c-decl.c331
1 files changed, 133 insertions, 198 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 1eb3482..db35f9a 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -367,8 +367,7 @@ c_finish_incomplete_decl (tree decl)
&& ! DECL_EXTERNAL (decl)
&& TYPE_DOMAIN (type) == 0)
{
- warning ("%Harray '%D' assumed to have one element",
- &DECL_SOURCE_LOCATION (decl), decl);
+ warning ("%Jarray '%D' assumed to have one element", decl, decl);
complete_array_type (type, NULL_TREE, 1);
@@ -539,22 +538,20 @@ poplevel (int keep, int dummy ATTRIBUTE_UNUSED, int functionbody)
for (p = scope->names; p; p = TREE_CHAIN (p))
{
- const location_t *locus = &DECL_SOURCE_LOCATION (p);
-
switch (TREE_CODE (p))
{
case LABEL_DECL:
if (TREE_USED (p) && !DECL_INITIAL (p))
{
- error ("%Hlabel `%D' used but not defined", locus, p);
+ error ("%Jlabel `%D' used but not defined", p, p);
DECL_INITIAL (p) = error_mark_node;
}
else if (!TREE_USED (p) && warn_unused_label)
{
if (DECL_INITIAL (p))
- warning ("%Hlabel `%D' defined but not used", locus, p);
+ warning ("%Jlabel `%D' defined but not used", p, p);
else
- warning ("%Hlabel `%D' declared but not defined", locus, p);
+ warning ("%Jlabel `%D' declared but not defined", p, p);
}
IDENTIFIER_LABEL_VALUE (DECL_NAME (p)) = 0;
@@ -579,7 +576,7 @@ poplevel (int keep, int dummy ATTRIBUTE_UNUSED, int functionbody)
&& !DECL_IN_SYSTEM_HEADER (p)
&& DECL_NAME (p)
&& !DECL_ARTIFICIAL (p))
- warning ("%Hunused variable `%D'", locus, p);
+ warning ("%Junused variable `%D'", p, p);
/* fall through */
default:
@@ -803,20 +800,19 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
&& DECL_UNINLINABLE (olddecl)
&& lookup_attribute ("noinline", DECL_ATTRIBUTES (olddecl)))
{
- warning ("%Hfunction '%D' redeclared as inline",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
- warning ("%Hprevious declaration of function '%D' "
- "with attribute noinline",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ warning ("%Jfunction '%D' redeclared as inline",
+ newdecl, newdecl);
+ warning ("%Jprevious declaration of function '%D' "
+ "with attribute noinline", olddecl, olddecl);
}
else if (DECL_DECLARED_INLINE_P (olddecl)
&& DECL_UNINLINABLE (newdecl)
&& lookup_attribute ("noinline", DECL_ATTRIBUTES (newdecl)))
{
- warning ("%Hfunction '%D' redeclared with attribute noinline",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
- warning ("%Hprevious declaration of function '%D' was inline",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ warning ("%Jfunction '%D' redeclared with attribute noinline",
+ newdecl, newdecl);
+ warning ("%Jprevious declaration of function '%D' was inline",
+ olddecl, olddecl);
}
}
@@ -842,19 +838,18 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
if (!TREE_PUBLIC (newdecl))
{
if (warn_shadow)
- warning ("%Hshadowing built-in function '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ warning ("%Jshadowing built-in function '%D'",
+ newdecl, newdecl);
}
else
- warning ("%Hbuilt-in function '%D' declared as non-function",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ warning ("%Jbuilt-in function '%D' declared as non-function",
+ newdecl, newdecl);
}
else
{
- error ("%H'%D' redeclared as different kind of symbol",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
- error ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ error ("%J'%D' redeclared as different kind of symbol",
+ newdecl, newdecl);
+ error ("%Jprevious declaration of '%D'", olddecl, olddecl);
}
return 0;
@@ -883,8 +878,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
built-in definition is overridden,
but optionally warn this was a bad choice of name. */
if (warn_shadow)
- warning ("%Hshadowing built-in function '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ warning ("%Jshadowing built-in function '%D'", newdecl, newdecl);
/* Discard the old built-in function. */
return 0;
}
@@ -906,8 +900,8 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
if (!types_match)
{
/* If types don't match for a built-in, throw away the built-in. */
- warning ("%Hconflicting types for built-in function '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ warning ("%Jconflicting types for built-in function '%D'",
+ newdecl, newdecl);
return 0;
}
}
@@ -950,8 +944,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
&& TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (oldtype))) == void_type_node)))
{
if (pedantic)
- pedwarn ("%Hconflicting types for '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ pedwarn ("%Jconflicting types for '%D'", newdecl, newdecl);
/* Make sure we keep void * as ret type, not char *. */
if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (oldtype))) == void_type_node)
TREE_TYPE (newdecl) = newtype = oldtype;
@@ -969,8 +962,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
&& TYPE_MAIN_VARIANT (TREE_TYPE (newtype)) == integer_type_node
&& C_FUNCTION_IMPLICIT_INT (newdecl))
{
- pedwarn ("%Hconflicting types for '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ pedwarn ("%Jconflicting types for '%D'", newdecl, newdecl);
/* Make sure we keep void as the return type. */
TREE_TYPE (newdecl) = newtype = oldtype;
C_FUNCTION_IMPLICIT_INT (newdecl) = 0;
@@ -985,8 +977,7 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
TREE_TYPE (newtype), COMPARE_STRICT)
&& TYPE_ARG_TYPES (newtype) == 0))
{
- error ("%Hconflicting types for '%D'",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
+ error ("%Jconflicting types for '%D'", newdecl, newdecl);
/* Check for function type mismatch
involving an empty arglist vs a nonempty one. */
if (TREE_CODE (olddecl) == FUNCTION_DECL
@@ -1021,11 +1012,9 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
}
}
if (C_DECL_IMPLICIT (olddecl))
- error ("%Hprevious implicit declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ error ("%Jprevious implicit declaration of '%D'", olddecl, olddecl);
else
- error ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ error ("%Jprevious declaration of '%D'", olddecl, olddecl);
/* This is safer because the initializer might contain references
to variables that were declared between olddecl and newdecl. This
@@ -1038,62 +1027,54 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
&& !DECL_THREAD_LOCAL (olddecl) && DECL_THREAD_LOCAL (newdecl))
{
- error ("%Hthread-local declaration of '%D' follows non thread-local "
- "declaration", &DECL_SOURCE_LOCATION (newdecl), newdecl);
- error ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ error ("%Jthread-local declaration of '%D' follows non thread-local "
+ "declaration", newdecl, newdecl);
+ error ("%Jprevious declaration of '%D'", olddecl, olddecl);
}
/* non-TLS declaration cannot follow TLS declaration. */
else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
&& DECL_THREAD_LOCAL (olddecl) && !DECL_THREAD_LOCAL (newdecl))
{
- error ("%Hnon thread-local declaration of '%D' follows "
- "thread-local declaration",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
- error ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ error ("%Jnon thread-local declaration of '%D' follows "
+ "thread-local declaration", newdecl, newdecl);
+ error ("%Jprevious declaration of '%D'", olddecl, olddecl);
}
else
{
errmsg = redeclaration_error_message (newdecl, olddecl);
if (errmsg)
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
switch (errmsg)
{
case 1:
- error ("%Hredefinition of '%D'", locus, newdecl);
+ error ("%Jredefinition of '%D'", newdecl, newdecl);
break;
case 2:
- error ("%Hredeclaration of '%D'", locus, newdecl);
+ error ("%Jredeclaration of '%D'", newdecl, newdecl);
break;
case 3:
- error ("%Hconflicting declarations of '%D'", locus, newdecl);
+ error ("%Jconflicting declarations of '%D'", newdecl, newdecl);
break;
default:
abort ();
}
- locus = &DECL_SOURCE_LOCATION (olddecl);
if (DECL_INITIAL (olddecl)
&& current_scope == global_scope)
- error ("%H'%D' previously defined here", locus, olddecl);
+ error ("%J'%D' previously defined here", olddecl, olddecl);
else
- error ("%H'%D' previously declared here", locus, olddecl);
+ error ("%J'%D' previously declared here", olddecl, olddecl);
return 0;
}
else if (TREE_CODE (newdecl) == TYPE_DECL
&& (DECL_IN_SYSTEM_HEADER (olddecl)
|| DECL_IN_SYSTEM_HEADER (newdecl)))
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
- warning ("%Hredefinition of '%D'", locus, newdecl);
- locus = &DECL_SOURCE_LOCATION (olddecl);
- if (DECL_INITIAL (olddecl)
- && current_scope == global_scope)
- warning ("%H'%D' previously defined here", locus, olddecl);
+ warning ("%Jredefinition of '%D'", newdecl, newdecl);
+ if (DECL_INITIAL (olddecl) && current_scope == global_scope)
+ warning ("%J'%D' previously defined here", olddecl, olddecl);
else
- warning ("%H'%D' previously declared here", locus, olddecl);
+ warning ("%J'%D' previously declared here", olddecl, olddecl);
}
else if (TREE_CODE (olddecl) == FUNCTION_DECL
&& DECL_INITIAL (olddecl) != 0
@@ -1114,20 +1095,16 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
if (TYPE_MAIN_VARIANT (TREE_VALUE (parm)) == void_type_node
&& TYPE_MAIN_VARIANT (TREE_VALUE (type)) == void_type_node)
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
- warning ("%Hprototype for '%D' follows", locus, newdecl);
- locus = &DECL_SOURCE_LOCATION (olddecl);
- warning ("%Hnon-prototype definition here", locus);
+ warning ("%Jprototype for '%D' follows", newdecl, newdecl);
+ warning ("%Jnon-prototype definition here", olddecl);
break;
}
if (TYPE_MAIN_VARIANT (TREE_VALUE (parm)) == void_type_node
|| TYPE_MAIN_VARIANT (TREE_VALUE (type)) == void_type_node)
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
- error ("%Hprototype for '%D' follows and number of "
- "arguments doesn't match", locus, newdecl);
- locus = &DECL_SOURCE_LOCATION (olddecl);
- error ("%Hnon-prototype definition here", locus);
+ error ("%Jprototype for '%D' follows and number of "
+ "arguments doesn't match", newdecl, newdecl);
+ error ("%Jnon-prototype definition here", olddecl);
errmsg = 1;
break;
}
@@ -1136,11 +1113,9 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
if (! comptypes (TREE_VALUE (parm), TREE_VALUE (type),
COMPARE_STRICT))
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
- error ("%Hprototype for '%D' follows and argument %d "
- "doesn't match", locus, newdecl, nargs);
- locus = &DECL_SOURCE_LOCATION (olddecl);
- error ("%Hnon-prototype definition here", locus);
+ error ("%Jprototype for '%D' follows and argument %d "
+ "doesn't match", newdecl, newdecl, nargs);
+ error ("%Jnon-prototype definition here", olddecl);
errmsg = 1;
break;
}
@@ -1149,30 +1124,28 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
/* Warn about mismatches in various flags. */
else
{
- const location_t *locus = &DECL_SOURCE_LOCATION (newdecl);
-
/* Warn if function is now inline
but was previously declared not inline and has been called. */
if (TREE_CODE (olddecl) == FUNCTION_DECL
&& ! DECL_DECLARED_INLINE_P (olddecl)
&& DECL_DECLARED_INLINE_P (newdecl)
&& TREE_USED (olddecl))
- warning ("%H'%D' declared inline after being called",
- locus, newdecl);
+ warning ("%J'%D' declared inline after being called",
+ newdecl, newdecl);
if (TREE_CODE (olddecl) == FUNCTION_DECL
&& ! DECL_DECLARED_INLINE_P (olddecl)
&& DECL_DECLARED_INLINE_P (newdecl)
&& DECL_INITIAL (olddecl) != 0)
- warning ("%H'%D' declared inline after its definition",
- locus, newdecl);
+ warning ("%J'%D' declared inline after its definition",
+ newdecl, newdecl);
/* If pedantic, warn when static declaration follows a non-static
declaration. Otherwise, do so only for functions. */
if ((pedantic || TREE_CODE (olddecl) == FUNCTION_DECL)
&& TREE_PUBLIC (olddecl)
&& !TREE_PUBLIC (newdecl))
- warning ("%Hstatic declaration for '%D' follows non-static",
- locus, newdecl);
+ warning ("%Jstatic declaration for '%D' follows non-static",
+ newdecl, newdecl);
/* If warn_traditional, warn when a non-static function
declaration follows a static one. */
@@ -1180,24 +1153,24 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
&& TREE_CODE (olddecl) == FUNCTION_DECL
&& !TREE_PUBLIC (olddecl)
&& TREE_PUBLIC (newdecl))
- warning ("%Hnon-static declaration for '%D' follows static",
- locus, newdecl);
+ warning ("%Jnon-static declaration for '%D' follows static",
+ newdecl, newdecl);
/* Warn when const declaration follows a non-const
declaration, but not for functions. */
if (TREE_CODE (olddecl) != FUNCTION_DECL
&& !TREE_READONLY (olddecl)
&& TREE_READONLY (newdecl))
- warning ("%Hconst declaration for '%D' follows non-const",
- locus, newdecl);
+ warning ("%Jconst declaration for '%D' follows non-const",
+ newdecl, newdecl);
/* These bits are logically part of the type, for variables.
But not for functions
(where qualifiers are not valid ANSI anyway). */
else if (pedantic && TREE_CODE (olddecl) != FUNCTION_DECL
&& (TREE_READONLY (newdecl) != TREE_READONLY (olddecl)
|| TREE_THIS_VOLATILE (newdecl) != TREE_THIS_VOLATILE (olddecl)))
- pedwarn ("%Htype qualifiers for '%D' conflict with previous "
- "declaration", locus, newdecl);
+ pedwarn ("%Jtype qualifiers for '%D' conflict with previous "
+ "declaration", newdecl, newdecl);
}
}
@@ -1210,10 +1183,9 @@ duplicate_decls (tree newdecl, tree olddecl, int different_binding_level,
/* Don't warn about extern decl followed by (tentative) definition. */
&& !(DECL_EXTERNAL (olddecl) && ! DECL_EXTERNAL (newdecl)))
{
- warning ("%Hredundant redeclaration of '%D' in same scope",
- &DECL_SOURCE_LOCATION (newdecl), newdecl);
- warning ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (olddecl), olddecl);
+ warning ("%Jredundant redeclaration of '%D' in same scope",
+ newdecl, newdecl);
+ warning ("%Jprevious declaration of '%D'", olddecl, olddecl);
}
/* Copy all the DECL_... slots specified in the new decl
@@ -1820,8 +1792,7 @@ implicitly_declare (tree functionid)
{
implicit_decl_warning (DECL_NAME (decl));
if (! DECL_FILE_SCOPE_P (decl))
- warning ("%Hprevious declaration of '%D'",
- &DECL_SOURCE_LOCATION (decl), decl);
+ warning ("%Jprevious declaration of '%D'", decl, decl);
C_DECL_IMPLICIT (decl) = 1;
}
/* If this function is global, then it must already be in the
@@ -2056,8 +2027,7 @@ declare_label (tree name)
if (dup == label)
{
error ("duplicate label declaration `%s'", IDENTIFIER_POINTER (name));
- error ("%Hthis is a previous declaration",
- &DECL_SOURCE_LOCATION (dup));
+ error ("%Jthis is a previous declaration", dup);
/* Just use the previous declaration. */
return dup;
@@ -2092,12 +2062,11 @@ define_label (location_t location, tree name)
|| (DECL_CONTEXT (label) != current_function_decl
&& C_DECLARED_LABEL_FLAG (label))))
{
- location_t *prev_loc = &DECL_SOURCE_LOCATION (label);
error ("%Hduplicate label `%D'", &location, label);
if (DECL_INITIAL (label))
- error ("%H`%D' previously defined here", prev_loc, label);
+ error ("%J`%D' previously defined here", label, label);
else
- error ("%H`%D' previously declared here", prev_loc, label);
+ error ("%J`%D' previously declared here", label, label);
return 0;
}
else if (label && DECL_CONTEXT (label) == current_function_decl)
@@ -2573,8 +2542,7 @@ start_decl (tree declarator, tree declspecs, int initialized, tree attributes)
if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL
&& MAIN_NAME_P (DECL_NAME (decl)))
- warning ("%H'%D' is usually a function",
- &DECL_SOURCE_LOCATION (decl), decl);
+ warning ("%J'%D' is usually a function", decl, decl);
if (initialized)
/* Is it valid for this decl to have an initializer at all?
@@ -2697,8 +2665,7 @@ start_decl (tree declarator, tree declspecs, int initialized, tree attributes)
&& DECL_DECLARED_INLINE_P (decl)
&& DECL_UNINLINABLE (decl)
&& lookup_attribute ("noinline", DECL_ATTRIBUTES (decl)))
- warning ("%Hinline function '%D' given attribute noinline",
- &DECL_SOURCE_LOCATION (decl), decl);
+ warning ("%Jinline function '%D' given attribute noinline", decl, decl);
/* Add this decl to the current scope.
TEM may equal DECL or it may be a previous decl of the same name. */
@@ -2769,14 +2736,12 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
type = TREE_TYPE (decl);
if (failure == 1)
- error ("%Hinitializer fails to determine size of '%D'",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jinitializer fails to determine size of '%D'", decl, decl);
else if (failure == 2)
{
if (do_default)
- error ("%Harray size missing in '%D'",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jarray size missing in '%D'", decl, decl);
/* If a `static' var's size isn't known,
make it extern as well as static, so it does not get
allocated.
@@ -2792,8 +2757,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
warn only if the value is less than zero. */
else if (pedantic && TYPE_DOMAIN (type) != 0
&& tree_int_cst_sgn (TYPE_MAX_VALUE (TYPE_DOMAIN (type))) < 0)
- error ("%Hzero or negative size array '%D'",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jzero or negative size array '%D'", decl, decl);
layout_decl (decl, 0);
}
@@ -2821,8 +2785,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
is an error. */
!DECL_EXTERNAL (decl)))
{
- error ("%Hstorage size of '%D' isn't known",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jstorage size of '%D' isn't known", decl, decl);
TREE_TYPE (decl) = error_mark_node;
}
@@ -2832,8 +2795,7 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
if (TREE_CODE (DECL_SIZE (decl)) == INTEGER_CST)
constant_expression_warning (DECL_SIZE (decl));
else
- error ("%Hstorage size of '%D' isn't constant",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jstorage size of '%D' isn't constant", decl, decl);
}
if (TREE_USED (type))
@@ -2916,8 +2878,8 @@ finish_decl (tree decl, tree init, tree asmspec_tree)
if (TREE_CODE (decl) == VAR_DECL
&& !DECL_REGISTER (decl)
&& !TREE_STATIC (decl))
- warning ("%Hignoring asm-specifier for non-static local "
- "variable '%D'", &DECL_SOURCE_LOCATION (decl), decl);
+ warning ("%Jignoring asm-specifier for non-static local "
+ "variable '%D'", decl, decl);
else
SET_DECL_ASSEMBLER_NAME (decl, get_identifier (asmspec));
}
@@ -4402,8 +4364,7 @@ grokdeclarator (tree declarator, tree declspecs,
C_DECL_VARIABLE_SIZE (decl) = 1;
if (inlinep)
- pedwarn ("%Hvariable '%D' declared `inline'",
- &DECL_SOURCE_LOCATION (decl), decl);
+ pedwarn ("%Jvariable '%D' declared `inline'", decl, decl);
DECL_EXTERNAL (decl) = extern_ref;
@@ -4616,8 +4577,8 @@ get_parm_info (int void_at_end)
if (!TREE_ASM_WRITTEN (decl))
abort ();
- error ("%Hparameter \"%D\" has just a forward declaration",
- &DECL_SOURCE_LOCATION (decl), decl);
+ error ("%Jparameter \"%D\" has just a forward declaration",
+ decl, decl);
}
/* Warn about any struct, union or enum tags defined within this
@@ -4853,8 +4814,7 @@ detect_field_duplicates (tree fieldlist)
for (y = fieldlist; y != x; y = TREE_CHAIN (y))
if (DECL_NAME (y) == DECL_NAME (x))
{
- error ("%Hduplicate member '%D'",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jduplicate member '%D'", x, x);
DECL_NAME (x) = NULL_TREE;
}
}
@@ -4870,8 +4830,7 @@ detect_field_duplicates (tree fieldlist)
slot = htab_find_slot (htab, y, INSERT);
if (*slot)
{
- error ("%Hduplicate member '%D'",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jduplicate member '%D'", x, x);
DECL_NAME (x) = NULL_TREE;
}
*slot = y;
@@ -4972,8 +4931,7 @@ finish_struct (tree t, tree fieldlist, tree attributes)
constant_expression_warning (DECL_INITIAL (x));
else
{
- error ("%Hbit-field '%D' width not an integer constant",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jbit-field '%D' width not an integer constant", x, x);
DECL_INITIAL (x) = NULL;
}
}
@@ -4984,8 +4942,7 @@ finish_struct (tree t, tree fieldlist, tree attributes)
&& TREE_CODE (TREE_TYPE (x)) != BOOLEAN_TYPE
&& TREE_CODE (TREE_TYPE (x)) != ENUMERAL_TYPE)
{
- error ("%Hbit-field '%D' has invalid type",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jbit-field '%D' has invalid type", x, x);
DECL_INITIAL (x) = NULL;
}
@@ -4997,8 +4954,7 @@ finish_struct (tree t, tree fieldlist, tree attributes)
&& !(TREE_CODE (TREE_TYPE (x)) == ENUMERAL_TYPE
&& (TYPE_PRECISION (TREE_TYPE (x))
== TYPE_PRECISION (integer_type_node))))
- pedwarn ("%Hbit-field '%D' type invalid in ISO C",
- &DECL_SOURCE_LOCATION (x), x);
+ pedwarn ("%Jbit-field '%D' type invalid in ISO C", x, x);
/* Detect and ignore out of range field width and process valid
field widths. */
@@ -5009,14 +4965,11 @@ finish_struct (tree t, tree fieldlist, tree attributes)
? CHAR_TYPE_SIZE : TYPE_PRECISION (TREE_TYPE (x)));
if (tree_int_cst_sgn (DECL_INITIAL (x)) < 0)
- error ("%Hnegative width in bit-field '%D'",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jnegative width in bit-field '%D'", x, x);
else if (0 < compare_tree_int (DECL_INITIAL (x), max_width))
- pedwarn ("%Hwidth of '%D' exceeds its type",
- &DECL_SOURCE_LOCATION (x), x);
+ pedwarn ("%Jwidth of '%D' exceeds its type", x, x);
else if (integer_zerop (DECL_INITIAL (x)) && DECL_NAME (x) != 0)
- error ("%Hzero width for bit-field '%D'",
- &DECL_SOURCE_LOCATION (x), x);
+ error ("%Jzero width for bit-field '%D'", x, x);
else
{
/* The test above has assured us that TREE_INT_CST_HIGH is 0. */
@@ -5029,8 +4982,7 @@ finish_struct (tree t, tree fieldlist, tree attributes)
|| (width
< min_precision (TYPE_MAX_VALUE (TREE_TYPE (x)),
TREE_UNSIGNED (TREE_TYPE (x))))))
- warning ("%H'%D' is narrower than values of its type",
- &DECL_SOURCE_LOCATION (x), x);
+ warning ("%J'%D' is narrower than values of its type", x, x);
DECL_SIZE (x) = bitsize_int (width);
DECL_BIT_FIELD (x) = 1;
@@ -5047,20 +4999,16 @@ finish_struct (tree t, tree fieldlist, tree attributes)
&& TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (x))) == NULL_TREE)
{
if (TREE_CODE (t) == UNION_TYPE)
- error ("%Hflexible array member in union",
- &DECL_SOURCE_LOCATION (x));
+ error ("%Jflexible array member in union", x);
else if (TREE_CHAIN (x) != NULL_TREE)
- error ("%Hflexible array member not at end of struct",
- &DECL_SOURCE_LOCATION (x));
+ error ("%Jflexible array member not at end of struct", x);
else if (! saw_named_field)
- error ("%Hflexible array member in otherwise empty struct",
- &DECL_SOURCE_LOCATION (x));
+ error ("%Jflexible array member in otherwise empty struct", x);
}
if (pedantic && TREE_CODE (t) == RECORD_TYPE
&& flexible_array_type_p (TREE_TYPE (x)))
- pedwarn ("%Hinvalid use of structure with flexible array member",
- &DECL_SOURCE_LOCATION (x));
+ pedwarn ("%Jinvalid use of structure with flexible array member", x);
if (DECL_NAME (x))
saw_named_field = 1;
@@ -5477,8 +5425,7 @@ start_function (tree declspecs, tree declarator, tree attributes)
if (DECL_DECLARED_INLINE_P (decl1)
&& DECL_UNINLINABLE (decl1)
&& lookup_attribute ("noinline", DECL_ATTRIBUTES (decl1)))
- warning ("%Hinline function '%D' given attribute noinline",
- &DECL_SOURCE_LOCATION (decl1), decl1);
+ warning ("%Jinline function '%D' given attribute noinline", decl1, decl1);
announce_function (decl1);
@@ -5528,29 +5475,27 @@ start_function (tree declspecs, tree declarator, tree attributes)
&& TREE_PUBLIC (decl1)
&& ! MAIN_NAME_P (DECL_NAME (decl1))
&& C_DECL_ISNT_PROTOTYPE (old_decl))
- warning ("%Hno previous prototype for '%D'",
- &DECL_SOURCE_LOCATION (decl1), decl1);
+ warning ("%Jno previous prototype for '%D'", decl1, decl1);
/* Optionally warn of any def with no previous prototype
if the function has already been used. */
else if (warn_missing_prototypes
&& old_decl != 0 && TREE_USED (old_decl)
&& TYPE_ARG_TYPES (TREE_TYPE (old_decl)) == 0)
- warning ("%H'%D' was used with no prototype before its definition",
- &DECL_SOURCE_LOCATION (decl1), decl1);
+ warning ("%J'%D' was used with no prototype before its definition",
+ decl1, decl1);
/* Optionally warn of any global def with no previous declaration. */
else if (warn_missing_declarations
&& TREE_PUBLIC (decl1)
&& old_decl == 0
&& ! MAIN_NAME_P (DECL_NAME (decl1)))
- warning ("%Hno previous declaration for '%D'",
- &DECL_SOURCE_LOCATION (decl1), decl1);
+ warning ("%Jno previous declaration for '%D'", decl1, decl1);
/* Optionally warn of any def with no previous declaration
if the function has already been used. */
else if (warn_missing_declarations
&& old_decl != 0 && TREE_USED (old_decl)
&& C_DECL_IMPLICIT (old_decl))
- warning ("%H`%D' was used with no declaration before its definition",
- &DECL_SOURCE_LOCATION (decl1), decl1);
+ warning ("%J`%D' was used with no declaration before its definition",
+ decl1, decl1);
/* This is a definition, not a reference.
So normally clear DECL_EXTERNAL.
@@ -5582,11 +5527,10 @@ start_function (tree declspecs, tree declarator, tree attributes)
{
tree args;
int argct = 0;
- const location_t *locus = &DECL_SOURCE_LOCATION (decl1);
if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (decl1)))
!= integer_type_node)
- pedwarn ("%Hreturn type of '%D' is not `int'", locus, decl1);
+ pedwarn ("%Jreturn type of '%D' is not `int'", decl1, decl1);
for (args = TYPE_ARG_TYPES (TREE_TYPE (decl1)); args;
args = TREE_CHAIN (args))
@@ -5601,8 +5545,8 @@ start_function (tree declspecs, tree declarator, tree attributes)
{
case 1:
if (TYPE_MAIN_VARIANT (type) != integer_type_node)
- pedwarn ("%Hfirst argument of '%D' should be `int'",
- locus, decl1);
+ pedwarn ("%Jfirst argument of '%D' should be `int'",
+ decl1, decl1);
break;
case 2:
@@ -5610,8 +5554,8 @@ start_function (tree declspecs, tree declarator, tree attributes)
|| TREE_CODE (TREE_TYPE (type)) != POINTER_TYPE
|| (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (type)))
!= char_type_node))
- pedwarn ("%Hsecond argument of '%D' should be 'char **'",
- locus, decl1);
+ pedwarn ("%Jsecond argument of '%D' should be 'char **'",
+ decl1, decl1);
break;
case 3:
@@ -5619,8 +5563,8 @@ start_function (tree declspecs, tree declarator, tree attributes)
|| TREE_CODE (TREE_TYPE (type)) != POINTER_TYPE
|| (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (type)))
!= char_type_node))
- pedwarn ("%Hthird argument of '%D' should probably be "
- "'char **'", locus, decl1);
+ pedwarn ("%Jthird argument of '%D' should probably be "
+ "'char **'", decl1, decl1);
break;
}
}
@@ -5629,10 +5573,10 @@ start_function (tree declspecs, tree declarator, tree attributes)
argument because it's only mentioned in an appendix of the
standard. */
if (argct > 0 && (argct < 2 || argct > 3))
- pedwarn ("%H'%D' takes only zero or two arguments", locus, decl1);
+ pedwarn ("%J'%D' takes only zero or two arguments", decl1, decl1);
if (! TREE_PUBLIC (decl1))
- pedwarn ("%H'%D' is normally a non-static function", locus, decl1);
+ pedwarn ("%J'%D' is normally a non-static function", decl1, decl1);
}
/* Record the decl so that the function name is defined.
@@ -5688,8 +5632,8 @@ store_parm_decls_newstyle (void)
if (current_scope->parms || current_scope->names || current_scope->tags)
{
- error ("%Hold-style parameter declarations in prototyped "
- "function definition", &DECL_SOURCE_LOCATION (fndecl));
+ error ("%Jold-style parameter declarations in prototyped "
+ "function definition", fndecl);
/* Get rid of the old-style declarations. */
poplevel (0, 0, 0);
@@ -5702,7 +5646,7 @@ store_parm_decls_newstyle (void)
{
DECL_CONTEXT (decl) = current_function_decl;
if (DECL_NAME (decl) == 0)
- error ("%Hparameter name omitted", &DECL_SOURCE_LOCATION (decl));
+ error ("%Jparameter name omitted", decl);
else
{
if (IDENTIFIER_SYMBOL_VALUE (DECL_NAME (decl)))
@@ -5777,8 +5721,7 @@ store_parm_decls_oldstyle (void)
{
if (TREE_VALUE (parm) == 0)
{
- error ("%Hparameter name missing from parameter list",
- &DECL_SOURCE_LOCATION (fndecl));
+ error ("%Jparameter name missing from parameter list", fndecl);
TREE_PURPOSE (parm) = 0;
continue;
}
@@ -5786,15 +5729,14 @@ store_parm_decls_oldstyle (void)
decl = IDENTIFIER_SYMBOL_VALUE (TREE_VALUE (parm));
if (decl && DECL_CONTEXT (decl) == fndecl)
{
- const location_t *locus = &DECL_SOURCE_LOCATION (decl);
/* If we got something other than a PARM_DECL it is an error. */
if (TREE_CODE (decl) != PARM_DECL)
- error ("%H\"%D\" declared as a non-parameter", locus, decl);
+ error ("%J\"%D\" declared as a non-parameter", decl, decl);
/* If the declaration is already marked, we have a duplicate
name. Complain and ignore the duplicate. */
else if (DECL_WEAK (decl))
{
- error ("%Hmultiple parameters named \"%D\"", locus, decl);
+ error ("%Jmultiple parameters named \"%D\"", decl, decl);
TREE_PURPOSE (parm) = 0;
continue;
}
@@ -5802,7 +5744,7 @@ store_parm_decls_oldstyle (void)
an int. */
else if (VOID_TYPE_P (TREE_TYPE (decl)))
{
- error ("%Hparameter \"%D\" declared void", locus, decl);
+ error ("%Jparameter \"%D\" declared void", decl, decl);
TREE_TYPE (decl) = integer_type_node;
DECL_ARG_TYPE (decl) = integer_type_node;
layout_decl (decl, 0);
@@ -5811,16 +5753,15 @@ store_parm_decls_oldstyle (void)
/* If no declaration found, default to int. */
else
{
- const location_t *locus = &DECL_SOURCE_LOCATION (fndecl);
decl = build_decl (PARM_DECL, TREE_VALUE (parm), integer_type_node);
DECL_ARG_TYPE (decl) = TREE_TYPE (decl);
- DECL_SOURCE_LOCATION (decl) = *locus;
+ DECL_SOURCE_LOCATION (decl) = DECL_SOURCE_LOCATION (fndecl);
pushdecl (decl);
if (flag_isoc99)
- pedwarn ("%Htype of \"%D\" defaults to \"int\"", locus, decl);
+ pedwarn ("%Jtype of \"%D\" defaults to \"int\"", decl, decl);
else if (extra_warnings)
- warning ("%Htype of \"%D\" defaults to \"int\"", locus, decl);
+ warning ("%Jtype of \"%D\" defaults to \"int\"", decl, decl);
}
TREE_PURPOSE (parm) = decl;
@@ -5832,18 +5773,16 @@ store_parm_decls_oldstyle (void)
for (parm = current_scope->parms; parm; parm = TREE_CHAIN (parm))
{
- const location_t *locus = &DECL_SOURCE_LOCATION (parm);
-
if (!COMPLETE_TYPE_P (TREE_TYPE (parm)))
{
- error ("%Hparameter \"%D\" has incomplete type", locus, parm);
+ error ("%Jparameter \"%D\" has incomplete type", parm, parm);
TREE_TYPE (parm) = error_mark_node;
}
if (! DECL_WEAK (parm))
{
- error ("%Hdeclaration for parameter \"%D\" but no such parameter",
- locus, parm);
+ error ("%Jdeclaration for parameter \"%D\" but no such parameter",
+ parm, parm);
/* Pretend the parameter was not missing.
This gets us to a standard state and minimizes
@@ -6095,8 +6034,7 @@ finish_function ()
/* If warn_main is 1 (-Wmain) or 2 (-Wall), we have already warned.
If warn_main is -1 (-Wno-main) we don't want to be warned. */
if (!warn_main)
- pedwarn ("%Hreturn type of '%D' is not `int'",
- &DECL_SOURCE_LOCATION (fndecl), fndecl);
+ pedwarn ("%Jreturn type of '%D' is not `int'", fndecl, fndecl);
}
else
{
@@ -6269,16 +6207,15 @@ check_for_loop_decls (void)
for (t = getdecls (); t; t = TREE_CHAIN (t))
{
- const location_t *locus = &DECL_SOURCE_LOCATION (t);
if (TREE_CODE (t) != VAR_DECL && DECL_NAME (t))
- error ("%Hdeclaration of non-variable '%D' in 'for' loop "
- "initial declaration", locus, t);
+ error ("%Jdeclaration of non-variable '%D' in 'for' loop "
+ "initial declaration", t, t);
else if (TREE_STATIC (t))
- error ("%Hdeclaration of static variable '%D' in 'for' loop "
- "initial declaration", locus, t);
+ error ("%Jdeclaration of static variable '%D' in 'for' loop "
+ "initial declaration", t, t);
else if (DECL_EXTERNAL (t))
- error ("%Hdeclaration of 'extern' variable '%D' in 'for' loop "
- "initial declaration", locus, t);
+ error ("%Jdeclaration of 'extern' variable '%D' in 'for' loop "
+ "initial declaration", t, t);
}
}
@@ -6600,10 +6537,8 @@ merge_translation_unit_decls (void)
}
else
{
- error ("%Hredefinition of global '%D'",
- &DECL_SOURCE_LOCATION (decl), decl);
- error ("%H'%D' previously defined here",
- &DECL_SOURCE_LOCATION (old_decl), old_decl);
+ error ("%Jredefinition of global '%D'", decl, decl);
+ error ("%J'%D' previously defined here", old_decl, old_decl);
}
}
else