http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47209
Kai Tietz <ktietz at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |ktietz at gcc dot gnu.org --- Comment #4 from Kai Tietz <ktietz at gcc dot gnu.org> 2011-01-08 20:55:20 UTC --- Well, the issue here seems to be that in should_emit_struct_debug TYPE_STUB_DECL (type) for provided type is a NULL_TREE. In next two if-statements this result is used unconditionally. I am not sure if the underlying issue is related to some other place in c++ FE (I assume so), but following patch at least avoid segfault. Index: dwarf2out.c =================================================================== --- dwarf2out.c (revision 168601) +++ dwarf2out.c (working copy) @@ -620,12 +620,14 @@ return DUMP_GSTRUCT (type, usage, criterion, generic, false, true); type_decl = TYPE_STUB_DECL (type); + if (type_decl != NULL_TREE) + { + if (criterion == DINFO_STRUCT_FILE_SYS && DECL_IN_SYSTEM_HEADER (type_decl)) + return DUMP_GSTRUCT (type, usage, criterion, generic, false, true); - if (criterion == DINFO_STRUCT_FILE_SYS && DECL_IN_SYSTEM_HEADER (type_decl)) - return DUMP_GSTRUCT (type, usage, criterion, generic, false, true); - - if (matches_main_base (DECL_SOURCE_FILE (type_decl))) - return DUMP_GSTRUCT (type, usage, criterion, generic, true, true); + if (matches_main_base (DECL_SOURCE_FILE (type_decl))) + return DUMP_GSTRUCT (type, usage, criterion, generic, true, true); + } return DUMP_GSTRUCT (type, usage, criterion, generic, false, false); }