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_;

Reply via email to