1! RUN: %S/test_errors.sh %s %t %flang_fc1 -fopenmp 2! REQUIRES: shell 3! OpenMP Version 4.5 4! Various checks with the nesting of MASTER construct 5 6program omp_nest_master 7 integer i, k, j 8 k = 0; 9 10 !$omp do 11 do i = 1, 10 12 k = k + 1 13 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 14 !$omp master 15 j = j -1 16 !$omp end master 17 end do 18 19 !$omp sections 20 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 21 !$omp master 22 do i = 1, 10 23 k = k + 1 24 end do 25 !$omp end master 26 !$omp end sections 27 28 !$omp single 29 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 30 !$omp master 31 do i = 1, 10 32 k = k + 1 33 end do 34 !$omp end master 35 !$omp end single 36 37 38 39 !$omp task 40 do i = 1, 10 41 k = k + 1 42 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 43 !$omp master 44 j = j -1 45 !$omp end master 46 end do 47 !$omp end task 48 49 !$omp taskloop 50 do i = 1, 10 51 k = k + 1 52 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 53 !$omp master 54 j = j -1 55 !$omp end master 56 end do 57 !$omp end taskloop 58 59 !$omp target parallel do simd 60 do i = 1, 10 61 k = k + 1 62 !ERROR: The only OpenMP constructs that can be encountered during execution of a 'SIMD' region are the `ATOMIC` construct, the `LOOP` construct, the `SIMD` construct and the `ORDERED` construct with the `SIMD` clause. 63 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 64 !$omp master 65 j = j -1 66 !$omp end master 67 end do 68 !$omp end target parallel do simd 69 70 !$omp critical 71 do i = 1, 10 72 k = k + 1 73 !$omp master 74 j = j -1 75 !$omp end master 76 end do 77 !$omp end critical 78 79 !$omp ordered 80 do i = 1, 10 81 k = k + 1 82 !$omp master 83 j = j -1 84 !$omp end master 85 end do 86 !$omp end ordered 87 88 !$omp ordered 89 do i = 1, 10 90 !$omp teams 91 !$omp distribute 92 do k =1, 10 93 print *, "hello" 94 !$omp master 95 j = j -1 96 !$omp end master 97 end do 98 !$omp end distribute 99 !$omp end teams 100 end do 101 !$omp end ordered 102 103 !$omp critical 104 do i = 1, 10 105 !$omp teams 106 !$omp distribute 107 do k =1, 10 108 print *, "hello" 109 !$omp master 110 j = j -1 111 !$omp end master 112 end do 113 !$omp end distribute 114 !$omp end teams 115 end do 116 !$omp end critical 117 118 !$omp taskloop 119 do i = 1, 10 120 !$omp teams 121 !$omp distribute 122 do k =1, 10 123 print *, "hello" 124 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 125 !$omp master 126 j = j -1 127 !$omp end master 128 end do 129 !$omp end distribute 130 !$omp end teams 131 end do 132 !$omp end taskloop 133 134 !$omp task 135 do i = 1, 10 136 !$omp teams 137 !$omp distribute 138 do k =1, 10 139 print *, "hello" 140 !ERROR: `MASTER` region may not be closely nested inside of `WORKSHARING`, `LOOP`, `TASK`, `TASKLOOP`, or `ATOMIC` region. 141 !$omp master 142 j = j -1 143 !$omp end master 144 end do 145 !$omp end distribute 146 !$omp end teams 147 end do 148 !$omp end task 149 150end program omp_nest_master 151