Fix DWARF1/C++ abort with member function in class nested in another function.
* 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. From-SVN: r23404
This commit is contained in:
parent
22eed1e678
commit
0a4be913a4
@ -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
|
||||
|
@ -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. */
|
||||
/* 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 (pending_types != 0)
|
||||
abort ();
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user