c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator.
2012-06-04 Sterling Augustine <saugustine@google.com> * gcc/c-family/c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator. * gcc/c-family/c-pretty-print.c (pp_c_specifier_qualifier_list): Check it at both the start and end of the function. * gcc/cp/error.c (dump_decl): Check pp_c_flag_gnu_v3. (decl_as_dwarf_string, lang_decl_dwarf_name): New functions. (lang_decl_name): Handle namespace decls. * gcc/cp/cp-tree.h: Declare decl_as_dwarf_string, lang_decl_dwarf_name. * gcc/cp/cp-lang.c: Call them. From-SVN: r188195
This commit is contained in:
parent
764ce4f20a
commit
7496cd5bea
6 changed files with 61 additions and 7 deletions
|
@ -1,3 +1,14 @@
|
|||
2012-06-04 Sterling Augustine <saugustine@google.com>
|
||||
|
||||
* gcc/c-family/c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator.
|
||||
* gcc/c-family/c-pretty-print.c (pp_c_specifier_qualifier_list): Check
|
||||
it at both the start and end of the function.
|
||||
* gcc/cp/error.c (dump_decl): Check pp_c_flag_gnu_v3.
|
||||
(decl_as_dwarf_string, lang_decl_dwarf_name): New functions.
|
||||
(lang_decl_name): Handle namespace decls.
|
||||
* gcc/cp/cp-tree.h: Declare decl_as_dwarf_string, lang_decl_dwarf_name.
|
||||
* gcc/cp/cp-lang.c: Call them.
|
||||
|
||||
2012-06-04 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
PR middle-end/47530
|
||||
|
|
|
@ -446,7 +446,7 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t)
|
|||
{
|
||||
const enum tree_code code = TREE_CODE (t);
|
||||
|
||||
if (TREE_CODE (t) != POINTER_TYPE)
|
||||
if (!(pp->flags & pp_c_flag_gnu_v3) && code != POINTER_TYPE)
|
||||
pp_c_type_qualifier_list (pp, t);
|
||||
switch (code)
|
||||
{
|
||||
|
@ -494,6 +494,8 @@ pp_c_specifier_qualifier_list (c_pretty_printer *pp, tree t)
|
|||
pp_simple_type_specifier (pp, t);
|
||||
break;
|
||||
}
|
||||
if ((pp->flags & pp_c_flag_gnu_v3) && code != POINTER_TYPE)
|
||||
pp_c_type_qualifier_list (pp, t);
|
||||
}
|
||||
|
||||
/* parameter-type-list:
|
||||
|
|
|
@ -30,7 +30,8 @@ along with GCC; see the file COPYING3. If not see
|
|||
typedef enum
|
||||
{
|
||||
pp_c_flag_abstract = 1 << 1,
|
||||
pp_c_flag_last_bit = 2
|
||||
pp_c_flag_gnu_v3 = 1 << 2,
|
||||
pp_c_flag_last_bit = 3
|
||||
} pp_c_pretty_print_flags;
|
||||
|
||||
|
||||
|
|
|
@ -118,11 +118,11 @@ cxx_dwarf_name (tree t, int verbosity)
|
|||
&& (ANON_AGGRNAME_P (DECL_NAME (t)) || LAMBDANAME_P (DECL_NAME (t))))
|
||||
return NULL;
|
||||
if (verbosity >= 2)
|
||||
return decl_as_string (t,
|
||||
TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME
|
||||
| TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS);
|
||||
return decl_as_dwarf_string (t,
|
||||
TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME
|
||||
| TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS);
|
||||
|
||||
return cxx_printable_name (t, verbosity);
|
||||
return lang_decl_dwarf_name (t, verbosity, false);
|
||||
}
|
||||
|
||||
static enum classify_record
|
||||
|
|
|
@ -5169,8 +5169,10 @@ extern const char *type_as_string (tree, int);
|
|||
extern const char *type_as_string_translate (tree, int);
|
||||
extern const char *decl_as_string (tree, int);
|
||||
extern const char *decl_as_string_translate (tree, int);
|
||||
extern const char *decl_as_dwarf_string (tree, int);
|
||||
extern const char *expr_as_string (tree, int);
|
||||
extern const char *lang_decl_name (tree, int, bool);
|
||||
extern const char *lang_decl_dwarf_name (tree, int, bool);
|
||||
extern const char *language_to_string (enum languages);
|
||||
extern const char *class_key_or_enum_as_string (tree);
|
||||
extern void print_instantiation_context (void);
|
||||
|
|
|
@ -1028,7 +1028,12 @@ dump_decl (tree t, int flags)
|
|||
dump_scope (CP_DECL_CONTEXT (t), flags);
|
||||
flags &= ~TFF_UNQUALIFIED_NAME;
|
||||
if (DECL_NAME (t) == NULL_TREE)
|
||||
pp_cxx_ws_string (cxx_pp, M_("{anonymous}"));
|
||||
{
|
||||
if (!(pp_c_base (cxx_pp)->flags & pp_c_flag_gnu_v3))
|
||||
pp_cxx_ws_string (cxx_pp, M_("{anonymous}"));
|
||||
else
|
||||
pp_cxx_ws_string (cxx_pp, M_("(anonymous namespace)"));
|
||||
}
|
||||
else
|
||||
pp_cxx_tree_identifier (cxx_pp, DECL_NAME (t));
|
||||
}
|
||||
|
@ -2556,6 +2561,21 @@ expr_as_string (tree decl, int flags)
|
|||
return pp_formatted_text (cxx_pp);
|
||||
}
|
||||
|
||||
/* Wrap decl_as_string with options appropriate for dwarf. */
|
||||
|
||||
const char *
|
||||
decl_as_dwarf_string (tree decl, int flags)
|
||||
{
|
||||
const char *name;
|
||||
/* Curiously, reinit_cxx_pp doesn't reset the flags field, so setting the flag
|
||||
here will be adequate to get the desired behaviour. */
|
||||
pp_c_base (cxx_pp)->flags |= pp_c_flag_gnu_v3;
|
||||
name = decl_as_string (decl, flags);
|
||||
/* Subsequent calls to the pretty printer shouldn't use this style. */
|
||||
pp_c_base (cxx_pp)->flags &= ~pp_c_flag_gnu_v3;
|
||||
return name;
|
||||
}
|
||||
|
||||
const char *
|
||||
decl_as_string (tree decl, int flags)
|
||||
{
|
||||
|
@ -2573,6 +2593,21 @@ decl_as_string_translate (tree decl, int flags)
|
|||
return pp_formatted_text (cxx_pp);
|
||||
}
|
||||
|
||||
/* Wrap lang_decl_name with options appropriate for dwarf. */
|
||||
|
||||
const char *
|
||||
lang_decl_dwarf_name (tree decl, int v, bool translate)
|
||||
{
|
||||
const char *name;
|
||||
/* Curiously, reinit_cxx_pp doesn't reset the flags field, so setting the flag
|
||||
here will be adequate to get the desired behaviour. */
|
||||
pp_c_base (cxx_pp)->flags |= pp_c_flag_gnu_v3;
|
||||
name = lang_decl_name (decl, v, translate);
|
||||
/* Subsequent calls to the pretty printer shouldn't use this style. */
|
||||
pp_c_base (cxx_pp)->flags &= ~pp_c_flag_gnu_v3;
|
||||
return name;
|
||||
}
|
||||
|
||||
/* Generate the three forms of printable names for cxx_printable_name. */
|
||||
|
||||
const char *
|
||||
|
@ -2596,6 +2631,9 @@ lang_decl_name (tree decl, int v, bool translate)
|
|||
|
||||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||
dump_function_name (decl, TFF_PLAIN_IDENTIFIER);
|
||||
else if ((DECL_NAME (decl) == NULL_TREE)
|
||||
&& TREE_CODE (decl) == NAMESPACE_DECL)
|
||||
dump_decl (decl, TFF_PLAIN_IDENTIFIER);
|
||||
else
|
||||
dump_decl (DECL_NAME (decl), TFF_PLAIN_IDENTIFIER);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue