diff mbox

[Fortran] PR 58470: [4.9 Regression] [OOP] ICE on invalid with FINAL procedure and type extension

Message ID CAKwh3qjcxR7sOwOB=UiZeYyB2_g_yyLtcjjd8iUaSZhmV5g33w@mail.gmail.com
State New
Headers show

Commit Message

Janus Weil Feb. 8, 2014, 2:33 p.m. UTC
Hi Mikael,

thanks for your suggestions and the approval of the patch.

>> maybe add gcc_assert to
>> make it clear that fini->proc_tree should be set at this point.
> Or better: a comment ;-)

I'm going for the gcc_assert *plus* a comment ;)

The thusly updated patch in the attachment regtests cleanly. Will
commit later today.

Cheers,
Janus
diff mbox

Patch

Index: gcc/fortran/class.c
===================================================================
--- gcc/fortran/class.c	(revision 207631)
+++ gcc/fortran/class.c	(working copy)
@@ -1880,8 +1880,7 @@  generate_finalization_wrapper (gfc_symbol *derived
 
       for (fini = derived->f2k_derived->finalizers; fini; fini = fini->next)
 	{
-	  if (!fini->proc_tree)
-	    fini->proc_tree = gfc_find_sym_in_symtree (fini->proc_sym);
+	  gcc_assert (fini->proc_tree);   /* Should have been set in gfc_resolve_finalizers.  */
 	  if (fini->proc_tree->n.sym->attr.elemental)
 	    {
 	      fini_elem = fini;
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 207631)
+++ gcc/fortran/resolve.c	(working copy)
@@ -12455,10 +12455,6 @@  resolve_fl_derived0 (gfc_symbol *sym)
   /* Add derived type to the derived type list.  */
   add_dt_to_dt_list (sym);
 
-  /* Check if the type is finalizable. This is done in order to ensure that the
-     finalization wrapper is generated early enough.  */
-  gfc_is_finalizable (sym, NULL);
-
   return true;
 }