public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
@ 2012-06-01 23:08 Sterling Augustine
  2012-06-01 23:38 ` Gabriel Dos Reis
  0 siblings, 1 reply; 12+ messages in thread
From: Sterling Augustine @ 2012-06-01 23:08 UTC (permalink / raw)
  To: reply, gdr, gcc-patches

After finding yet another bug in the previous patch dealing with pretty-printing
decls for dwarf in canonical form, I have figured out a way to do it that is
less invasive and much cleaner.

This updated patch simply wraps the two entry points into the decl pretty-
printer called from cxx_dwarf_name with new functions that set the
appropriate flag on the pretty printer. This is much cleaner and avoids
the need for translating flags for C++ pretty-printing into standard C
pretty printing flags.

OK for mainline?

Sterling

2012-06-01   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.

Index: gcc/c-family/c-pretty-print.c
===================================================================
--- gcc/c-family/c-pretty-print.c	(revision 188034)
+++ gcc/c-family/c-pretty-print.c	(working copy)
@@ -446,7 +446,7 @@
 {
   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_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:
Index: gcc/c-family/c-pretty-print.h
===================================================================
--- gcc/c-family/c-pretty-print.h	(revision 188034)
+++ gcc/c-family/c-pretty-print.h	(working copy)
@@ -30,7 +30,8 @@
 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;
 
 
Index: gcc/cp/error.c
===================================================================
--- gcc/cp/error.c	(revision 188034)
+++ gcc/cp/error.c	(working copy)
@@ -1028,7 +1028,12 @@
 	    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,7 +2561,22 @@
   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)
 {
   reinit_cxx_pp ();
@@ -2573,6 +2593,21 @@
   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 @@
 
   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);
 
Index: gcc/cp/cp-lang.c
===================================================================
--- gcc/cp/cp-lang.c	(revision 188034)
+++ gcc/cp/cp-lang.c	(working copy)
@@ -118,11 +118,11 @@
       && (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
Index: gcc/cp/cp-tree.h
===================================================================
--- gcc/cp/cp-tree.h	(revision 188034)
+++ gcc/cp/cp-tree.h	(working copy)
@@ -5169,8 +5169,10 @@
 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);

--
This patch is available for review at http://codereview.appspot.com/6215052

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-06-01 23:08 [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052) Sterling Augustine
@ 2012-06-01 23:38 ` Gabriel Dos Reis
  2012-06-04 17:53   ` Sterling Augustine
  0 siblings, 1 reply; 12+ messages in thread
From: Gabriel Dos Reis @ 2012-06-01 23:38 UTC (permalink / raw)
  To: Sterling Augustine; +Cc: gcc-patches

On Fri, Jun 1, 2012 at 6:07 PM, Sterling Augustine
<saugustine@google.com> wrote:
> After finding yet another bug in the previous patch dealing with pretty-printing
> decls for dwarf in canonical form, I have figured out a way to do it that is
> less invasive and much cleaner.
>
> This updated patch simply wraps the two entry points into the decl pretty-
> printer called from cxx_dwarf_name with new functions that set the
> appropriate flag on the pretty printer. This is much cleaner and avoids
> the need for translating flags for C++ pretty-printing into standard C
> pretty printing flags.
>
> OK for mainline?

OK.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-06-01 23:38 ` Gabriel Dos Reis
@ 2012-06-04 17:53   ` Sterling Augustine
  2012-06-06 23:07     ` Steven Bosscher
  0 siblings, 1 reply; 12+ messages in thread
From: Sterling Augustine @ 2012-06-04 17:53 UTC (permalink / raw)
  To: Gabriel Dos Reis; +Cc: gcc-patches

On Fri, Jun 1, 2012 at 4:38 PM, Gabriel Dos Reis
<gdr@integrable-solutions.net> wrote:
> On Fri, Jun 1, 2012 at 6:07 PM, Sterling Augustine
> <saugustine@google.com> wrote:
>> After finding yet another bug in the previous patch dealing with pretty-printing
>> decls for dwarf in canonical form, I have figured out a way to do it that is
>> less invasive and much cleaner.
>>
>> This updated patch simply wraps the two entry points into the decl pretty-
>> printer called from cxx_dwarf_name with new functions that set the
>> appropriate flag on the pretty printer. This is much cleaner and avoids
>> the need for translating flags for C++ pretty-printing into standard C
>> pretty printing flags.
>>
>> OK for mainline?
>
> OK.

