aboutsummaryrefslogtreecommitdiff
path: root/gcc/dwarf2out.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2012-06-04 21:45:31 +0000
committerJason Merrill <jason@redhat.com>2012-06-04 21:45:31 +0000
commit08979ab306843987fce04ebc956221a873bec878 (patch)
treef20368afc4bf6f02d717a36e699bafefbd2376e3 /gcc/dwarf2out.c
parentebdfcf2bbdf5b591a838d056ca5d712cab455100 (diff)
* dwarf2out.c (is_unit_die): New.
(copy_declaration_context, copy_ancestor_tree): Use it. (copy_decls_walk): Likewise. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@188209 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r--gcc/dwarf2out.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index c1492b0f0ef..6e4ab761b75 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -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);