| 1 |
302 |
jeremybenn |
! { dg-do run }
|
| 2 |
|
|
! PR 17792
|
| 3 |
|
|
! PR 21375
|
| 4 |
|
|
! Test that the STAT argument to DEALLOCATE works with POINTERS and
|
| 5 |
|
|
! ALLOCATABLE arrays.
|
| 6 |
|
|
program deallocate_stat
|
| 7 |
|
|
|
| 8 |
|
|
implicit none
|
| 9 |
|
|
|
| 10 |
|
|
integer i
|
| 11 |
|
|
real, pointer :: a1(:), a2(:,:), a3(:,:,:), a4(:,:,:,:), &
|
| 12 |
|
|
& a5(:,:,:,:,:), a6(:,:,:,:,:,:), a7(:,:,:,:,:,:,:)
|
| 13 |
|
|
|
| 14 |
|
|
real, allocatable :: b1(:), b2(:,:), b3(:,:,:), b4(:,:,:,:), &
|
| 15 |
|
|
& b5(:,:,:,:,:), b6(:,:,:,:,:,:), b7(:,:,:,:,:,:,:)
|
| 16 |
|
|
|
| 17 |
|
|
allocate(a1(2), a2(2,2), a3(2,2,2), a4(2,2,2,2), a5(2,2,2,2,2))
|
| 18 |
|
|
allocate(a6(2,2,2,2,2,2), a7(2,2,2,2,2,2,2))
|
| 19 |
|
|
|
| 20 |
|
|
a1 = 1. ; a2 = 2. ; a3 = 3. ; a4 = 4. ; a5 = 5. ; a6 = 6. ; a7 = 7.
|
| 21 |
|
|
|
| 22 |
|
|
i = 13
|
| 23 |
|
|
deallocate(a1, stat=i) ; if (i /= 0) call abort
|
| 24 |
|
|
deallocate(a2, stat=i) ; if (i /= 0) call abort
|
| 25 |
|
|
deallocate(a3, stat=i) ; if (i /= 0) call abort
|
| 26 |
|
|
deallocate(a4, stat=i) ; if (i /= 0) call abort
|
| 27 |
|
|
deallocate(a5, stat=i) ; if (i /= 0) call abort
|
| 28 |
|
|
deallocate(a6, stat=i) ; if (i /= 0) call abort
|
| 29 |
|
|
deallocate(a7, stat=i) ; if (i /= 0) call abort
|
| 30 |
|
|
|
| 31 |
|
|
i = 14
|
| 32 |
|
|
deallocate(a1, stat=i) ; if (i /= 1) call abort
|
| 33 |
|
|
deallocate(a2, stat=i) ; if (i /= 1) call abort
|
| 34 |
|
|
deallocate(a3, stat=i) ; if (i /= 1) call abort
|
| 35 |
|
|
deallocate(a4, stat=i) ; if (i /= 1) call abort
|
| 36 |
|
|
deallocate(a5, stat=i) ; if (i /= 1) call abort
|
| 37 |
|
|
deallocate(a6, stat=i) ; if (i /= 1) call abort
|
| 38 |
|
|
deallocate(a7, stat=i) ; if (i /= 1) call abort
|
| 39 |
|
|
|
| 40 |
|
|
allocate(b1(2), b2(2,2), b3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
|
| 41 |
|
|
allocate(b6(2,2,2,2,2,2), b7(2,2,2,2,2,2,2))
|
| 42 |
|
|
|
| 43 |
|
|
b1 = 1. ; b2 = 2. ; b3 = 3. ; b4 = 4. ; b5 = 5. ; b6 = 6. ; b7 = 7.
|
| 44 |
|
|
|
| 45 |
|
|
i = 13
|
| 46 |
|
|
deallocate(b1, stat=i) ; if (i /= 0) call abort
|
| 47 |
|
|
deallocate(b2, stat=i) ; if (i /= 0) call abort
|
| 48 |
|
|
deallocate(b3, stat=i) ; if (i /= 0) call abort
|
| 49 |
|
|
deallocate(b4, stat=i) ; if (i /= 0) call abort
|
| 50 |
|
|
deallocate(b5, stat=i) ; if (i /= 0) call abort
|
| 51 |
|
|
deallocate(b6, stat=i) ; if (i /= 0) call abort
|
| 52 |
|
|
deallocate(b7, stat=i) ; if (i /= 0) call abort
|
| 53 |
|
|
|
| 54 |
|
|
i = 14
|
| 55 |
|
|
deallocate(b1, stat=i) ; if (i /= 1) call abort
|
| 56 |
|
|
deallocate(b2, stat=i) ; if (i /= 1) call abort
|
| 57 |
|
|
deallocate(b3, stat=i) ; if (i /= 1) call abort
|
| 58 |
|
|
deallocate(b4, stat=i) ; if (i /= 1) call abort
|
| 59 |
|
|
deallocate(b5, stat=i) ; if (i /= 1) call abort
|
| 60 |
|
|
deallocate(b6, stat=i) ; if (i /= 1) call abort
|
| 61 |
|
|
deallocate(b7, stat=i) ; if (i /= 1) call abort
|
| 62 |
|
|
|
| 63 |
|
|
|
| 64 |
|
|
allocate(a1(2), a2(2,2), a3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
|
| 65 |
|
|
allocate(b6(2,2,2,2,2,2))
|
| 66 |
|
|
|
| 67 |
|
|
a1 = 1. ; a2 = 2. ; a3 = 3. ; b4 = 4. ; b5 = 5. ; b6 = 6.
|
| 68 |
|
|
|
| 69 |
|
|
i = 13
|
| 70 |
|
|
deallocate(a1, stat=i) ; if (i /= 0) call abort
|
| 71 |
|
|
deallocate(a2, a1, stat=i) ; if (i /= 1) call abort
|
| 72 |
|
|
deallocate(a1, a3, a2, stat=i) ; if (i /= 2) call abort
|
| 73 |
|
|
deallocate(b4, stat=i) ; if (i /= 0) call abort
|
| 74 |
|
|
deallocate(b4, b5, stat=i) ; if (i /= 1) call abort
|
| 75 |
|
|
deallocate(b4, b5, b6, stat=i) ; if (i /= 2) call abort
|
| 76 |
|
|
|
| 77 |
|
|
end program deallocate_stat
|