Thanks! Committed as posted.

Sterling

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-06-04 17:53   ` Sterling Augustine
@ 2012-06-06 23:07     ` Steven Bosscher
  2012-06-06 23:46       ` Sterling Augustine
  0 siblings, 1 reply; 12+ messages in thread
From: Steven Bosscher @ 2012-06-06 23:07 UTC (permalink / raw)
  To: Sterling Augustine; +Cc: Gabriel Dos Reis, gcc-patches

On Mon, Jun 4, 2012 at 7:53 PM, Sterling Augustine
<saugustine@google.com> wrote:
> On Fri, Jun 1, 2012 at 4:38 PM, Gabriel Dos Reis
> <gdr@integrable-solutions.net> wrote:
>> On Fri, Jun 1, 2012 at 6:07 PM, Sterling Augustine
>> <saugustine@google.com> wrote:
>>> After finding yet another bug in the previous patch dealing with pretty-printing
>>> decls for dwarf in canonical form, I have figured out a way to do it that is
>>> less invasive and much cleaner.
>>>
>>> This updated patch simply wraps the two entry points into the decl pretty-
>>> printer called from cxx_dwarf_name with new functions that set the
>>> appropriate flag on the pretty printer. This is much cleaner and avoids
>>> the need for translating flags for C++ pretty-printing into standard C
>>> pretty printing flags.
>>>
>>> OK for mainline?
>>
>> OK.
>
> Thanks! Committed as posted.

With a wrong ChangeLog:

        * 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.

Changes for files in gcc/ go in gcc/ChangeLog.
Changes for files in gcc/cp go in gcc/cp/ChangeLog.
Changes for files in gcc/c-family go in gcc/c-family/ChangeLog.

The path is not pre-fixed. So:

c-family/
        * c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator.
        * c-pretty-print.c (pp_c_specifier_qualifier_list): Check
        it at both the start and end of the function.

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.
        * cp-tree.h: Declare decl_as_dwarf_string, lang_decl_dwarf_name.
        * cp-lang.c: Call them.

Can you please fix this?
You don't have to post such patches for review.

Ciao!
Steven

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-06-06 23:07     ` Steven Bosscher
@ 2012-06-06 23:46       ` Sterling Augustine
  2012-06-07  0:56         ` Gabriel Dos Reis
  0 siblings, 1 reply; 12+ messages in thread
From: Sterling Augustine @ 2012-06-06 23:46 UTC (permalink / raw)
  To: Steven Bosscher; +Cc: Gabriel Dos Reis, gcc-patches

On Wed, Jun 6, 2012 at 3:49 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
> On Mon, Jun 4, 2012 at 7:53 PM, Sterling Augustine
> <saugustine@google.com> wrote:
>> On Fri, Jun 1, 2012 at 4:38 PM, Gabriel Dos Reis
>> <gdr@integrable-solutions.net> wrote:
>>> On Fri, Jun 1, 2012 at 6:07 PM, Sterling Augustine
>>> <saugustine@google.com> wrote:
>>>> After finding yet another bug in the previous patch dealing with pretty-printing
>>>> decls for dwarf in canonical form, I have figured out a way to do it that is
>>>> less invasive and much cleaner.
>>>>
>>>> This updated patch simply wraps the two entry points into the decl pretty-
>>>> printer called from cxx_dwarf_name with new functions that set the
>>>> appropriate flag on the pretty printer. This is much cleaner and avoids
>>>> the need for translating flags for C++ pretty-printing into standard C
>>>> pretty printing flags.
>>>>
>>>> OK for mainline?
>>>
>>> OK.
>>
>> Thanks! Committed as posted.
>
> With a wrong ChangeLog:
>
>        * 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.
>
> Changes for files in gcc/ go in gcc/ChangeLog.
> Changes for files in gcc/cp go in gcc/cp/ChangeLog.
> Changes for files in gcc/c-family go in gcc/c-family/ChangeLog.
>
> The path is not pre-fixed. So:
>
> c-family/
>        * c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator.
>        * c-pretty-print.c (pp_c_specifier_qualifier_list): Check
>        it at both the start and end of the function.
>
> 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.
>        * cp-tree.h: Declare decl_as_dwarf_string, lang_decl_dwarf_name.
>        * cp-lang.c: Call them.
>
> Can you please fix this?
> You don't have to post such patches for review.

