https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67758
--- Comment #5 from Mikael Morin <mikael at gcc dot gnu.org> --- Author: mikael Date: Sun Oct 4 12:30:16 2015 New Revision: 228457 URL: https://gcc.gnu.org/viewcvs?rev=228457&root=gcc&view=rev Log: Fix fortran common-related error recovery ICE. Upon reverting a symbol in a common block (after throwing an error), the compiler was ICEing because the symbol's common_block field was set, but the symbol was not in the common block's list of symbols. Fixed by both adding the symbol to the common block list and setting the symbol's common_block field at the same time. Furthermore, the gfc_add_in_common call is delayed and its result is ignored, so that its error messages are ignored and the compiler has the opportunity to give a better error message. Another gfc_add_in_common call is added later during resolution to emit again the missing errors. PR fortran/67758 gcc/fortran/ * match.c (gfc_match_common): Delay the common_block pointer assignment after error checking. Delay the call to gfc_add_in_common attribute after the handling of array specs. * resolve.c (resolve_common_vars): Call gfc_add_in_common again. gcc/testsuite/ * gfortran.dg/common_24.f: New. Added: trunk/gcc/testsuite/gfortran.dg/common_24.f Modified: trunk/gcc/fortran/ChangeLog trunk/gcc/fortran/match.c trunk/gcc/fortran/resolve.c trunk/gcc/testsuite/ChangeLog