--- dwarf2read.c.orig 2010-05-11 13:46:27.922551500 -0700 +++ dwarf2read.c 2010-05-11 13:46:32.198710619 -0700 @@ -5179,6 +5179,11 @@ read_structure_type (struct die_info *di if (die->tag == DW_TAG_structure_type || die->tag == DW_TAG_class_type) TYPE_NAME (type) = TYPE_TAG_NAME (type); + + /* dwarf2_full_name might have already finished building the DIE's + type. If so, there is no need to continue. */ + if (get_die_type (die, cu) != NULL) + return get_die_type (die, cu); } else {