| ! { dg-do run } |
| |
| integer, allocatable :: a, b(:), c(:,:) |
| logical :: l |
| if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 1 |
| !$omp parallel private (a, b, c) |
| if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 2 |
| allocate (a, b(-7:-1), c(2:3, 3:5)) |
| if (.not.allocated (a)) STOP 3 |
| if (.not.allocated (b) .or. size (b) /= 7) STOP 4 |
| if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) STOP 5 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 6 |
| if (size (c, 1) /= 2 .or. size (c, 2) /= 3) STOP 7 |
| if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) STOP 8 |
| if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) STOP 9 |
| a = 4 |
| b = 3 |
| c = 2 |
| !$omp end parallel |
| if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 10 |
| !$omp parallel firstprivate (a, b, c) |
| if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 11 |
| allocate (a, b(-7:-1), c(2:3, 3:5)) |
| if (.not.allocated (a)) STOP 12 |
| if (.not.allocated (b) .or. size (b) /= 7) STOP 13 |
| if (lbound (b, 1) /= -7 .or. ubound (b, 1) /= -1) STOP 14 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 15 |
| if (size (c, 1) /= 2 .or. size (c, 2) /= 3) STOP 16 |
| if (lbound (c, 1) /= 2 .or. ubound (c, 1) /= 3) STOP 17 |
| if (lbound (c, 2) /= 3 .or. ubound (c, 2) /= 5) STOP 18 |
| a = 4 |
| b = 3 |
| c = 2 |
| !$omp end parallel |
| if (allocated (a) .or. allocated (b) .or. allocated (c)) STOP 19 |
| allocate (a, b(6:9), c(3, 8:9)) |
| a = 2 |
| b = 4 |
| c = 5 |
| if (.not.allocated (a)) STOP 20 |
| if (.not.allocated (b) .or. size (b) /= 4) STOP 21 |
| if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 22 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 23 |
| if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 24 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 25 |
| if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 26 |
| !$omp parallel firstprivate (a, b, c) |
| if (.not.allocated (a)) STOP 27 |
| if (.not.allocated (b) .or. size (b) /= 4) STOP 28 |
| if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 29 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 30 |
| if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 31 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 32 |
| if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 33 |
| if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) STOP 34 |
| deallocate (a) |
| if (allocated (a)) STOP 35 |
| allocate (a) |
| a = 8 |
| b = (/ 1, 2, 3 /) |
| c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 2, 4 /)) |
| if (.not.allocated (a)) STOP 36 |
| if (.not.allocated (b) .or. size (b) /= 3) STOP 37 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 38 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 39 |
| if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 40 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 41 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 42 |
| if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 43 |
| !$omp end parallel |
| if (.not.allocated (a)) STOP 44 |
| if (.not.allocated (b) .or. size (b) /= 4) STOP 45 |
| if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 46 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 47 |
| if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 48 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 49 |
| if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 50 |
| if (a /= 2 .or. any (b .ne. 4) .or. any (c .ne. 5)) STOP 51 |
| l = .false. |
| !$omp parallel sections lastprivate (a, b, c) firstprivate (l) |
| !$omp section |
| if (.not.allocated (a)) STOP 52 |
| if (l) then |
| if (.not.allocated (b) .or. size (b) /= 6) STOP 53 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 54 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 55 |
| if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 56 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 57 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 58 |
| if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 59 |
| else |
| if (.not.allocated (b) .or. size (b) /= 4) STOP 60 |
| if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 61 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 62 |
| if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 63 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 64 |
| if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 65 |
| end if |
| l = .true. |
| deallocate (a) |
| if (allocated (a)) STOP 66 |
| allocate (a) |
| a = 8 |
| b = (/ 1, 2, 3 /) |
| c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 2, 4 /)) |
| if (.not.allocated (a)) STOP 67 |
| if (.not.allocated (b) .or. size (b) /= 3) STOP 68 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 69 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 70 |
| if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 71 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 72 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 73 |
| if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 74 |
| !$omp section |
| if (.not.allocated (a)) STOP 75 |
| if (l) then |
| if (.not.allocated (b) .or. size (b) /= 3) STOP 76 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 3) STOP 77 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 78 |
| if (size (c, 1) /= 2 .or. size (c, 2) /= 4) STOP 79 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 2) STOP 80 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 4) STOP 81 |
| if (a /= 8 .or. b(2) /= 2 .or. c(1, 2) /= 3) STOP 82 |
| else |
| if (.not.allocated (b) .or. size (b) /= 4) STOP 83 |
| if (lbound (b, 1) /= 6 .or. ubound (b, 1) /= 9) STOP 84 |
| if (.not.allocated (c) .or. size (c) /= 6) STOP 85 |
| if (size (c, 1) /= 3 .or. size (c, 2) /= 2) STOP 86 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 3) STOP 87 |
| if (lbound (c, 2) /= 8 .or. ubound (c, 2) /= 9) STOP 88 |
| end if |
| l = .true. |
| deallocate (a) |
| if (allocated (a)) STOP 89 |
| allocate (a) |
| a = 12 |
| b = (/ 9, 8, 7, 6, 5, 4 /) |
| c = reshape ((/ 1, 2, 3, 4, 5, 6, 7, 8 /), (/ 4, 2 /)) |
| if (.not.allocated (a)) STOP 90 |
| if (.not.allocated (b) .or. size (b) /= 6) STOP 91 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 92 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 93 |
| if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 94 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 95 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 96 |
| if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 97 |
| !$omp end parallel sections |
| if (.not.allocated (a)) STOP 98 |
| if (.not.allocated (b) .or. size (b) /= 6) STOP 99 |
| if (lbound (b, 1) /= 1 .or. ubound (b, 1) /= 6) STOP 100 |
| if (.not.allocated (c) .or. size (c) /= 8) STOP 101 |
| if (size (c, 1) /= 4 .or. size (c, 2) /= 2) STOP 102 |
| if (lbound (c, 1) /= 1 .or. ubound (c, 1) /= 4) STOP 103 |
| if (lbound (c, 2) /= 1 .or. ubound (c, 2) /= 2) STOP 104 |
| if (a /= 12 .or. b(2) /= 8 .or. c(1, 2) /= 5) STOP 105 |
| end |