summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/dwarfout.c20
2 files changed, 22 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 21ec81f21df..a7970e19b11 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c
index 5c33cfc4d58..4ab27474832 100644
--- a/gcc/dwarfout.c
+++ b/gcc/dwarfout.c
@@ -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 */