dwarf2out.c (is_unit_die): New.
authorJason Merrill <jason@redhat.com>
Mon, 4 Jun 2012 21:45:31 +0000 (17:45 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 4 Jun 2012 21:45:31 +0000 (17:45 -0400)
* dwarf2out.c (is_unit_die): New.
(copy_declaration_context, copy_ancestor_tree): Use it.
(copy_decls_walk): Likewise.

From-SVN: r188209

gcc/ChangeLog
gcc/dwarf2out.c

index 54db10a1e44bfe4f091ab460d7ec853c63b2b291..53130faabc4692cc94ff62e84253f9963b9b57b6 100644 (file)
@@ -1,3 +1,9 @@
+2012-06-04  Jason Merrill  <jason@redhat.com>
+
+       * dwarf2out.c (is_unit_die): New.
+       (copy_declaration_context, copy_ancestor_tree): Use it.
+       (copy_decls_walk): Likewise.
+
 2012-06-04  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR c++/53524
index c1492b0f0efb6a5dab6b40e0aff5512bae47de71..6e4ab761b758f3c926fac25b042897fb8367a9d2 100644 (file)
@@ -5972,6 +5972,16 @@ is_cu_die (dw_die_ref c)
   return c && c->die_tag == DW_TAG_compile_unit;
 }
 
+/* Returns true iff C is a unit DIE of some sort.  */
+
+static inline bool
+is_unit_die (dw_die_ref c)
+{
+  return c && (c->die_tag == DW_TAG_compile_unit
+              || c->die_tag == DW_TAG_partial_unit
+              || c->die_tag == DW_TAG_type_unit);
+}
+
 static char *
 gen_internal_sym (const char *prefix)
 {
@@ -6379,8 +6389,7 @@ copy_declaration_context (dw_die_ref unit, dw_die_ref die)
     }
 
   if (decl->die_parent != NULL
-      && decl->die_parent->die_tag != DW_TAG_compile_unit
-      && decl->die_parent->die_tag != DW_TAG_type_unit)
+      && !is_unit_die (decl->die_parent))
     {
       new_decl = copy_ancestor_tree (unit, decl, NULL);
       if (new_decl != NULL)
@@ -6654,8 +6663,7 @@ copy_ancestor_tree (dw_die_ref unit, dw_die_ref die, htab_t decl_table)
       dw_die_ref spec = get_AT_ref (parent, DW_AT_specification);
       if (spec != NULL)
         parent = spec;
-      if (parent->die_tag != DW_TAG_compile_unit
-          && parent->die_tag != DW_TAG_type_unit)
+      if (!is_unit_die (parent))
         new_parent = copy_ancestor_tree (unit, parent, decl_table);
     }
 
@@ -6754,8 +6762,7 @@ copy_decls_walk (dw_die_ref unit, dw_die_ref die, htab_t decl_table)
               /* If TARG has surrounding context, copy its ancestor tree
                  into the new type unit.  */
               if (targ->die_parent != NULL
-                  && targ->die_parent->die_tag != DW_TAG_compile_unit
-                  && targ->die_parent->die_tag != DW_TAG_type_unit)
+                 && !is_unit_die (targ->die_parent))
                 parent = copy_ancestor_tree (unit, targ->die_parent,
                                              decl_table);