summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.fortran-torture/execute/dep_fails.f90
blob: c8eec5c73ac712e5a5aa1bcc0fedc8f69c2d5fbf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
! This gives incorrect results when compiled with
! the intel and pgf90 compilers
Program Strange

 Implicit None

 Type Link
 Integer, Dimension(2) :: Next
 End Type Link

 Integer, Parameter :: N = 2
 Integer, dimension (2, 4) :: results
 Integer :: i, j

 Type(Link), Dimension(:,:), Pointer :: Perm
 Integer, Dimension(2) :: Current

 Allocate (Perm(N,N))

! Print*, 'Spanned by indices'
 Do i = 1, N**2
    Perm(mod(i-1,N)+1, (i-1)/N+1)%Next = (/ Mod(i,N) + 1, Mod(i/N+1,N)+1/)
!    Write(*,100) mod(i-1,N)+1, (i-1)/N+1, Perm(mod(i-1,N)+1, (i-1)/N+1)%Next
! Expected output:
!  Spanned by indices
!  1 1---> 2 2
!  2 1---> 1 1
!  1 2---> 2 1
!  2 2---> 1 2
 End Do

! Print*, 'Spanned as a cycle'
 Current = (/1,1/) 
 Do i = 1, n**2
   results (:, i) = Perm(Current(1), Current(2))%Next
!    Write(*,100) Current, Perm(Current(1), Current(2))%Next 
! Expected output:
!  1 1---> 2 2
!  2 2---> 1 2
!  1 2---> 2 1
!  2 1---> 1 1
   Current = Perm(Current(1), Current(2))%Next
 End Do

 if (any(results .ne. reshape ((/2,2,1,2,2,1,1,1/), (/2, 4/)))) call abort

! 100 Format( 2I3, '--->', 2I3)
 DeAllocate (Perm)

End Program Strange