Fixes committed as you recomend.

FWIW, the original entries were generated with contrib/mklog. Someone
may want to fix it to do the right thing in this case.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-06-06 23:46       ` Sterling Augustine
@ 2012-06-07  0:56         ` Gabriel Dos Reis
  0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Dos Reis @ 2012-06-07  0:56 UTC (permalink / raw)
  To: Sterling Augustine; +Cc: Steven Bosscher, gcc-patches

On Wed, Jun 6, 2012 at 6:07 PM, Sterling Augustine
<saugustine@google.com> wrote:
> On Wed, Jun 6, 2012 at 3:49 PM, Steven Bosscher <stevenb.gcc@gmail.com> wrote:
>> On Mon, Jun 4, 2012 at 7:53 PM, Sterling Augustine
>> <saugustine@google.com> wrote:
>>> On Fri, Jun 1, 2012 at 4:38 PM, Gabriel Dos Reis
>>> <gdr@integrable-solutions.net> wrote:
>>>> On Fri, Jun 1, 2012 at 6:07 PM, Sterling Augustine
>>>> <saugustine@google.com> wrote:
>>>>> After finding yet another bug in the previous patch dealing with pretty-printing
>>>>> decls for dwarf in canonical form, I have figured out a way to do it that is
>>>>> less invasive and much cleaner.
>>>>>
>>>>> This updated patch simply wraps the two entry points into the decl pretty-
>>>>> printer called from cxx_dwarf_name with new functions that set the
>>>>> appropriate flag on the pretty printer. This is much cleaner and avoids
>>>>> the need for translating flags for C++ pretty-printing into standard C
>>>>> pretty printing flags.
>>>>>
>>>>> OK for mainline?
>>>>
>>>> OK.
>>>
>>> Thanks! Committed as posted.
>>
>> With a wrong ChangeLog:
>>
>>        * 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.
>>
>> Changes for files in gcc/ go in gcc/ChangeLog.
>> Changes for files in gcc/cp go in gcc/cp/ChangeLog.
>> Changes for files in gcc/c-family go in gcc/c-family/ChangeLog.
>>
>> The path is not pre-fixed. So:
>>
>> c-family/
>>        * c-pretty-print.h (pp_c_flag_gnu_v3): New enumerator.
>>        * c-pretty-print.c (pp_c_specifier_qualifier_list): Check
>>        it at both the start and end of the function.
>>
>> 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.
>>        * cp-tree.h: Declare decl_as_dwarf_string, lang_decl_dwarf_name.
>>        * cp-lang.c: Call them.
>>
>> Can you please fix this?
>> You don't have to post such patches for review.
>
> Fixes committed as you recomend.
>
> FWIW, the original entries were generated with contrib/mklog. Someone
> may want to fix it to do the right thing in this case.

My understanding is that it was designed for branches, which has different
ChangeLog entry policies.  This is trunk.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-05-30 21:40     ` Sterling Augustine
@ 2012-05-31  5:11       ` Gabriel Dos Reis
  0 siblings, 0 replies; 12+ messages in thread
From: Gabriel Dos Reis @ 2012-05-31  5:11 UTC (permalink / raw)
  To: Sterling Augustine; +Cc: reply, gcc-patches

On Wed, May 30, 2012 at 4:40 PM, Sterling Augustine
<saugustine@google.com> wrote:
> On Wed, May 30, 2012 at 2:15 PM, Gabriel Dos Reis
> <gdr@integrable-solutions.net> wrote:
>> On Tue, May 29, 2012 at 5:32 PM, Sterling Augustine
>> <saugustine@google.com> wrote:
>>
>>>> Index: gcc/c-family/c-pretty-print.h
>>>> ===================================================================
>>>> --- gcc/c-family/c-pretty-print.h       (revision 187603)
>>>> +++ gcc/c-family/c-pretty-print.h       (working copy)
>>>> @@ -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_last_bit = 2,
>>>> +     pp_c_flag_gnu_v3 = 4
>>
>> "last bit" should really be last bit.  That means the value for
>> pp_c_flags_last_bits
>> should be 1 << 2 with the new addition.
>
> Good catch. There is a single use of pp_c_flag_last_bit in
> cxx-pretty-printer.h to define the first C++ flag like so:
>
>  pp_cxx_flag_default_argument = 1 << pp_c_flag_last_bit
>
>
> So shouldn't the enum look like this?
>
> typedef enum
>  {
>     pp_c_flag_abstract = 1 << 1,
>     pp_c_flag_gnu_v3 = 1 << 2,
>     pp_c_flag_last_bit = 3
>  } pp_c_pretty_print_flags;
>
> Thanks,
>
> Sterling

