re PR fortran/54730 (ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1066)
authorMikael Morin <mikael@gcc.gnu.org>
Sun, 3 Mar 2013 17:34:42 +0000 (17:34 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Sun, 3 Mar 2013 17:34:42 +0000 (17:34 +0000)
commitab68a73ede62fbcbb3abd07879838ebe81fdd484
treeb845cd1c7ec2eb129f2b1ede285390fbfc00a15c
parent4ef9b950005a24aab3b0ea7da77f16292ef587b4
re PR fortran/54730 (ICE in gfc_typenode_for_spec, at fortran/trans-types.c:1066)

fortran/
PR fortran/54730
* gfortran.h (struct gfc_undo_change_set): New field 'previous'.
(gfc_new_undo_checkpoint, gfc_drop_last_undo_checkpoint,
gfc_restore_last_undo_checkpoint): New prototypes.
* symbol.c (default_undo_chgset_var): Update initialization.
(single_undo_checkpoint_p, gfc_new_undo_checkpoint,
free_undo_change_set_data, pop_undo_change_set,
gfc_drop_last_undo_checkpoint, enforce_single_undo_checkpoint):
New functions.
(save_symbol_data): Handle multiple change sets.  Make sure old_symbol
field's previous value is not overwritten.  Clear gfc_new field.
(restore_old_symbol): Restore previous old_symbol field.
(gfc_restore_last_undo_checkpoint): New function, using body renamed
from gfc_undo_symbols.  Restore the previous change set as current one.
(gfc_undo_symbols): New body.
(gfc_commit_symbols, gfc_commit_symbol, gfc_enforce_clean_symbol_state):
Call enforce_single_undo_checkpoint.
(gfc_symbol_done_2): Ditto.  Free change set data.

From-SVN: r196414
gcc/fortran/ChangeLog
gcc/fortran/gfortran.h
gcc/fortran/symbol.c