From 7215ebb3dc54c757fdebfefbd31c4a058e08c84c Mon Sep 17 00:00:00 2001 From: pault Date: Sun, 6 Jan 2008 22:00:00 +0000 Subject: [PATCH] 2008-01-06 Paul Thomas PR fortran/34545 * module.c (load_needed): If the namespace has no proc_name give it the module symbol. 2008-01-06 Paul Thomas PR fortran/34545 * gfortran.dg/use_12.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131364 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 8 ++++---- gcc/fortran/module.c | 6 ++++++ gcc/testsuite/ChangeLog | 11 +++++++++++ gcc/testsuite/gfortran.dg/use_12.f90 | 25 +++++++++++++++++++++++++ 4 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/use_12.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 09155e3..6659ab5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,8 +1,8 @@ -2008-01-06 Tobias Burnus +2008-01-06 Paul Thomas - PR fortran/34689 - * interface.c (compare_actual_formal): Fix intent(out) check for - function result variables. + PR fortran/34545 + * module.c (load_needed): If the namespace has no proc_name + give it the module symbol. 2008-01-06 Jerry DeLisle diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index f3c54b7..20528cb 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3525,6 +3525,12 @@ load_needed (pointer_info *p) associate_integer_pointer (q, ns); } + /* Use the module sym as 'proc_name' so that gfc_get_symbol_decl + doesn't go pear-shaped if the symbol is used. */ + if (!ns->proc_name) + gfc_find_symbol (p->u.rsym.module, gfc_current_ns, + 1, &ns->proc_name); + sym = gfc_new_symbol (p->u.rsym.true_name, ns); sym->module = gfc_get_string (p->u.rsym.module); strcpy (sym->binding_label, p->u.rsym.binding_label); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a83556..d66912b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,14 @@ +2008-01-06 Paul Thomas + + PR fortran/34545 + * gfortran.dg/use_12.f90: New test. + +2008-01-06 Tobias Burnus + + PR fortran/34689 + * interface.c (compare_actual_formal): Fix intent(out) check for + function result variables. + 2008-01-06 Tobias Burnus PR fortran/34690 diff --git a/gcc/testsuite/gfortran.dg/use_12.f90 b/gcc/testsuite/gfortran.dg/use_12.f90 new file mode 100644 index 0000000..82614b5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/use_12.f90 @@ -0,0 +1,25 @@ +! { dg-do compile } +! Tests the fix of PR34545, in which the 'numclusters' that determines the size +! of fnres was not properly associated. +! +! Reported by Jon D. Richards +! +module m1 + integer :: numclusters = 2 +end module m1 + +module m2 + contains + function get_nfirst( ) result(fnres) + use m1, only: numclusters + real :: fnres(numclusters) ! change to REAL and it works!! + end function get_nfirst +end module m2 + +program kmeans_driver + use m1 + use m2 + integer :: nfirst(3) + nfirst(1:numclusters) = get_nfirst( ) +end program kmeans_driver +! { dg-final { cleanup-modules "m1 m2" } } -- 2.7.4