Yes, you are absolutely right.

-- Gaby

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-05-30 21:15   ` Gabriel Dos Reis
@ 2012-05-30 21:40     ` Sterling Augustine
  2012-05-31  5:11       ` Gabriel Dos Reis
  0 siblings, 1 reply; 12+ messages in thread
From: Sterling Augustine @ 2012-05-30 21:40 UTC (permalink / raw)
  To: Gabriel Dos Reis; +Cc: reply, gcc-patches

On Wed, May 30, 2012 at 2:15 PM, Gabriel Dos Reis
<gdr@integrable-solutions.net> wrote:
> On Tue, May 29, 2012 at 5:32 PM, Sterling Augustine
> <saugustine@google.com> wrote:
>
>>> Index: gcc/c-family/c-pretty-print.h
>>> ===================================================================
>>> --- gcc/c-family/c-pretty-print.h       (revision 187603)
>>> +++ gcc/c-family/c-pretty-print.h       (working copy)
>>> @@ -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_last_bit = 2,
>>> +     pp_c_flag_gnu_v3 = 4
>
> "last bit" should really be last bit.  That means the value for
> pp_c_flags_last_bits
> should be 1 << 2 with the new addition.

Good catch. There is a single use of pp_c_flag_last_bit in
cxx-pretty-printer.h to define the first C++ flag like so:

 pp_cxx_flag_default_argument = 1 << pp_c_flag_last_bit


So shouldn't the enum look like this?

typedef enum
  {
     pp_c_flag_abstract = 1 << 1,
     pp_c_flag_gnu_v3 = 1 << 2,
     pp_c_flag_last_bit = 3
  } pp_c_pretty_print_flags;

Thanks,

Sterling

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-05-29 22:32 ` Sterling Augustine
@ 2012-05-30 21:15   ` Gabriel Dos Reis
  2012-05-30 21:40     ` Sterling Augustine
  0 siblings, 1 reply; 12+ messages in thread
From: Gabriel Dos Reis @ 2012-05-30 21:15 UTC (permalink / raw)
  To: Sterling Augustine; +Cc: reply, gcc-patches

On Tue, May 29, 2012 at 5:32 PM, Sterling Augustine
<saugustine@google.com> wrote:

>> Index: gcc/c-family/c-pretty-print.h
>> ===================================================================
>> --- gcc/c-family/c-pretty-print.h       (revision 187603)
>> +++ gcc/c-family/c-pretty-print.h       (working copy)
>> @@ -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_last_bit = 2,
>> +     pp_c_flag_gnu_v3 = 4

