This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[patch, fortran] PR32612 gfortran - incorrectly flags error on interface module
- From: Jerry DeLisle <jvdelisle at verizon dot net>
- To: Fortran List <fortran at gcc dot gnu dot org>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 03 Jul 2007 18:02:20 -0700
- Subject: [patch, fortran] PR32612 gfortran - incorrectly flags error on interface module
I will commit the following as obvious and simple:
Regression tested on x86-64.
I left the mod_proc attribute off in the patch for pr25061. This is a regression
fix.
Regards,
Jerry
2007-07-03 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32612
* decl.c (get_proc_name): Include attr->mod_proc in check for error.
Index: decl.c
===================================================================
--- decl.c (revision 126283)
+++ decl.c (working copy)
@@ -708,7 +708,8 @@ get_proc_name (const char *name, gfc_sym
/* Trap a procedure with a name the same as interface in the
encompassing scope. */
if (sym->attr.generic != 0
- && (sym->attr.subroutine || sym->attr.function))
+ && (sym->attr.subroutine || sym->attr.function)
+ && !sym->attr.mod_proc)
gfc_error_now ("Name '%s' at %C is already defined"
" as a generic interface at %L",
name, &sym->declared_at);
! { dg-do compile }
! PR32612 gfortran - incorrectly flags error on interface module
! Test case is that of the reporters
module files_module
implicit none
integer, parameter :: REAL8 = SELECTED_REAL_KIND(12)
save
private
interface my_sio_file_read_common
module procedure my_sio_file_read_common ! This was rejected before
end interface
contains
subroutine my_sio_file_read_all_i4(serial, data, data_lengths, error)
logical, intent(in) :: serial
integer, intent(out) :: data(*)
integer, intent(in) :: data_lengths(0:*)
integer, intent(out) :: error
call my_sio_file_read_common(data_lengths, error, data_i4 = data)
end subroutine my_sio_file_read_all_i4
subroutine my_sio_file_read_common(data_lengths, error, &
data_i4, &
data_r8)
integer, intent(in) :: data_lengths(0:*)
integer, intent(out) :: error
integer, intent(out), optional :: data_i4(*)
real(REAL8), intent(out), optional :: data_r8(*)
error=0
data_i4(1)=0
data_r8(1)=0
end subroutine my_sio_file_read_common
end module files_module