re PR fortran/33542 (gfortran does not detect ambigious specific names if they are the same as generic names)
2007-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/33542 * interface.c (check_interface1): Specific procedures are always ambiguous if they have the same name. 2007-10-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/33542 * gfortran.dg/ambiguous_specific_1.f90: New test. From-SVN: r128954
This commit is contained in:
parent
f502740976
commit
dcd3d96354
@ -1,3 +1,9 @@
|
||||
2007-10-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33542
|
||||
* interface.c (check_interface1): Specific procedures are
|
||||
always ambiguous if they have the same name.
|
||||
|
||||
2007-10-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33566
|
||||
|
@ -1044,7 +1044,8 @@ check_interface1 (gfc_interface *p, gfc_interface *q0,
|
||||
if (p->sym->name == q->sym->name && p->sym->module == q->sym->module)
|
||||
continue;
|
||||
|
||||
if (compare_interfaces (p->sym, q->sym, generic_flag))
|
||||
if (compare_interfaces (p->sym, q->sym, generic_flag)
|
||||
|| p->sym->name == q->sym->name)
|
||||
{
|
||||
if (referenced)
|
||||
{
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-10-02 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/33542
|
||||
* gfortran.dg/ambiguous_specific_1.f90: New test.
|
||||
|
||||
2007-10-02 Revital Eres <eres@il.ibm.com>
|
||||
|
||||
* gcc.target/powerpc/paired-8.c: New test.
|
||||
|
37
gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
Normal file
37
gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
Normal file
@ -0,0 +1,37 @@
|
||||
! { dg-do compile }
|
||||
! Checks the fix for PR33542, in which the ambiguity in the specific
|
||||
! interfaces of foo was missed.
|
||||
!
|
||||
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
|
||||
!
|
||||
MODULE M1
|
||||
INTERFACE FOO
|
||||
MODULE PROCEDURE FOO2
|
||||
END INTERFACE
|
||||
CONTAINS
|
||||
SUBROUTINE FOO2(I)
|
||||
INTEGER, INTENT(IN) :: I
|
||||
WRITE(*,*) 'INTEGER'
|
||||
END SUBROUTINE FOO2
|
||||
END MODULE M1
|
||||
|
||||
MODULE M2
|
||||
INTERFACE FOO
|
||||
MODULE PROCEDURE FOO2
|
||||
END INTERFACE
|
||||
CONTAINS
|
||||
SUBROUTINE FOO2(R)
|
||||
REAL, INTENT(IN) :: R
|
||||
WRITE(*,*) 'REAL'
|
||||
END SUBROUTINE FOO2
|
||||
END MODULE M2
|
||||
|
||||
PROGRAM P
|
||||
USE M1 ! { dg-error "Ambiguous interfaces" }
|
||||
USE M2
|
||||
implicit none
|
||||
external bar
|
||||
CALL FOO(10)
|
||||
CALL FOO(10.)
|
||||
END PROGRAM P
|
||||
! { dg-final { cleanup-modules "m1 m2" } }
|
Loading…
Reference in New Issue
Block a user