OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [associated_2.f90] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
! { dg-do run }
! { dg-do run }
! Tests the implementation of 13.14.13 of the f95 standard
! Tests the implementation of 13.14.13 of the f95 standard
! in respect of zero character and zero array length.
! in respect of zero character and zero array length.
!
!
! Contributed by Paul Thomas  
! Contributed by Paul Thomas  
!
!
  call test1 ()
  call test1 ()
  call test2 ()
  call test2 ()
  call test3 (0)
  call test3 (0)
  call test3 (1)
  call test3 (1)
contains
contains
  subroutine test1 ()
  subroutine test1 ()
    integer, pointer, dimension(:, :, :)  :: a, b
    integer, pointer, dimension(:, :, :)  :: a, b
    allocate (a(2,0,2))
    allocate (a(2,0,2))
    b => a
    b => a
! Even though b is zero length, associated returns true because
! Even though b is zero length, associated returns true because
! the target argument is not present (case (i))
! the target argument is not present (case (i))
    if (.not. associated (b)) call abort ()
    if (.not. associated (b)) call abort ()
    deallocate (a)
    deallocate (a)
    nullify(a)
    nullify(a)
    if(associated(a,a)) call abort()
    if(associated(a,a)) call abort()
    allocate (a(2,1,2))
    allocate (a(2,1,2))
    b => a
    b => a
    if (.not.associated (b)) call abort ()
    if (.not.associated (b)) call abort ()
    deallocate (a)
    deallocate (a)
  end subroutine test1
  end subroutine test1
  subroutine test2 ()
  subroutine test2 ()
    integer, pointer, dimension(:, :, :)  :: a, b
    integer, pointer, dimension(:, :, :)  :: a, b
    allocate (a(2,0,2))
    allocate (a(2,0,2))
    b => a
    b => a
! Associated returns false because target is present (case(iii)).
! Associated returns false because target is present (case(iii)).
    if (associated (b, a)) call abort ()
    if (associated (b, a)) call abort ()
    deallocate (a)
    deallocate (a)
    allocate (a(2,1,2))
    allocate (a(2,1,2))
    b => a
    b => a
    if (.not.associated (b, a)) call abort ()
    if (.not.associated (b, a)) call abort ()
    deallocate (a)
    deallocate (a)
  end subroutine test2
  end subroutine test2
  subroutine test3 (n)
  subroutine test3 (n)
    integer :: n
    integer :: n
    character(len=n), pointer, dimension(:)  :: a, b
    character(len=n), pointer, dimension(:)  :: a, b
    allocate (a(2))
    allocate (a(2))
    b => a
    b => a
! Again, with zero character length associated returns false
! Again, with zero character length associated returns false
! if target is present.
! if target is present.
    if (associated (b, a) .and. (n .eq. 0)) call abort ()
    if (associated (b, a) .and. (n .eq. 0)) call abort ()
!
!
    if ((.not.associated (b, a))  .and. (n .ne. 0)) call abort ()
    if ((.not.associated (b, a))  .and. (n .ne. 0)) call abort ()
    deallocate (a)
    deallocate (a)
  end subroutine test3
  end subroutine test3
end
end
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.