Commit 9be3684b by Paul Thomas

re PR fortran/38765 (ICE in check_host_association)

2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38765
	* resolve.c (check_host_association): Use the symtree name to
	search for a potential contained procedure, since this is the
	name by which it would be referenced.

2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38765
	* gfortran.dg/host_assoc_function_6.f90: New test.

From-SVN: r143237
parent 8b791297
2009-01-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38765
* resolve.c (check_host_association): Use the symtree name to
search for a potential contained procedure, since this is the
name by which it would be referenced.
2009-01-06 Thomas Koenig <tkoenig@gcc.gnu.org> 2009-01-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/38220 PR fortran/38220
......
/* Perform type resolution on the various structures. /* Perform type resolution on the various structures.
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc. Free Software Foundation, Inc.
Contributed by Andy Vaught Contributed by Andy Vaught
...@@ -4313,7 +4313,7 @@ check_host_association (gfc_expr *e) ...@@ -4313,7 +4313,7 @@ check_host_association (gfc_expr *e)
if (gfc_current_ns->parent if (gfc_current_ns->parent
&& old_sym->ns != gfc_current_ns) && old_sym->ns != gfc_current_ns)
{ {
gfc_find_symbol (old_sym->name, gfc_current_ns, 1, &sym); gfc_find_symbol (e->symtree->name, gfc_current_ns, 1, &sym);
if (sym && old_sym != sym if (sym && old_sym != sym
&& sym->ts.type == old_sym->ts.type && sym->ts.type == old_sym->ts.type
&& sym->attr.flavor == FL_PROCEDURE && sym->attr.flavor == FL_PROCEDURE
......
2009-01-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38765
* gfortran.dg/host_assoc_function_6.f90: New test.
2009-01-09 Joel Sherrill <joel.sherrill@oarcorp.com> 2009-01-09 Joel Sherrill <joel.sherrill@oarcorp.com>
* lib/target-supports.exp: Add method to determine if the effective * lib/target-supports.exp: Add method to determine if the effective
......
! { dg-do compile }
! Tests the fix for PR38765 in which the use associated symbol
! 'fun' was confused with the contained function in 'mod_b'
! because the real name was being used instead of the 'use'
! name..
!
! Contributed by Paul Thomas <pault@gcc.gnu.org>
! from a report by Marco Restelli.
!
module mod_a
implicit none
public :: fun
private
contains
pure function fun(x) result(mu)
real, intent(in) :: x(:,:)
real :: mu(2,2,size(x,2))
mu = 2.0
end function fun
end module mod_a
module mod_b
use mod_a, only: &
a_fun => fun
implicit none
private
contains
pure function fun(x) result(mu)
real, intent(in) :: x(:,:)
real :: mu(2,2,size(x,2))
mu = a_fun(x)
end function fun
end module mod_b
! { dg-final { cleanup-modules "mod_a mod_b" } }
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