Commit db39d0c2 by Paul Thomas

re PR fortran/34910 (ICE on invalid assignments in doubly-contained functions)

2008-01-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/34910
	* expr.c (gfc_check_assign): It is an error to assign
	to a sibling procedure.

2008-01-31  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/34910
	* gfortran.dg/proc_assign_2.f90: New test.

From-SVN: r131985
parent 0451301c
2008-01-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34910
* expr.c (gfc_check_assign): It is an error to assign
to a sibling procedure.
2008-01-30 Paul Thomas <pault@gcc.gnu.org> 2008-01-30 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34975 PR fortran/34975
......
...@@ -2705,6 +2705,15 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform) ...@@ -2705,6 +2705,15 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, int conform)
bad_proc = true; bad_proc = true;
} }
/* (iv) Host associated and not the function symbol or the
parent result. This picks up sibling references, which
cannot be entries. */
if (!sym->attr.entry
&& sym->ns == gfc_current_ns->parent
&& sym != gfc_current_ns->proc_name
&& sym != gfc_current_ns->parent->proc_name->result)
bad_proc = true;
if (bad_proc) if (bad_proc)
{ {
gfc_error ("'%s' at %L is not a VALUE", sym->name, &lvalue->where); gfc_error ("'%s' at %L is not a VALUE", sym->name, &lvalue->where);
......
2008-01-31 Paul Thomas <pault@gcc.gnu.org>
PR fortran/34910
* gfortran.dg/proc_assign_2.f90: New test.
2008-01-31 Douglas Gregor <doug.gregor@gmail.com> 2008-01-31 Douglas Gregor <doug.gregor@gmail.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
! { dg-do compile }
! This checks the fix for PR34910, in which the invalid reference
! below caused an ICE.
!
! Contributed by Daniel Franke <dfranke@gcc.gnu.org>
!
MODULE foo
CONTAINS
INTEGER FUNCTION f()
f = 42
CONTAINS
LOGICAL FUNCTION f1()
f1 = .TRUE.
END FUNCTION
LOGICAL FUNCTION f2()
f1 = .FALSE. ! { dg-error "not a VALUE" }
END FUNCTION
END FUNCTION
END MODULE
! { dg-final { cleanup-modules "foo" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment