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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gfortran.dg/] [char_pack_1.f90] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
! Test (non-scalar) pack for character arrays.
! Test (non-scalar) pack for character arrays.
! { dg-do run }
! { dg-do run }
program main
program main
  implicit none
  implicit none
  integer, parameter :: n1 = 3, n2 = 4, nv = 10, slen = 9
  integer, parameter :: n1 = 3, n2 = 4, nv = 10, slen = 9
  character (len = slen), dimension (n1, n2) :: a
  character (len = slen), dimension (n1, n2) :: a
  character (len = slen), dimension (nv) :: vector
  character (len = slen), dimension (nv) :: vector
  logical, dimension (n1, n2) :: mask
  logical, dimension (n1, n2) :: mask
  integer :: i1, i2, i
  integer :: i1, i2, i
  do i2 = 1, n2
  do i2 = 1, n2
    do i1 = 1, n1
    do i1 = 1, n1
      a (i1, i2) = 'abc'(i1:i1) // 'defg'(i2:i2) // 'cantrip'
      a (i1, i2) = 'abc'(i1:i1) // 'defg'(i2:i2) // 'cantrip'
    end do
    end do
  end do
  end do
  mask (1, :) = (/ .true., .false., .true., .true. /)
  mask (1, :) = (/ .true., .false., .true., .true. /)
  mask (2, :) = (/ .true., .false., .false., .false. /)
  mask (2, :) = (/ .true., .false., .false., .false. /)
  mask (3, :) = (/ .false., .true., .true., .true. /)
  mask (3, :) = (/ .false., .true., .true., .true. /)
  do i = 1, nv
  do i = 1, nv
    vector (i) = 'crespo' // '0123456789'(i:i)
    vector (i) = 'crespo' // '0123456789'(i:i)
  end do
  end do
  call test1 (pack (a, mask))
  call test1 (pack (a, mask))
  call test2 (pack (a, mask, vector))
  call test2 (pack (a, mask, vector))
contains
contains
  subroutine test1 (b)
  subroutine test1 (b)
    character (len = slen), dimension (:) :: b
    character (len = slen), dimension (:) :: b
    i = 0
    i = 0
    do i2 = 1, n2
    do i2 = 1, n2
      do i1 = 1, n1
      do i1 = 1, n1
        if (mask (i1, i2)) then
        if (mask (i1, i2)) then
          i = i + 1
          i = i + 1
          if (b (i) .ne. a (i1, i2)) call abort
          if (b (i) .ne. a (i1, i2)) call abort
        end if
        end if
      end do
      end do
    end do
    end do
    if (size (b, 1) .ne. i) call abort
    if (size (b, 1) .ne. i) call abort
  end subroutine test1
  end subroutine test1
  subroutine test2 (b)
  subroutine test2 (b)
    character (len = slen), dimension (:) :: b
    character (len = slen), dimension (:) :: b
    if (size (b, 1) .ne. nv) call abort
    if (size (b, 1) .ne. nv) call abort
    i = 0
    i = 0
    do i2 = 1, n2
    do i2 = 1, n2
      do i1 = 1, n1
      do i1 = 1, n1
        if (mask (i1, i2)) then
        if (mask (i1, i2)) then
          i = i + 1
          i = i + 1
          if (b (i) .ne. a (i1, i2)) call abort
          if (b (i) .ne. a (i1, i2)) call abort
        end if
        end if
      end do
      end do
    end do
    end do
    do i = i + 1, nv
    do i = i + 1, nv
      if (b (i) .ne. vector (i)) call abort
      if (b (i) .ne. vector (i)) call abort
    end do
    end do
  end subroutine test2
  end subroutine test2
end program main
end program main
 
 

powered by: WebSVN 2.1.0

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