| ! { dg-do compile } |
| ! { dg-options "-fcoarray=single" } |
| ! |
| ! Prevent ICE when exceeding the maximal number of allowed |
| ! dimensions (normal + codimensions). |
| ! |
| ! Fortran 2008 allows (co)arrays with 15 ranks |
| ! Previously gfortran only supported 7, cf. PR 37577 |
| ! |
| ! See also general coarray PR 18918 |
| ! |
| ! Test case taken from Leibniz-Rechenzentrum (LRZ)'s |
| ! fortran_tests with thanks to Reinhold Bader. |
| ! |
| |
| program ar |
| implicit none |
| integer :: ic(2)[*] |
| integer :: id(2,2)[2,*] |
| integer :: ie(2,2,2)[2,2,*] |
| ! Previously, these would give errors. |
| integer :: ig(2,2,2,2)[2,2,2,*] |
| integer :: ih(2,2,2,2,2)[2,2,2,2,*] |
| integer :: ij(2,2,2,2,2,2)[2,2,2,2,2,*] |
| integer :: ik(2,2,2,2,2,2,2)[2,2,2,2,2,2,*] |
| integer :: il[2,2,2,2,2,2,2,*] |
| integer :: im[2,2,2,2,2,2,2,2,*] |
| integer :: in[2,2,2,2,2,2,2,2,2,*] |
| integer :: io[2,2,2,2,2,2,2,2,2,2,*] |
| ! Now with max dimensions 15..... |
| integer :: ip(2,2,2,2,2,2,2,2)[2,2,2,2,2,2,2,*] ! { dg-error "has more than 15 dimensions" } |
| integer :: iq[2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,*] ! { dg-error "has more than 15 dimensions" } |
| ! Check a non-coarray |
| integer :: ir(2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2) ! { dg-error "has more than 15 dimensions" } |
| real :: x2(2,2,4)[2,*] |
| complex :: c2(4,2)[2,*] |
| double precision :: d2(1,5,9)[2,*] |
| character(len=1) :: ch2(2)[2,*] |
| character(len=2) :: ch22(-5:4)[2,*] |
| logical :: l2(17)[2,*] |
| if (this_image() == 1) then |
| write(*,*) 'OK' |
| end if |
| end program |