URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [gfortran.dg/] [use_only_1.f90] - Rev 302
Compare with Previous | Blame | View Log
! { dg-do run }! { dg-options "-O1" }! Checks the fix for PR33541, in which a requirement of! F95 11.3.2 was not being met: The local names 'x' and! 'y' coming from the USE statements without an ONLY clause! should not survive in the presence of the locally renamed! versions. In fixing the PR, the same correction has been! made to generic interfaces.!! Reported by Reported by John Harper in! http://gcc.gnu.org/ml/fortran/2007-09/msg00397.html!MODULE xmodinteger(4) :: x = -666private foo, barinterface xfoobarmodule procedure foo, barend interfacecontainsinteger function foo ()foo = 42end functioninteger function bar (a)integer abar = aend functionEND MODULE xmodMODULE ymodinteger(4) :: y = -666private foo, barinterface yfoobarmodule procedure foo, barend interfacecontainsinteger function foo ()foo = 42end functioninteger function bar (a)integer abar = aend functionEND MODULE ymodinteger function xfoobar () ! These function as defaults should...xfoobar = 99end functioninteger function yfoobar () ! ...the rename works correctly.yfoobar = 99end functionPROGRAM test2usesimplicit integer(2) (a-z)x = 666 ! These assignments generate implicitly typedy = 666 ! local variables 'x' and 'y'.call test1call test2call test3containssubroutine test1 ! Test the fix of the original PRUSE xmodUSE xmod, ONLY: xrenamed => xUSE ymod, ONLY: yrenamed => yUSE ymodimplicit integer(2) (a-z)if (kind(xrenamed) == kind(x)) call abort ()if (kind(yrenamed) == kind(y)) call abort ()end subroutinesubroutine test2 ! Test the fix applies to generic interfacesUSE xmodUSE xmod, ONLY: xfoobar_renamed => xfoobarUSE ymod, ONLY: yfoobar_renamed => yfoobarUSE ymodif (xfoobar_renamed (42) == xfoobar ()) call abort ()if (yfoobar_renamed (42) == yfoobar ()) call abort ()end subroutinesubroutine test3 ! Check that USE_NAME == LOCAL_NAME is OKUSE xmodUSE xmod, ONLY: x => x, xfoobar => xfoobarUSE ymod, ONLY: y => y, yfoobar => yfoobarUSE ymodif (kind (x) /= 4) call abort ()if (kind (y) /= 4) call abort ()if (xfoobar (77) /= 77_4) call abort ()if (yfoobar (77) /= 77_4) call abort ()end subroutineEND PROGRAM test2uses! { dg-final { cleanup-modules "xmod ymod" } }
