2004-03-16 David Carlton <carlton@kealia.com>
* dwarf2read.c (process_structure_scope): Process children even when we're a declaration.
This commit is contained in:
parent
947f426e27
commit
90aeadfcc3
2 changed files with 24 additions and 17 deletions
|
@ -1,3 +1,8 @@
|
|||
2004-03-16 David Carlton <carlton@kealia.com>
|
||||
|
||||
* dwarf2read.c (process_structure_scope): Process children even
|
||||
when we're a declaration.
|
||||
|
||||
2004-03-16 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* symtab.h (find_pc_sect_partial_function): Delete declaration.
|
||||
|
|
|
@ -3331,33 +3331,35 @@ process_structure_scope (struct die_info *die, struct dwarf2_cu *cu)
|
|||
{
|
||||
struct objfile *objfile = cu->objfile;
|
||||
const char *previous_prefix = processing_current_prefix;
|
||||
struct die_info *child_die = die->child;
|
||||
|
||||
if (TYPE_TAG_NAME (die->type) != NULL)
|
||||
processing_current_prefix = TYPE_TAG_NAME (die->type);
|
||||
|
||||
if (die->child != NULL && ! die_is_declaration (die, cu))
|
||||
/* NOTE: carlton/2004-03-16: GCC 3.4 (or at least one of its
|
||||
snapshots) has been known to create a die giving a declaration
|
||||
for a class that has, as a child, a die giving a definition for a
|
||||
nested class. So we have to process our children even if the
|
||||
current die is a declaration. Normally, of course, a declaration
|
||||
won't have any children at all. */
|
||||
|
||||
while (child_die != NULL && child_die->tag)
|
||||
{
|
||||
struct die_info *child_die;
|
||||
|
||||
child_die = die->child;
|
||||
|
||||
while (child_die && child_die->tag)
|
||||
if (child_die->tag == DW_TAG_member
|
||||
|| child_die->tag == DW_TAG_variable
|
||||
|| child_die->tag == DW_TAG_inheritance)
|
||||
{
|
||||
if (child_die->tag == DW_TAG_member
|
||||
|| child_die->tag == DW_TAG_variable
|
||||
|| child_die->tag == DW_TAG_inheritance)
|
||||
{
|
||||
/* Do nothing. */
|
||||
}
|
||||
else
|
||||
process_die (child_die, cu);
|
||||
|
||||
child_die = sibling_die (child_die);
|
||||
/* Do nothing. */
|
||||
}
|
||||
else
|
||||
process_die (child_die, cu);
|
||||
|
||||
new_symbol (die, die->type, cu);
|
||||
child_die = sibling_die (child_die);
|
||||
}
|
||||
|
||||
if (die->child != NULL && ! die_is_declaration (die, cu))
|
||||
new_symbol (die, die->type, cu);
|
||||
|
||||
processing_current_prefix = previous_prefix;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue