OSDN Git Service

Fix DWARF1/C++ abort with member function in class nested in another function.
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Oct 1998 14:09:31 +0000 (14:09 +0000)
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Oct 1998 14:09:31 +0000 (14:09 +0000)
* dwarfout.c (dwarfout_file_scope_decl): If DECL_CONTEXT, don't abort
if pending_types is non-zero.
(dwarfout_finish): Verify pending_types is zero before finishing.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23404 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/dwarfout.c

index 21ec81f..a7970e1 100644 (file)
@@ -1,3 +1,9 @@
+Wed Oct 28 14:06:49 1998  Jim Wilson  <wilson@cygnus.com>
+
+       * dwarfout.c (dwarfout_file_scope_decl): If DECL_CONTEXT, don't abort
+       if pending_types is non-zero.
+       (dwarfout_finish): Verify pending_types is zero before finishing.
+
 Wed Oct 28 10:29:09 1998  Nick Clifton  <nickc@cygnus.com>
 
        * expr.c (convert_move): Use shifts to perform the move if a
index 5c33cfc..4ab2747 100644 (file)
@@ -5257,10 +5257,16 @@ dwarfout_file_scope_decl (decl, set_finalizing)
 
   output_pending_types_for_scope (NULL_TREE);
 
-  /* The above call should have totally emptied the pending_types_list.  */
-
-  if (pending_types != 0)
-    abort ();
+  /* The above call should have totally emptied the pending_types_list
+     if this is not a nested function or class.  If this is a nested type,
+     then the remaining pending_types will be emitted when the containing type
+     is handled.  */
+  
+  if (! DECL_CONTEXT (decl))
+    {
+      if (pending_types != 0)
+       abort ();
+    }
 
   ASM_OUTPUT_POP_SECTION (asm_out_file);
 
@@ -6013,6 +6019,12 @@ dwarfout_finish ()
 
       ASM_OUTPUT_POP_SECTION (asm_out_file);
     }
+
+  /* There should not be any pending types left at the end.  We need
+     this now because it may not have been checked on the last call to
+     dwarfout_file_scope_decl.  */
+  if (pending_types != 0)
+    abort ();
 }
 
 #endif /* DWARF_DEBUGGING_INFO */