aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog38
-rw-r--r--gcc/attribs.c16
-rw-r--r--gcc/cgraphunit.c7
-rw-r--r--gcc/coverage.c11
-rw-r--r--gcc/doc/invoke.texi4
-rw-r--r--gcc/expr.c4
-rw-r--r--gcc/gimplify.c20
-rw-r--r--gcc/langhooks.c10
-rw-r--r--gcc/langhooks.h7
-rw-r--r--gcc/stmt.c7
-rw-r--r--gcc/stor-layout.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/ucnid-11.c5
-rw-r--r--gcc/testsuite/gcc.dg/ucnid-12.c5
-rw-r--r--gcc/testsuite/gcc.dg/ucnid-13.c13
-rw-r--r--gcc/toplev.c22
-rw-r--r--gcc/tree-mudflap.c8
-rw-r--r--gcc/tree.c18
-rw-r--r--gcc/varasm.c4
19 files changed, 144 insertions, 70 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9ae3ce6..1e5803d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,41 @@
+2009-05-04 Joseph Myers <joseph@codesourcery.com>
+
+ * attribs.c (decl_attributes): Use %qE for identifiers in
+ diagnostics.
+ * cgraphunit.c (verify_cgraph_node): Translate function names to
+ locale character set in diagnostics.
+ * coverage.c (get_coverage_counts): Use %qE for identifiers in
+ diagnostics.
+ * doc/invoke.texi (-finstrument-functions-exclude-function-list):
+ Document that functions are named in UTF-8.
+ * expr.c (expand_expr_real_1): Translate function names to locale
+ character set in diagnostics.
+ * gimplify.c (omp_notice_variable, omp_is_private,
+ gimplify_scan_omp_clauses): Use %qE for identifiers in
+ diagnostics.
+ * langhooks.c (lhd_print_error_function): Translate function names
+ to locale character set.
+ * langhooks.h (decl_printable_name): Document that return value is
+ in internal character set.
+ * stmt.c: Include pretty-print.h
+ (tree_conflicts_with_clobbers_p): Use %qE for identifiers in
+ diagnostics.
+ (resolve_operand_name_1): Translate named operand name to locale
+ character set.
+ * stor-layout.c (finalize_record_size): Use %qE for identifiers in
+ diagnostics.
+ * toplev.c (announce_function): Translate function names to locale
+ character set.
+ (warn_deprecated_use): Use %qE for identifiers in diagnostics.
+ (default_tree_printer): Use pp_identifier or translate identifiers
+ to locale character set. Mark "<anonymous>" for translation.
+ * tree-mudflap.c (mx_register_decls, mudflap_finish_file): Use %qE
+ for identifiers in diagnostics.
+ * tree.c (handle_dll_attribute): Use %qE for identifiers in
+ diagnostics.
+ * varasm.c (output_constructor): Use %qE for identifiers in
+ diagnostics.
+
2009-05-04 Rafael Avila de Espindola <espindola@google.com>
* configure.ac: use ` ` instead of $()
diff --git a/gcc/attribs.c b/gcc/attribs.c
index a020f46..df4ca73 100644
--- a/gcc/attribs.c
+++ b/gcc/attribs.c
@@ -280,16 +280,16 @@ decl_attributes (tree *node, tree attributes, int flags)
if (spec == NULL)
{
- warning (OPT_Wattributes, "%qs attribute directive ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute directive ignored",
+ name);
continue;
}
else if (list_length (args) < spec->min_length
|| (spec->max_length >= 0
&& list_length (args) > spec->max_length))
{
- error ("wrong number of arguments specified for %qs attribute",
- IDENTIFIER_POINTER (name));
+ error ("wrong number of arguments specified for %qE attribute",
+ name);
continue;
}
gcc_assert (is_attribute_p (spec->name, name));
@@ -306,8 +306,8 @@ decl_attributes (tree *node, tree attributes, int flags)
}
else
{
- warning (OPT_Wattributes, "%qs attribute does not apply to types",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute does not apply to types",
+ name);
continue;
}
}
@@ -357,8 +357,8 @@ decl_attributes (tree *node, tree attributes, int flags)
&& TREE_CODE (*anode) != METHOD_TYPE)
{
warning (OPT_Wattributes,
- "%qs attribute only applies to function types",
- IDENTIFIER_POINTER (name));
+ "%qE attribute only applies to function types",
+ name);
continue;
}
}
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 7b87d38..9b7ca8c 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -570,7 +570,8 @@ verify_cgraph_node (struct cgraph_node *node)
if (e->aux)
{
error ("aux field set for edge %s->%s",
- cgraph_node_name (e->caller), cgraph_node_name (e->callee));
+ identifier_to_locale (cgraph_node_name (e->caller)),
+ identifier_to_locale (cgraph_node_name (e->callee)));
error_found = true;
}
if (node->count < 0)
@@ -696,8 +697,8 @@ verify_cgraph_node (struct cgraph_node *node)
if (!e->aux && !e->indirect_call)
{
error ("edge %s->%s has no corresponding call_stmt",
- cgraph_node_name (e->caller),
- cgraph_node_name (e->callee));
+ identifier_to_locale (cgraph_node_name (e->caller)),
+ identifier_to_locale (cgraph_node_name (e->callee)));
debug_gimple_stmt (e->call_stmt);
error_found = true;
}
diff --git a/gcc/coverage.c b/gcc/coverage.c
index 8eb30ac..9240241 100644
--- a/gcc/coverage.c
+++ b/gcc/coverage.c
@@ -347,8 +347,8 @@ get_coverage_counts (unsigned counter, unsigned expected,
entry = (counts_entry_t *) htab_find (counts_hash, &elt);
if (!entry)
{
- warning (0, "no coverage for function %qs found", IDENTIFIER_POINTER
- (DECL_ASSEMBLER_NAME (current_function_decl)));
+ warning (0, "no coverage for function %qE found",
+ DECL_ASSEMBLER_NAME (current_function_decl));
return NULL;
}
@@ -357,14 +357,13 @@ get_coverage_counts (unsigned counter, unsigned expected,
|| entry->summary.num != expected)
{
static int warned = 0;
- const char *id = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME
- (current_function_decl));
+ tree id = DECL_ASSEMBLER_NAME (current_function_decl);
if (warn_coverage_mismatch)
warning (OPT_Wcoverage_mismatch, "coverage mismatch for function "
- "%qs while reading counter %qs", id, ctr_names[counter]);
+ "%qE while reading counter %qs", id, ctr_names[counter]);
else
- error ("coverage mismatch for function %qs while reading counter %qs",
+ error ("coverage mismatch for function %qE while reading counter %qs",
id, ctr_names[counter]);
if (!inhibit_warnings)
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 59409d6..0021e80 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -16124,7 +16124,9 @@ instrumentation. The function name to be matched is its user-visible
name, such as @code{vector<int> blah(const vector<int> &)}, not the
internal mangled name (e.g., @code{_Z4blahRSt6vectorIiSaIiEE}). The
match is done on substrings: if the @var{sym} parameter is a substring
-of the function name, it is considered to be a match.
+of the function name, it is considered to be a match. For C99 and C++
+extended identifiers, the function name must be given in UTF-8, not
+using universal character names.
@item -fstack-check
@opindex fstack-check
diff --git a/gcc/expr.c b/gcc/expr.c
index c3e4d81..3c800dd 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -8055,14 +8055,14 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
&& (attr = lookup_attribute ("error",
DECL_ATTRIBUTES (fndecl))) != NULL)
error ("%Kcall to %qs declared with attribute error: %s",
- exp, lang_hooks.decl_printable_name (fndecl, 1),
+ exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)),
TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
if (fndecl
&& (attr = lookup_attribute ("warning",
DECL_ATTRIBUTES (fndecl))) != NULL)
warning_at (tree_nonartificial_location (exp),
0, "%Kcall to %qs declared with attribute warning: %s",
- exp, lang_hooks.decl_printable_name (fndecl, 1),
+ exp, identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 1)),
TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
/* Check for a built-in function. */
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index 24481d1..0909d31 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -5395,8 +5395,8 @@ omp_notice_variable (struct gimplify_omp_ctx *ctx, tree decl, bool in_code)
switch (default_kind)
{
case OMP_CLAUSE_DEFAULT_NONE:
- error ("%qs not specified in enclosing parallel",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("%qE not specified in enclosing parallel",
+ DECL_NAME (decl));
error ("%Henclosing parallel", &ctx->location);
/* FALLTHRU */
case OMP_CLAUSE_DEFAULT_SHARED:
@@ -5502,8 +5502,8 @@ omp_is_private (struct gimplify_omp_ctx *ctx, tree decl)
{
if (ctx == gimplify_omp_ctxp)
{
- error ("iteration variable %qs should be private",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("iteration variable %qE should be private",
+ DECL_NAME (decl));
n->value = GOVD_PRIVATE;
return true;
}
@@ -5516,11 +5516,11 @@ omp_is_private (struct gimplify_omp_ctx *ctx, tree decl)
&& gimplify_omp_ctxp->outer_context == ctx)))
{
if ((n->value & GOVD_FIRSTPRIVATE) != 0)
- error ("iteration variable %qs should not be firstprivate",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("iteration variable %qE should not be firstprivate",
+ DECL_NAME (decl));
else if ((n->value & GOVD_REDUCTION) != 0)
- error ("iteration variable %qs should not be reduction",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("iteration variable %qE should not be reduction",
+ DECL_NAME (decl));
}
return (ctx == gimplify_omp_ctxp
|| (ctx->region_type == ORT_COMBINED_PARALLEL
@@ -5682,8 +5682,8 @@ gimplify_scan_omp_clauses (tree *list_p, gimple_seq *pre_p,
&& region_type == ORT_WORKSHARE
&& omp_check_private (ctx, decl))
{
- error ("%s variable %qs is private in outer context",
- check_non_private, IDENTIFIER_POINTER (DECL_NAME (decl)));
+ error ("%s variable %qE is private in outer context",
+ check_non_private, DECL_NAME (decl));
remove = true;
}
break;
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index fa9b8dd..8579062 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -380,11 +380,11 @@ lhd_print_error_function (diagnostic_context *context, const char *file,
if (TREE_CODE (TREE_TYPE (fndecl)) == METHOD_TYPE)
pp_printf
(context->printer, _("In member function %qs"),
- lang_hooks.decl_printable_name (fndecl, 2));
+ identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)));
else
pp_printf
(context->printer, _("In function %qs"),
- lang_hooks.decl_printable_name (fndecl, 2));
+ identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)));
while (abstract_origin)
{
@@ -435,18 +435,18 @@ lhd_print_error_function (diagnostic_context *context, const char *file,
if (flag_show_column && s.column != 0)
pp_printf (context->printer,
_(" inlined from %qs at %s:%d:%d"),
- lang_hooks.decl_printable_name (fndecl, 2),
+ identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)),
s.file, s.line, s.column);
else
pp_printf (context->printer,
_(" inlined from %qs at %s:%d"),
- lang_hooks.decl_printable_name (fndecl, 2),
+ identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)),
s.file, s.line);
}
else
pp_printf (context->printer, _(" inlined from %qs"),
- lang_hooks.decl_printable_name (fndecl, 2));
+ identifier_to_locale (lang_hooks.decl_printable_name (fndecl, 2)));
}
}
pp_character (context->printer, ':');
diff --git a/gcc/langhooks.h b/gcc/langhooks.h
index 6c57ca2..0694189 100644
--- a/gcc/langhooks.h
+++ b/gcc/langhooks.h
@@ -1,5 +1,5 @@
/* The lang_hooks data structure.
- Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GCC.
@@ -332,7 +332,10 @@ struct lang_hooks
information will be printed: 0: DECL_NAME, demangled as
necessary. 1: and scope information. 2: and any other
information that might be interesting, such as function parameter
- types in C++. */
+ types in C++. The name is in the internal character set and
+ needs to be converted to the locale character set of diagnostics,
+ or to the execution character set for strings such as
+ __PRETTY_FUNCTION__. */
const char *(*decl_printable_name) (tree decl, int verbosity);
/* Computes the dwarf-2/3 name for a tree. VERBOSITY determines what
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 6dc32fd..7fc4038 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -50,6 +50,7 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "regs.h"
#include "alloc-pool.h"
+#include "pretty-print.h"
/* Functions and data structures for expanding case statements. */
@@ -600,8 +601,8 @@ tree_conflicts_with_clobbers_p (tree t, HARD_REG_SET *clobbered_regs)
if (overlap)
{
- error ("asm-specifier for variable %qs conflicts with asm clobber list",
- IDENTIFIER_POINTER (DECL_NAME (overlap)));
+ error ("asm-specifier for variable %qE conflicts with asm clobber list",
+ DECL_NAME (overlap));
/* Reset registerness to stop multiple errors emitted for a single
variable. */
@@ -1322,7 +1323,7 @@ resolve_operand_name_1 (char *p, tree outputs, tree inputs)
}
*q = '\0';
- error ("undefined named operand %qs", p + 1);
+ error ("undefined named operand %qs", identifier_to_locale (p + 1));
op = 0;
found:
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index c2d367f..fab5817 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -1292,19 +1292,19 @@ finalize_record_size (record_layout_info rli)
if (TYPE_NAME (rli->t))
{
- const char *name;
+ tree name;
if (TREE_CODE (TYPE_NAME (rli->t)) == IDENTIFIER_NODE)
- name = IDENTIFIER_POINTER (TYPE_NAME (rli->t));
+ name = TYPE_NAME (rli->t);
else
- name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (rli->t)));
+ name = DECL_NAME (TYPE_NAME (rli->t));
if (STRICT_ALIGNMENT)
warning (OPT_Wpacked, "packed attribute causes inefficient "
- "alignment for %qs", name);
+ "alignment for %qE", name);
else
warning (OPT_Wpacked,
- "packed attribute is unnecessary for %qs", name);
+ "packed attribute is unnecessary for %qE", name);
}
else
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2da28f3..6c8d1d2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2009-05-04 Joseph Myers <joseph@codesourcery.com>
+ * gcc.dg/ucnid-11.c, gcc.dg/ucnid-12.c, gcc.dg/ucnid-13.c: New
+ tests.
+
+2009-05-04 Joseph Myers <joseph@codesourcery.com>
+
* gcc.dg/ucnid-8.c, gcc.dg/ucnid-9.c, gcc.dg/ucnid-10.c: New
tests.
* gcc.dg/declspec-9.c, gcc.dg/declspec-10.c, gcc.dg/declspec-11.c:
diff --git a/gcc/testsuite/gcc.dg/ucnid-11.c b/gcc/testsuite/gcc.dg/ucnid-11.c
new file mode 100644
index 0000000..b406330
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ucnid-11.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-xfail-if "" { powerpc-ibm-aix* *-*-solaris2.* } { "*" } { "" } } */
+/* { dg-options "-std=c99 -fextended-identifiers -fdata-sections" } */
+
+#include "ucnid-3.c"
diff --git a/gcc/testsuite/gcc.dg/ucnid-12.c b/gcc/testsuite/gcc.dg/ucnid-12.c
new file mode 100644
index 0000000..6c87892
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ucnid-12.c
@@ -0,0 +1,5 @@
+/* { dg-do run } */
+/* { dg-xfail-if "" { powerpc-ibm-aix* *-*-solaris2.* } { "*" } { "" } } */
+/* { dg-options "-std=c99 -fextended-identifiers -ffunction-sections" } */
+
+#include "ucnid-4.c"
diff --git a/gcc/testsuite/gcc.dg/ucnid-13.c b/gcc/testsuite/gcc.dg/ucnid-13.c
new file mode 100644
index 0000000..8ec69fa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ucnid-13.c
@@ -0,0 +1,13 @@
+/* Verify diagnostics for extended identifiers refer to UCNs (in the C
+ locale). Miscellaneous diagnostics. */
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99 -fextended-identifiers -Wpacked" } */
+
+int a __attribute__((\u00c0)); /* { dg-warning "'\\\\U000000c0' attribute directive ignored" } */
+
+extern void \u00c1 (void) __attribute__((deprecated));
+void g (void) { \u00c1 (); } /* { dg-warning "'\\\\U000000c1' is deprecated" } */
+
+struct \u00c2 { char c; } __attribute__((packed)); /* { dg-warning "'\\\\U000000c2'" } */
+
+void h (void) { asm ("%[\u00c3]" : : ); } /* { dg-error "undefined named operand '\\\\U000000c3'" } */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 9520299..1b850fa 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -427,9 +427,11 @@ announce_function (tree decl)
if (!quiet_flag)
{
if (rtl_dump_and_exit)
- fprintf (stderr, "%s ", IDENTIFIER_POINTER (DECL_NAME (decl)));
+ fprintf (stderr, "%s ",
+ identifier_to_locale (IDENTIFIER_POINTER (DECL_NAME (decl))));
else
- fprintf (stderr, " %s", lang_hooks.decl_printable_name (decl, 2));
+ fprintf (stderr, " %s",
+ identifier_to_locale (lang_hooks.decl_printable_name (decl, 2)));
fflush (stderr);
pp_needs_newline (global_dc->printer) = true;
diagnostic_set_last_function (global_dc, (diagnostic_info *) NULL);
@@ -920,16 +922,16 @@ warn_deprecated_use (tree node)
}
else if (TYPE_P (node))
{
- const char *what = NULL;
+ tree what = NULL_TREE;
tree decl = TYPE_STUB_DECL (node);
if (TYPE_NAME (node))
{
if (TREE_CODE (TYPE_NAME (node)) == IDENTIFIER_NODE)
- what = IDENTIFIER_POINTER (TYPE_NAME (node));
+ what = TYPE_NAME (node);
else if (TREE_CODE (TYPE_NAME (node)) == TYPE_DECL
&& DECL_NAME (TYPE_NAME (node)))
- what = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (node)));
+ what = DECL_NAME (TYPE_NAME (node));
}
if (decl)
@@ -938,7 +940,7 @@ warn_deprecated_use (tree node)
= expand_location (DECL_SOURCE_LOCATION (decl));
if (what)
warning (OPT_Wdeprecated_declarations,
- "%qs is deprecated (declared at %s:%d)", what,
+ "%qE is deprecated (declared at %s:%d)", what,
xloc.file, xloc.line);
else
warning (OPT_Wdeprecated_declarations,
@@ -948,7 +950,7 @@ warn_deprecated_use (tree node)
else
{
if (what)
- warning (OPT_Wdeprecated_declarations, "%qs is deprecated", what);
+ warning (OPT_Wdeprecated_declarations, "%qE is deprecated", what);
else
warning (OPT_Wdeprecated_declarations, "type is deprecated");
}
@@ -1511,7 +1513,7 @@ default_tree_printer (pretty_printer * pp, text_info *text, const char *spec,
t = va_arg (*text->args_ptr, tree);
if (TREE_CODE (t) == IDENTIFIER_NODE)
{
- pp_string (pp, IDENTIFIER_POINTER (t));
+ pp_identifier (pp, IDENTIFIER_POINTER (t));
return true;
}
break;
@@ -1537,8 +1539,8 @@ default_tree_printer (pretty_printer * pp, text_info *text, const char *spec,
if (DECL_P (t))
{
const char *n = DECL_NAME (t)
- ? lang_hooks.decl_printable_name (t, 2)
- : "<anonymous>";
+ ? identifier_to_locale (lang_hooks.decl_printable_name (t, 2))
+ : _("<anonymous>");
pp_string (pp, n);
}
else
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index e2116e5..0c07b97 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -1061,8 +1061,8 @@ mx_register_decls (tree decl, gimple_seq seq, location_t location)
{
if (!DECL_ARTIFICIAL (decl))
warning (OPT_Wmudflap,
- "mudflap cannot track %qs in stub function",
- IDENTIFIER_POINTER (DECL_NAME (decl)));
+ "mudflap cannot track %qE in stub function",
+ DECL_NAME (decl));
}
else
{
@@ -1305,8 +1305,8 @@ mudflap_finish_file (void)
if (! COMPLETE_TYPE_P (TREE_TYPE (obj)))
{
warning (OPT_Wmudflap,
- "mudflap cannot track unknown size extern %qs",
- IDENTIFIER_POINTER (DECL_NAME (obj)));
+ "mudflap cannot track unknown size extern %qE",
+ DECL_NAME (obj));
continue;
}
diff --git a/gcc/tree.c b/gcc/tree.c
index 57e1d32..295358c 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -4063,8 +4063,8 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
}
else
{
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
*no_add_attrs = true;
return NULL_TREE;
}
@@ -4075,8 +4075,8 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
&& TREE_CODE (node) != TYPE_DECL)
{
*no_add_attrs = true;
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
return NULL_TREE;
}
@@ -4085,8 +4085,8 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
&& TREE_CODE (TREE_TYPE (node)) != UNION_TYPE)
{
*no_add_attrs = true;
- warning (OPT_Wattributes, "%qs attribute ignored",
- IDENTIFIER_POINTER (name));
+ warning (OPT_Wattributes, "%qE attribute ignored",
+ name);
return NULL_TREE;
}
@@ -4141,7 +4141,7 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
|| TREE_CODE (node) == FUNCTION_DECL))
{
error ("external linkage required for symbol %q+D because of "
- "%qs attribute", node, IDENTIFIER_POINTER (name));
+ "%qE attribute", node, name);
*no_add_attrs = true;
}
@@ -4154,9 +4154,9 @@ handle_dll_attribute (tree * pnode, tree name, tree args, int flags,
{
if (DECL_VISIBILITY_SPECIFIED (node)
&& DECL_VISIBILITY (node) != VISIBILITY_DEFAULT)
- error ("%qs implies default visibility, but %qD has already "
+ error ("%qE implies default visibility, but %qD has already "
"been declared with a different visibility",
- IDENTIFIER_POINTER (name), node);
+ name, node);
DECL_VISIBILITY (node) = VISIBILITY_DEFAULT;
DECL_VISIBILITY_SPECIFIED (node) = 1;
}
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 0a7b480..c85cf9d 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -4761,8 +4761,8 @@ output_constructor (tree exp, unsigned HOST_WIDE_INT size,
total_bytes += fieldsize;
}
else if (val != 0 && TREE_CODE (val) != INTEGER_CST)
- error ("invalid initial value for member %qs",
- IDENTIFIER_POINTER (DECL_NAME (field)));
+ error ("invalid initial value for member %qE",
+ DECL_NAME (field));
else
{
/* Element that is a bit-field. */