1! RUN: %flang_fc1 -fdebug-unparse-no-sema -fopenmp %s | FileCheck %s 2 3program main 4 implicit none 5 integer :: i, j = 10 6!READ 7!$omp atomic read 8 i = j 9!$omp atomic seq_cst read 10 i = j 11!$omp atomic read seq_cst 12 i = j 13!$omp atomic release read 14 i = j 15!$omp atomic read release 16 i = j 17!$omp atomic acq_rel read 18 i = j 19!$omp atomic read acq_rel 20 i = j 21!$omp atomic acquire read 22 i = j 23!$omp atomic read acquire 24 i = j 25!$omp atomic relaxed read 26 i = j 27!$omp atomic read relaxed 28 i = j 29 30! WRITE 31!$omp atomic write 32 i = j 33!$omp atomic seq_cst write 34 i = j 35!$omp atomic write seq_cst 36 i = j 37!$omp atomic release write 38 i = j 39!$omp atomic write release 40 i = j 41!$omp atomic acq_rel write 42 i = j 43!$omp atomic write acq_rel 44 i = j 45!$omp atomic acquire write 46 i = j 47!$omp atomic write acquire 48 i = j 49!$omp atomic relaxed write 50 i = j 51!$omp atomic write relaxed 52 i = j 53 54!UPDATE 55!$omp atomic update 56 i = j 57!$omp atomic seq_cst update 58 i = j 59!$omp atomic update seq_cst 60 i = j 61!$omp atomic release update 62 i = j 63!$omp atomic update release 64 i = j 65!$omp atomic acq_rel update 66 i = j 67!$omp atomic update acq_rel 68 i = j 69!$omp atomic acquire update 70 i = j 71!$omp atomic update acquire 72 i = j 73!$omp atomic relaxed update 74 i = j 75!$omp atomic update relaxed 76 i = j 77 78!CAPTURE 79!$omp atomic capture 80 i = j 81 i = j 82!$omp end atomic 83!$omp atomic seq_cst capture 84 i = j 85 i = j 86!$omp end atomic 87!$omp atomic capture seq_cst 88 i = j 89 i = j 90!$omp end atomic 91!$omp atomic release capture 92 i = j 93 i = j 94!$omp end atomic 95!$omp atomic capture release 96 i = j 97 i = j 98!$omp end atomic 99!$omp atomic acq_rel capture 100 i = j 101 i = j 102!$omp end atomic 103!$omp atomic capture acq_rel 104 i = j 105 i = j 106!$omp end atomic 107!$omp atomic acquire capture 108 i = j 109 i = j 110!$omp end atomic 111!$omp atomic capture acquire 112 i = j 113 i = j 114!$omp end atomic 115!$omp atomic relaxed capture 116 i = j 117 i = j 118!$omp end atomic 119!$omp atomic capture relaxed 120 i = j 121 i = j 122!$omp end atomic 123 124!ATOMIC 125!$omp atomic 126 i = j 127!$omp atomic seq_cst 128 i = j 129!$omp atomic release 130 i = j 131!$omp atomic acq_rel 132 i = j 133!$omp atomic acquire 134 i = j 135!$omp atomic relaxed 136 i = j 137 138end program main 139!CHECK-LABEL: PROGRAM main 140 141!READ 142 143!CHECK: !$OMP ATOMIC READ 144!CHECK: !$OMP ATOMIC SEQ_CST READ 145!CHECK: !$OMP ATOMIC READ SEQ_CST 146!CHECK: !$OMP ATOMIC RELEASE READ 147!CHECK: !$OMP ATOMIC READ RELEASE 148!CHECK: !$OMP ATOMIC ACQ_REL READ 149!CHECK: !$OMP ATOMIC READ ACQ_REL 150!CHECK: !$OMP ATOMIC ACQUIRE READ 151!CHECK: !$OMP ATOMIC READ ACQUIRE 152!CHECK: !$OMP ATOMIC RELAXED READ 153!CHECK: !$OMP ATOMIC READ RELAXED 154 155!WRITE 156 157!CHECK: !$OMP ATOMIC WRITE 158!CHECK: !$OMP ATOMIC SEQ_CST WRITE 159!CHECK: !$OMP ATOMIC WRITE SEQ_CST 160!CHECK: !$OMP ATOMIC RELEASE WRITE 161!CHECK: !$OMP ATOMIC WRITE RELEASE 162!CHECK: !$OMP ATOMIC ACQ_REL WRITE 163!CHECK: !$OMP ATOMIC WRITE ACQ_REL 164!CHECK: !$OMP ATOMIC ACQUIRE WRITE 165!CHECK: !$OMP ATOMIC WRITE ACQUIRE 166!CHECK: !$OMP ATOMIC RELAXED WRITE 167!CHECK: !$OMP ATOMIC WRITE RELAXED 168 169!UPDATE 170 171!CHECK: !$OMP ATOMIC UPDATE 172!CHECK: !$OMP ATOMIC SEQ_CST UPDATE 173!CHECK: !$OMP ATOMIC UPDATE SEQ_CST 174!CHECK: !$OMP ATOMIC RELEASE UPDATE 175!CHECK: !$OMP ATOMIC UPDATE RELEASE 176!CHECK: !$OMP ATOMIC ACQ_REL UPDATE 177!CHECK: !$OMP ATOMIC UPDATE ACQ_REL 178!CHECK: !$OMP ATOMIC ACQUIRE UPDATE 179!CHECK: !$OMP ATOMIC UPDATE ACQUIRE 180!CHECK: !$OMP ATOMIC RELAXED UPDATE 181!CHECK: !$OMP ATOMIC UPDATE RELAXED 182 183!CAPTURE 184 185!CHECK: !$OMP ATOMIC CAPTURE 186!CHECK: !$OMP END ATOMIC 187!CHECK: !$OMP ATOMIC SEQ_CST CAPTURE 188!CHECK: !$OMP END ATOMIC 189!CHECK: !$OMP ATOMIC CAPTURE SEQ_CST 190!CHECK: !$OMP END ATOMIC 191!CHECK: !$OMP ATOMIC RELEASE CAPTURE 192!CHECK: !$OMP END ATOMIC 193!CHECK: !$OMP ATOMIC CAPTURE RELEASE 194!CHECK: !$OMP END ATOMIC 195!CHECK: !$OMP ATOMIC ACQ_REL CAPTURE 196!CHECK: !$OMP END ATOMIC 197!CHECK: !$OMP ATOMIC CAPTURE ACQ_REL 198!CHECK: !$OMP END ATOMIC 199!CHECK: !$OMP ATOMIC ACQUIRE CAPTURE 200!CHECK: !$OMP END ATOMIC 201!CHECK: !$OMP ATOMIC CAPTURE ACQUIRE 202!CHECK: !$OMP END ATOMIC 203!CHECK: !$OMP ATOMIC RELAXED CAPTURE 204!CHECK: !$OMP END ATOMIC 205!CHECK: !$OMP ATOMIC CAPTURE RELAXED 206!CHECK: !$OMP END ATOMIC 207 208!ATOMIC 209!CHECK: !$OMP ATOMIC 210!CHECK: !$OMP ATOMIC SEQ_CST 211!CHECK: !$OMP ATOMIC RELEASE 212!CHECK: !$OMP ATOMIC ACQ_REL 213!CHECK: !$OMP ATOMIC ACQUIRE 214!CHECK: !$OMP ATOMIC RELAXED 215