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/] [proc_ptr_1.f90] - Rev 302
Compare with Previous | Blame | View Log
! { dg-do run }!! basic tests of PROCEDURE POINTERS!! Contributed by Janus Weil <janus@gcc.gnu.org>module mcontainssubroutine proc1(arg)character (5) :: argarg = "proc1"end subroutineinteger function proc2(arg)integer, intent(in) :: argproc2 = arg**2end functioncomplex function proc3(re, im)real, intent(in) :: re, improc3 = complex (re, im)end functionend modulesubroutine foo1end subroutinereal function foo2()foo2=6.3end functionprogram procPtrTestuse m, only: proc1, proc2, proc3character (5) :: strPROCEDURE(proc1), POINTER :: ptr1PROCEDURE(proc2), POINTER :: ptr2PROCEDURE(proc3), POINTER :: ptr3 => NULL()PROCEDURE(REAL), SAVE, POINTER :: ptr4PROCEDURE(), POINTER :: ptr5,ptr6EXTERNAL :: foo1,foo2real :: foo2if(ASSOCIATED(ptr3)) call abort()NULLIFY(ptr1)if (ASSOCIATED(ptr1)) call abort()ptr1 => proc1if (.not. ASSOCIATED(ptr1)) call abort()call ptr1 (str)if (str .ne. "proc1") call abort ()ptr2 => NULL()if (ASSOCIATED(ptr2)) call abort()ptr2 => proc2if (.not. ASSOCIATED(ptr2,proc2)) call abort()if (10*ptr2 (10) .ne. 1000) call abort ()ptr3 => NULL (ptr3)if (ASSOCIATED(ptr3)) call abort()ptr3 => proc3if (ptr3 (1.0, 2.0) .ne. (1.0, 2.0)) call abort ()ptr4 => cosif (ptr4(0.0)/=1.0) call abort()ptr5 => foo1call ptr5()ptr6 => foo2if (ptr6()/=6.3) call abort()end program! { dg-final { cleanup-modules "m" } }