"last bit" should really be last bit.  That means the value for
pp_c_flags_last_bits
should be 1 << 2 with the new addition.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-05-16 20:03 Sterling Augustine
  2012-05-21 20:16 ` Sterling Augustine
@ 2012-05-29 22:32 ` Sterling Augustine
  2012-05-30 21:15   ` Gabriel Dos Reis
  1 sibling, 1 reply; 12+ messages in thread
From: Sterling Augustine @ 2012-05-29 22:32 UTC (permalink / raw)
  To: reply, gcc-patches, Gabriel Dos Reis

On Wed, May 16, 2012 at 1:03 PM, Sterling Augustine
<saugustine@google.com> wrote:
> This patch adds new flags and defines such that the C++ decl pretty printer
> prints both canonical dwarf names for decls without perturbing normal error
> message output.
>
> It addresses the issues with the earlier patches submitted as:
>
> http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00516.html
> http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00512.html
>
> Which are withdrawn.
>
> This patch requires no changes to the testsuite and does not produce
> visible changes to gcc's output except to dwarf consumers, which will now
> all agree on the names of functions.
>
> Tested with a full bootstrap.
>
> OK for mainline?
>
> Sterling
>
>
>
> 2012-05-16   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/cp-tree.h (TFF_MATCH_GNU_V3_DEMANGLER): Define and comment.
>        * gcc/cp/error.c (dump_decl): Print appropriate string for anonymous
>        namespace based on pp_c_flag_gnu_v3.
>        (decl_as_string): Set cxx_pp->flags based on TFF_MATCH_GNU_V3_DEMANGLER.
>        (lang_decl_name): Handle unnamed namespace decls.
>        * gcc/cp/cp-lang.c (cxx_dwarf_name): Call decl_as_string for namespace
>        decls.
>
> Index: gcc/c-family/c-pretty-print.c
> ===================================================================
> --- gcc/c-family/c-pretty-print.c       (revision 187603)
> +++ gcc/c-family/c-pretty-print.c       (working copy)
> @@ -446,8 +446,9 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
>  {
>   const enum tree_code code = TREE_CODE (t);
>
> -  if (TREE_CODE (t) != POINTER_TYPE)
> +  if (!(pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
>     pp_c_type_qualifier_list (pp, t);
> +
>   switch (code)
>     {
>     case REFERENCE_TYPE:
> @@ -494,6 +495,8 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
>       pp_simple_type_specifier (pp, t);
>       break;
>     }
> +  if ((pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
> +    pp_c_type_qualifier_list (pp, t);
>  }
>
>  /* parameter-type-list:
> Index: gcc/c-family/c-pretty-print.h
> ===================================================================
> --- gcc/c-family/c-pretty-print.h       (revision 187603)
> +++ gcc/c-family/c-pretty-print.h       (working copy)
> @@ -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_last_bit = 2,
> +     pp_c_flag_gnu_v3 = 4
>   } pp_c_pretty_print_flags;
>
>
> Index: gcc/cp/error.c
> ===================================================================
> --- gcc/cp/error.c      (revision 187603)
> +++ gcc/cp/error.c      (working copy)
> @@ -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));
>        }
> @@ -2561,6 +2566,8 @@ decl_as_string (tree decl, int flags)
>  {
>   reinit_cxx_pp ();
>   pp_translate_identifiers (cxx_pp) = false;
> +  if (flags & TFF_MATCH_GNU_V3_DEMANGLER)
> +    pp_c_base (cxx_pp)->flags |= pp_c_flag_gnu_v3;
>   dump_decl (decl, flags);
>   return pp_formatted_text (cxx_pp);
>  }
> @@ -2596,6 +2603,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);
>
> Index: gcc/cp/cp-lang.c
> ===================================================================
> --- gcc/cp/cp-lang.c    (revision 187603)
> +++ gcc/cp/cp-lang.c    (working copy)
> @@ -120,8 +120,14 @@ cxx_dwarf_name (tree t, int verbosity)
>   if (verbosity >= 2)
>     return decl_as_string (t,
>                           TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME
> -                          | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS);
> +                          | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS
> +                           | TFF_MATCH_GNU_V3_DEMANGLER);
>
> +  /* decl_as_string handles namespaces--especially anonymous ones--more
> +     appropriately for debugging than cxx_printable_name.  But
> +     cxx_printable_name handles templates and global ctors and dtors better.  */
> +  if (TREE_CODE (t) == NAMESPACE_DECL)
> +    return decl_as_string (t, TFF_MATCH_GNU_V3_DEMANGLER);
>   return cxx_printable_name (t, verbosity);
>  }
>
> Index: gcc/cp/cp-tree.h
> ===================================================================
> --- gcc/cp/cp-tree.h    (revision 187603)
> +++ gcc/cp/cp-tree.h    (working copy)
> @@ -4567,7 +4567,9 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
>    TFF_UNQUALIFIED_NAME: do not print the qualifying scope of the
>        top-level entity.
>    TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS: do not omit template arguments
> -       identical to their defaults.  */
> +       identical to their defaults.
> +   TFF_MATCH_GNU_V3_DEMANGLER: match the GNU v3 demangler's names for anonymous
> +       namespaces and order of type-qualifiers vs type-specifiers.  */
>
>  #define TFF_PLAIN_IDENTIFIER                   (0)
>  #define TFF_SCOPE                              (1)
> @@ -4583,6 +4585,7 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
>  #define TFF_NO_FUNCTION_ARGUMENTS              (1 << 10)
>  #define TFF_UNQUALIFIED_NAME                   (1 << 11)
>  #define TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS (1 << 12)
> +#define TFF_MATCH_GNU_V3_DEMANGLER             (1 << 13)
>
>  /* Returns the TEMPLATE_DECL associated to a TEMPLATE_TEMPLATE_PARM
>    node.  */
>
> --
> This patch is available for review at http://codereview.appspot.com/6215052

Ping?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
  2012-05-16 20:03 Sterling Augustine
@ 2012-05-21 20:16 ` Sterling Augustine
  2012-05-29 22:32 ` Sterling Augustine
  1 sibling, 0 replies; 12+ messages in thread
From: Sterling Augustine @ 2012-05-21 20:16 UTC (permalink / raw)
  To: reply, gcc-patches; +Cc: gdr

On Wed, May 16, 2012 at 1:03 PM, Sterling Augustine
<saugustine@google.com> wrote:
> This patch adds new flags and defines such that the C++ decl pretty printer
> prints both canonical dwarf names for decls without perturbing normal error
> message output.
>
> It addresses the issues with the earlier patches submitted as:
>
> http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00516.html
> http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00512.html
>
> Which are withdrawn.
>
> This patch requires no changes to the testsuite and does not produce
> visible changes to gcc's output except to dwarf consumers, which will now
> all agree on the names of functions.
>
> Tested with a full bootstrap.
>
> OK for mainline?
>
> Sterling
>
>
>
> 2012-05-16   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/cp-tree.h (TFF_MATCH_GNU_V3_DEMANGLER): Define and comment.
>        * gcc/cp/error.c (dump_decl): Print appropriate string for anonymous
>        namespace based on pp_c_flag_gnu_v3.
>        (decl_as_string): Set cxx_pp->flags based on TFF_MATCH_GNU_V3_DEMANGLER.
>        (lang_decl_name): Handle unnamed namespace decls.
>        * gcc/cp/cp-lang.c (cxx_dwarf_name): Call decl_as_string for namespace
>        decls.
>
> Index: gcc/c-family/c-pretty-print.c
> ===================================================================
> --- gcc/c-family/c-pretty-print.c       (revision 187603)
> +++ gcc/c-family/c-pretty-print.c       (working copy)
> @@ -446,8 +446,9 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
>  {
>   const enum tree_code code = TREE_CODE (t);
>
> -  if (TREE_CODE (t) != POINTER_TYPE)
> +  if (!(pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
>     pp_c_type_qualifier_list (pp, t);
> +
>   switch (code)
>     {
>     case REFERENCE_TYPE:
> @@ -494,6 +495,8 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
>       pp_simple_type_specifier (pp, t);
>       break;
>     }
> +  if ((pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
> +    pp_c_type_qualifier_list (pp, t);
>  }
>
>  /* parameter-type-list:
> Index: gcc/c-family/c-pretty-print.h
> ===================================================================
> --- gcc/c-family/c-pretty-print.h       (revision 187603)
> +++ gcc/c-family/c-pretty-print.h       (working copy)
> @@ -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_last_bit = 2,
> +     pp_c_flag_gnu_v3 = 4
>   } pp_c_pretty_print_flags;
>
>
> Index: gcc/cp/error.c
> ===================================================================
> --- gcc/cp/error.c      (revision 187603)
> +++ gcc/cp/error.c      (working copy)
> @@ -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));
>        }
> @@ -2561,6 +2566,8 @@ decl_as_string (tree decl, int flags)
>  {
>   reinit_cxx_pp ();
>   pp_translate_identifiers (cxx_pp) = false;
> +  if (flags & TFF_MATCH_GNU_V3_DEMANGLER)
> +    pp_c_base (cxx_pp)->flags |= pp_c_flag_gnu_v3;
>   dump_decl (decl, flags);
>   return pp_formatted_text (cxx_pp);
>  }
> @@ -2596,6 +2603,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);
>
> Index: gcc/cp/cp-lang.c
> ===================================================================
> --- gcc/cp/cp-lang.c    (revision 187603)
> +++ gcc/cp/cp-lang.c    (working copy)
> @@ -120,8 +120,14 @@ cxx_dwarf_name (tree t, int verbosity)
>   if (verbosity >= 2)
>     return decl_as_string (t,
>                           TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME
> -                          | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS);
> +                          | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS
> +                           | TFF_MATCH_GNU_V3_DEMANGLER);
>
> +  /* decl_as_string handles namespaces--especially anonymous ones--more
> +     appropriately for debugging than cxx_printable_name.  But
> +     cxx_printable_name handles templates and global ctors and dtors better.  */
> +  if (TREE_CODE (t) == NAMESPACE_DECL)
> +    return decl_as_string (t, TFF_MATCH_GNU_V3_DEMANGLER);
>   return cxx_printable_name (t, verbosity);
>  }
>
> Index: gcc/cp/cp-tree.h
> ===================================================================
> --- gcc/cp/cp-tree.h    (revision 187603)
> +++ gcc/cp/cp-tree.h    (working copy)
> @@ -4567,7 +4567,9 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
>    TFF_UNQUALIFIED_NAME: do not print the qualifying scope of the
>        top-level entity.
>    TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS: do not omit template arguments
> -       identical to their defaults.  */
> +       identical to their defaults.
> +   TFF_MATCH_GNU_V3_DEMANGLER: match the GNU v3 demangler's names for anonymous
> +       namespaces and order of type-qualifiers vs type-specifiers.  */
>
>  #define TFF_PLAIN_IDENTIFIER                   (0)
>  #define TFF_SCOPE                              (1)
> @@ -4583,6 +4585,7 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
>  #define TFF_NO_FUNCTION_ARGUMENTS              (1 << 10)
>  #define TFF_UNQUALIFIED_NAME                   (1 << 11)
>  #define TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS (1 << 12)
> +#define TFF_MATCH_GNU_V3_DEMANGLER             (1 << 13)
>
>  /* Returns the TEMPLATE_DECL associated to a TEMPLATE_TEMPLATE_PARM
>    node.  */
>
> --
> This patch is available for review at http://codereview.appspot.com/6215052

Gabriel,

Do you have an opinion on this version of the patch?

Sterling

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052)
@ 2012-05-16 20:03 Sterling Augustine
  2012-05-21 20:16 ` Sterling Augustine
  2012-05-29 22:32 ` Sterling Augustine
  0 siblings, 2 replies; 12+ messages in thread
From: Sterling Augustine @ 2012-05-16 20:03 UTC (permalink / raw)
  To: reply, gcc-patches

This patch adds new flags and defines such that the C++ decl pretty printer
prints both canonical dwarf names for decls without perturbing normal error
message output.

It addresses the issues with the earlier patches submitted as:

http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00516.html
http://gcc.gnu.org/ml/gcc-patches/2012-05/msg00512.html

Which are withdrawn.

This patch requires no changes to the testsuite and does not produce
visible changes to gcc's output except to dwarf consumers, which will now
all agree on the names of functions.

Tested with a full bootstrap.

OK for mainline?

Sterling



2012-05-16   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/cp-tree.h (TFF_MATCH_GNU_V3_DEMANGLER): Define and comment.
	* gcc/cp/error.c (dump_decl): Print appropriate string for anonymous
	namespace based on pp_c_flag_gnu_v3.
	(decl_as_string): Set cxx_pp->flags based on TFF_MATCH_GNU_V3_DEMANGLER.
	(lang_decl_name): Handle unnamed namespace decls.
	* gcc/cp/cp-lang.c (cxx_dwarf_name): Call decl_as_string for namespace
	decls.

Index: gcc/c-family/c-pretty-print.c
===================================================================
--- gcc/c-family/c-pretty-print.c	(revision 187603)
+++ gcc/c-family/c-pretty-print.c	(working copy)
@@ -446,8 +446,9 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
 {
   const enum tree_code code = TREE_CODE (t);
 
-  if (TREE_CODE (t) != POINTER_TYPE)
+  if (!(pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
     pp_c_type_qualifier_list (pp, t);
+
   switch (code)
     {
     case REFERENCE_TYPE:
@@ -494,6 +495,8 @@ pp_c_specifier_qualifier_list (c_pretty_printer *p
       pp_simple_type_specifier (pp, t);
       break;
     }
+  if ((pp->flags & pp_c_flag_gnu_v3) && TREE_CODE (t) != POINTER_TYPE)
+    pp_c_type_qualifier_list (pp, t);
 }
 
 /* parameter-type-list:
Index: gcc/c-family/c-pretty-print.h
===================================================================
--- gcc/c-family/c-pretty-print.h	(revision 187603)
+++ gcc/c-family/c-pretty-print.h	(working copy)
@@ -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_last_bit = 2,
+     pp_c_flag_gnu_v3 = 4
   } pp_c_pretty_print_flags;
 
 
Index: gcc/cp/error.c
===================================================================
--- gcc/cp/error.c	(revision 187603)
+++ gcc/cp/error.c	(working copy)
@@ -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));
 	}
@@ -2561,6 +2566,8 @@ decl_as_string (tree decl, int flags)
 {
   reinit_cxx_pp ();
   pp_translate_identifiers (cxx_pp) = false;
+  if (flags & TFF_MATCH_GNU_V3_DEMANGLER)
+    pp_c_base (cxx_pp)->flags |= pp_c_flag_gnu_v3;
   dump_decl (decl, flags);
   return pp_formatted_text (cxx_pp);
 }
@@ -2596,6 +2603,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);
 
Index: gcc/cp/cp-lang.c
===================================================================
--- gcc/cp/cp-lang.c	(revision 187603)
+++ gcc/cp/cp-lang.c	(working copy)
@@ -120,8 +120,14 @@ cxx_dwarf_name (tree t, int verbosity)
   if (verbosity >= 2)
     return decl_as_string (t,
 			   TFF_DECL_SPECIFIERS | TFF_UNQUALIFIED_NAME
-			   | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS);
+			   | TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS
+                           | TFF_MATCH_GNU_V3_DEMANGLER);
 
+  /* decl_as_string handles namespaces--especially anonymous ones--more
+     appropriately for debugging than cxx_printable_name.  But
+     cxx_printable_name handles templates and global ctors and dtors better.  */
+  if (TREE_CODE (t) == NAMESPACE_DECL)
+    return decl_as_string (t, TFF_MATCH_GNU_V3_DEMANGLER);
   return cxx_printable_name (t, verbosity);
 }
 
Index: gcc/cp/cp-tree.h
===================================================================
--- gcc/cp/cp-tree.h	(revision 187603)
+++ gcc/cp/cp-tree.h	(working copy)
@@ -4567,7 +4567,9 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
    TFF_UNQUALIFIED_NAME: do not print the qualifying scope of the
        top-level entity.
    TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS: do not omit template arguments
-       identical to their defaults.  */
+       identical to their defaults.
+   TFF_MATCH_GNU_V3_DEMANGLER: match the GNU v3 demangler's names for anonymous
+       namespaces and order of type-qualifiers vs type-specifiers.  */
 
 #define TFF_PLAIN_IDENTIFIER			(0)
 #define TFF_SCOPE				(1)
@@ -4583,6 +4585,7 @@ enum overload_flags { NO_SPECIAL = 0, DTOR_FLAG, T
 #define TFF_NO_FUNCTION_ARGUMENTS		(1 << 10)
 #define TFF_UNQUALIFIED_NAME			(1 << 11)
 #define TFF_NO_OMIT_DEFAULT_TEMPLATE_ARGUMENTS	(1 << 12)
+#define TFF_MATCH_GNU_V3_DEMANGLER	        (1 << 13)
 
 /* Returns the TEMPLATE_DECL associated to a TEMPLATE_TEMPLATE_PARM
    node.  */

--
This patch is available for review at http://codereview.appspot.com/6215052

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2012-06-07  0:25 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-06-01 23:08 [C++ Patch] Produce canonical names for debug info without changing normal pretty-printing (issue6215052) Sterling Augustine
2012-06-01 23:38 ` Gabriel Dos Reis
2012-06-04 17:53   ` Sterling Augustine
2012-06-06 23:07     ` Steven Bosscher
2012-06-06 23:46       ` Sterling Augustine
2012-06-07  0:56         ` Gabriel Dos Reis
  -- strict thread matches above, loose matches on Subject: below --
2012-05-16 20:03 Sterling Augustine
2012-05-21 20:16 ` Sterling Augustine
2012-05-29 22:32 ` Sterling Augustine
2012-05-30 21:15   ` Gabriel Dos Reis
2012-05-30 21:40     ` Sterling Augustine
2012-05-31  5:11       ` Gabriel Dos Reis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).