OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [gcc-4.5.1/] [gcc-4.5.1-or32-1.0rc1/] [libgomp/] [testsuite/] [libgomp.fortran/] [allocatable1.f90] - Diff between revs 273 and 338

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

Rev 273 Rev 338
! { dg-do run }
! { dg-do run }
!$ use omp_lib
!$ use omp_lib
  integer, allocatable :: a(:, :)
  integer, allocatable :: a(:, :)
  integer :: b(6, 3)
  integer :: b(6, 3)
  integer :: i, j
  integer :: i, j
  logical :: k, l
  logical :: k, l
  b(:, :) = 16
  b(:, :) = 16
  l = .false.
  l = .false.
  if (allocated (a)) call abort
  if (allocated (a)) call abort
!$omp parallel private (a, b) reduction (.or.:l)
!$omp parallel private (a, b) reduction (.or.:l)
  l = l.or.allocated (a)
  l = l.or.allocated (a)
  allocate (a(3, 6))
  allocate (a(3, 6))
  l = l.or..not.allocated (a)
  l = l.or..not.allocated (a)
  l = l.or.size(a).ne.18.or.size(a,1).ne.3.or.size(a,2).ne.6
  l = l.or.size(a).ne.18.or.size(a,1).ne.3.or.size(a,2).ne.6
  a(3, 2) = 1
  a(3, 2) = 1
  b(3, 2) = 1
  b(3, 2) = 1
  deallocate (a)
  deallocate (a)
  l = l.or.allocated (a)
  l = l.or.allocated (a)
!$omp end parallel
!$omp end parallel
  if (allocated (a).or.l) call abort
  if (allocated (a).or.l) call abort
  allocate (a(6, 3))
  allocate (a(6, 3))
  a(:, :) = 3
  a(:, :) = 3
  if (.not.allocated (a)) call abort
  if (.not.allocated (a)) call abort
  l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
  l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
  if (l) call abort
  if (l) call abort
!$omp parallel private (a, b) reduction (.or.:l)
!$omp parallel private (a, b) reduction (.or.:l)
  l = l.or..not.allocated (a)
  l = l.or..not.allocated (a)
  a(3, 2) = 1
  a(3, 2) = 1
  b(3, 2) = 1
  b(3, 2) = 1
!$omp end parallel
!$omp end parallel
  if (l.or..not.allocated (a)) call abort
  if (l.or..not.allocated (a)) call abort
!$omp parallel firstprivate (a, b) reduction (.or.:l)
!$omp parallel firstprivate (a, b) reduction (.or.:l)
  l = l.or..not.allocated (a)
  l = l.or..not.allocated (a)
  l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
  l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
  do i = 1, 6
  do i = 1, 6
    l = l.or.(a(i, 1).ne.3).or.(a(i, 2).ne.3)
    l = l.or.(a(i, 1).ne.3).or.(a(i, 2).ne.3)
    l = l.or.(a(i, 3).ne.3).or.(b(i, 1).ne.16)
    l = l.or.(a(i, 3).ne.3).or.(b(i, 1).ne.16)
    l = l.or.(b(i, 2).ne.16).or.(b(i, 3).ne.16)
    l = l.or.(b(i, 2).ne.16).or.(b(i, 3).ne.16)
  end do
  end do
  a(:, :) = omp_get_thread_num ()
  a(:, :) = omp_get_thread_num ()
  b(:, :) = omp_get_thread_num ()
  b(:, :) = omp_get_thread_num ()
!$omp end parallel
!$omp end parallel
  if (any (a.ne.3).or.any (b.ne.16).or.l) call abort
  if (any (a.ne.3).or.any (b.ne.16).or.l) call abort
  k = .true.
  k = .true.
!$omp parallel do firstprivate (a, b, k) lastprivate (a, b) &
!$omp parallel do firstprivate (a, b, k) lastprivate (a, b) &
!$omp & reduction (.or.:l)
!$omp & reduction (.or.:l)
  do i = 1, 36
  do i = 1, 36
    l = l.or..not.allocated (a)
    l = l.or..not.allocated (a)
    l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
    l = l.or.size(a).ne.18.or.size(a,1).ne.6.or.size(a,2).ne.3
    if (k) then
    if (k) then
      do j = 1, 6
      do j = 1, 6
        l = l.or.(a(j, 1).ne.3).or.(a(j, 2).ne.3)
        l = l.or.(a(j, 1).ne.3).or.(a(j, 2).ne.3)
        l = l.or.(a(j, 3).ne.3).or.(b(j, 1).ne.16)
        l = l.or.(a(j, 3).ne.3).or.(b(j, 1).ne.16)
        l = l.or.(b(j, 2).ne.16).or.(b(j, 3).ne.16)
        l = l.or.(b(j, 2).ne.16).or.(b(j, 3).ne.16)
      end do
      end do
      k = .false.
      k = .false.
    end if
    end if
    a(:, :) = i + 2
    a(:, :) = i + 2
    b(:, :) = i
    b(:, :) = i
  end do
  end do
  if (any (a.ne.38).or.any (b.ne.36).or.l) call abort
  if (any (a.ne.38).or.any (b.ne.36).or.l) call abort
  deallocate (a)
  deallocate (a)
  if (allocated (a)) call abort
  if (allocated (a)) call abort
  allocate (a (0:1, 0:3))
  allocate (a (0:1, 0:3))
  a(:, :) = 0
  a(:, :) = 0
!$omp parallel do reduction (+:a) reduction (.or.:l) &
!$omp parallel do reduction (+:a) reduction (.or.:l) &
!$omp & num_threads(3) schedule(static)
!$omp & num_threads(3) schedule(static)
  do i = 0, 7
  do i = 0, 7
    l = l.or..not.allocated (a)
    l = l.or..not.allocated (a)
    l = l.or.size(a).ne.8.or.size(a,1).ne.2.or.size(a,2).ne.4
    l = l.or.size(a).ne.8.or.size(a,1).ne.2.or.size(a,2).ne.4
    a(modulo (i, 2), i / 2) = a(modulo (i, 2), i / 2) + i
    a(modulo (i, 2), i / 2) = a(modulo (i, 2), i / 2) + i
    a(i / 4, modulo (i, 4)) = a(i / 4, modulo (i, 4)) + i
    a(i / 4, modulo (i, 4)) = a(i / 4, modulo (i, 4)) + i
  end do
  end do
  if (l) call abort
  if (l) call abort
  do i = 0, 1
  do i = 0, 1
    do j = 0, 3
    do j = 0, 3
      if (a(i, j) .ne. (5*i + 3*j)) call abort
      if (a(i, j) .ne. (5*i + 3*j)) call abort
    end do
    end do
  end do
  end do
end
end
 
 

powered by: WebSVN 2.1.0

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