mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-10 12:21:09 +08:00
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
This commit is contained in:
parent
8b791297bf
commit
9be3684bdd
@ -1,3 +1,10 @@
|
||||
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>
|
||||
|
||||
PR fortran/38220
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
Contributed by Andy Vaught
|
||||
|
||||
@ -4313,7 +4313,7 @@ check_host_association (gfc_expr *e)
|
||||
if (gfc_current_ns->parent
|
||||
&& 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
|
||||
&& sym->ts.type == old_sym->ts.type
|
||||
&& sym->attr.flavor == FL_PROCEDURE
|
||||
|
@ -1,3 +1,8 @@
|
||||
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>
|
||||
|
||||
* lib/target-supports.exp: Add method to determine if the effective
|
||||
|
35
gcc/testsuite/gfortran.dg/host_assoc_function_6.f90
Normal file
35
gcc/testsuite/gfortran.dg/host_assoc_function_6.f90
Normal file
@ -0,0 +1,35 @@
|
||||
! { 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" } }
|
Loading…
x
Reference in New Issue
Block a user