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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [gfortran.dg/] [char_length_8.f90] - Blame information for rev 694

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 694 jeremybenn
! { dg-do run }
2
! Test the fix for PR31197 and PR31258 in which the substrings below
3
! would cause ICEs because the character lengths were never resolved.
4
!
5
! Contributed by Joost VandeVondele 
6
!            and Thomas Koenig 
7
!
8
  CHARACTER(LEN=3), DIMENSION(10) :: Z
9
  CHARACTER(LEN=3), DIMENSION(3,3) :: W
10
  integer :: ctr = 0
11
  call test_reshape
12
  call test_eoshift
13
  call test_cshift
14
  call test_spread
15
  call test_transpose
16
  call test_pack
17
  call test_unpack
18
  call test_pr31197
19
  if (ctr .ne. 8) call abort
20
contains
21
  subroutine test_reshape
22
    Z(:)="123"
23
    if (any (RESHAPE(Z(:)(2:2),(/5,2/)) .ne. "2")) call abort
24
    ctr = ctr + 1
25
  end subroutine
26
  subroutine test_eoshift
27
    CHARACTER(LEN=1), DIMENSION(10) :: chk
28
    chk(1:8) = "5"
29
    chk(9:10) = " "
30
    Z(:)="456"
31
    if (any (EOSHIFT(Z(:)(2:2),2) .ne. chk)) call abort
32
    ctr = ctr + 1
33
  END subroutine
34
  subroutine test_cshift
35
    Z(:)="901"
36
    if (any (CSHIFT(Z(:)(2:2),2) .ne. "0")) call abort
37
    ctr = ctr + 1
38
  end subroutine
39
  subroutine test_spread
40
    Z(:)="789"
41
    if (any (SPREAD(Z(:)(2:2),dim=1,ncopies=2) .ne. "8")) call abort
42
    ctr = ctr + 1
43
  end subroutine
44
  subroutine test_transpose
45
    W(:, :)="abc"
46
    if (any (TRANSPOSE(W(:,:)(1:2)) .ne. "ab")) call abort
47
    ctr = ctr + 1
48
  end subroutine
49
  subroutine test_pack
50
    W(:, :)="def"
51
    if (any (pack(W(:,:)(2:3),mask=.true.) .ne. "ef")) call abort
52
    ctr = ctr + 1
53
  end subroutine
54
  subroutine test_unpack
55
    logical, dimension(5,2) :: mask
56
    Z(:)="hij"
57
    mask = .true.
58
    if (any (unpack(Z(:)(2:2),mask,' ') .ne. "i")) call abort
59
    ctr = ctr + 1
60
  end subroutine
61
  subroutine test_pr31197
62
    TYPE data
63
      CHARACTER(LEN=3) :: A = "xyz"
64
    END TYPE
65
    TYPE(data), DIMENSION(10), TARGET :: T
66
    if (any (TRANSPOSE(RESHAPE(T(:)%A(2:2),(/5,2/))) .ne. "y")) call abort
67
    ctr = ctr + 1
68
  end subroutine
69
END

powered by: WebSVN 2.1.0

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