Hello world, yet another obvious and simple fix: You cannot really associate the main program with a variable. Committed as r279088 after regression-testing.
Regards Thomas 2018-12-08 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/92780 * resolve.c (resolve_assoc_var): Issue error if the associating entity is a program. 2018-12-08 Thomas Koenig <tkoe...@gcc.gnu.org> PR fortran/92780 * gfortran.dg/associate_50.f90: New test.
! { dg-do compile } ! PR 92780 - this used to ICE instead of being rejected. ! Test case by Gerhard Steinmetz. program p associate (y => p) ! { dg-error "is a PROGRAM" } end associate end program p
Index: resolve.c =================================================================== --- resolve.c (Revision 279064) +++ resolve.c (Arbeitskopie) @@ -8842,6 +8842,12 @@ resolve_assoc_var (gfc_symbol* sym, bool resolve_t gcc_assert (target->symtree); tsym = target->symtree->n.sym; + if (tsym->attr.flavor == FL_PROGRAM) + { + gfc_error ("Associating entity %qs at %L is a PROGRAM", + tsym->name, &target->where); + return; + } sym->attr.asynchronous = tsym->attr.asynchronous; sym->attr.volatile_ = tsym->attr.volatile_;