diff options
author | Jason Merrill <jason@redhat.com> | 2012-06-04 17:45:31 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-06-04 17:45:31 -0400 |
commit | 61a3e629c1e098628e4cf8994a82284cf41fa872 (patch) | |
tree | f20368afc4bf6f02d717a36e699bafefbd2376e3 | |
parent | a67cfde819ff41fafec5466008b7c95b3e97a7f9 (diff) | |
download | gcc-61a3e629c1e098628e4cf8994a82284cf41fa872.zip gcc-61a3e629c1e098628e4cf8994a82284cf41fa872.tar.gz gcc-61a3e629c1e098628e4cf8994a82284cf41fa872.tar.bz2 |
dwarf2out.c (is_unit_die): New.
* dwarf2out.c (is_unit_die): New.
(copy_declaration_context, copy_ancestor_tree): Use it.
(copy_decls_walk): Likewise.
From-SVN: r188209
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/dwarf2out.c | 19 |
2 files changed, 19 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54db10a..53130fa 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index c1492b0..6e4ab76 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); |