diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index e4a3c07..1ed0b9d 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -364,12 +364,16 @@ should_emit_struct_debug (tree type, enum debug_info_usage usage)
     return DUMP_GSTRUCT (type, usage, criterion, generic, false, true);
 
   type_decl = TYPE_STUB_DECL (TYPE_MAIN_VARIANT (type));
+  
+  if (type_decl != NULL)
+  {
+    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);
 }
 
