>> That's sensible anyways - you avoid useless work.  So the patch is ok.
>
> OK, I'll submit this patch, but leave the PR open and follow up with
> something to fix the underlying problem as you suggest.

Here's the patch I'm committing (as soon as bootstrap and testing completes)...

-cary


2012-06-29   Cary Coutant  <ccout...@google.com>

gcc/
        * dwarf2out.c (add_pubname_string): Don't check for want_pubnames.
        (gen_subprogram_die): Don't add pubname if want_pubnames is false.
        (gen_variable_die): Likewise.
        (gen_namespace_die): Likewise.


Index: gcc/dwarf2out.c
===================================================================
--- gcc/dwarf2out.c     (revision 189082)
+++ gcc/dwarf2out.c     (working copy)
@@ -8152,14 +8152,11 @@ dwarf2_name (tree decl, int scope)
 static void
 add_pubname_string (const char *str, dw_die_ref die)
 {
-  if (want_pubnames ())
-    {
-      pubname_entry e;
+  pubname_entry e;

-      e.die = die;
-      e.name = xstrdup (str);
-      VEC_safe_push (pubname_entry, gc, pubname_table, &e);
-    }
+  e.die = die;
+  e.name = xstrdup (str);
+  VEC_safe_push (pubname_entry, gc, pubname_table, &e);
 }

 static void
@@ -17141,7 +17138,8 @@ gen_subprogram_die (tree decl, dw_die_re
                  add_AT_lbl_id (seg_die, DW_AT_high_pc,
                                 fde->dw_fde_second_end);
                  add_name_attribute (seg_die, name);
-                 add_pubname_string (name, seg_die);
+                 if (want_pubnames ())
+                   add_pubname_string (name, seg_die);
                }
            }
          else
@@ -17566,7 +17564,8 @@ gen_variable_die (tree decl, tree origin
            }
           else if (DECL_EXTERNAL (decl))
            add_AT_flag (com_die, DW_AT_declaration, 1);
-         add_pubname_string (cnam, com_die); /* ??? needed? */
+         if (want_pubnames ())
+           add_pubname_string (cnam, com_die); /* ??? needed? */
          com_die->decl_id = DECL_UID (com_decl);
          slot = htab_find_slot (common_block_die_table, com_die, INSERT);
          *slot = (void *) com_die;
@@ -19192,7 +19191,8 @@ gen_namespace_die (tree decl, dw_die_ref
       equate_decl_number_to_die (decl, namespace_die);
     }
   /* Bypass dwarf2_name's check for DECL_NAMELESS.  */
-  add_pubname_string (lang_hooks.dwarf_name (decl, 1), namespace_die);
+  if (want_pubnames ())
+    add_pubname_string (lang_hooks.dwarf_name (decl, 1), namespace_die);
 }

 /* Generate Dwarf debug information for a decl described by DECL.

Reply via email to