| ! RUN: %flang_fc1 -fdebug-unparse-no-sema -fopenmp %s | FileCheck %s | |
| program main | |
| implicit none | |
| integer :: i, j = 10 | |
| integer :: k | |
| logical :: l1, l2, l3, l4 | |
| !READ | |
| !$omp atomic read | |
| i = j | |
| !$omp atomic seq_cst read | |
| i = j | |
| !$omp atomic read seq_cst | |
| i = j | |
| !$omp atomic release read | |
| i = j | |
| !$omp atomic read release | |
| i = j | |
| !$omp atomic acq_rel read | |
| i = j | |
| !$omp atomic read acq_rel | |
| i = j | |
| !$omp atomic acquire read | |
| i = j | |
| !$omp atomic read acquire | |
| i = j | |
| !$omp atomic relaxed read | |
| i = j | |
| !$omp atomic read relaxed | |
| i = j | |
| ! WRITE | |
| !$omp atomic write | |
| i = j | |
| !$omp atomic seq_cst write | |
| i = j | |
| !$omp atomic write seq_cst | |
| i = j | |
| !$omp atomic release write | |
| i = j | |
| !$omp atomic write release | |
| i = j | |
| !$omp atomic acq_rel write | |
| i = j | |
| !$omp atomic write acq_rel | |
| i = j | |
| !$omp atomic acquire write | |
| i = j | |
| !$omp atomic write acquire | |
| i = j | |
| !$omp atomic relaxed write | |
| i = j | |
| !$omp atomic write relaxed | |
| i = j | |
| !UPDATE | |
| !$omp atomic update | |
| i = j | |
| !$omp atomic seq_cst update | |
| i = j | |
| !$omp atomic update seq_cst | |
| i = j | |
| !$omp atomic release update | |
| i = j | |
| !$omp atomic update release | |
| i = j | |
| !$omp atomic acq_rel update | |
| i = j | |
| !$omp atomic update acq_rel | |
| i = j | |
| !$omp atomic acquire update | |
| i = j | |
| !$omp atomic update acquire | |
| i = j | |
| !$omp atomic relaxed update | |
| i = j | |
| !$omp atomic update relaxed | |
| i = j | |
| !CAPTURE | |
| !$omp atomic capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic seq_cst capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic capture seq_cst | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic release capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic capture release | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic acq_rel capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic capture acq_rel | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic acquire capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic capture acquire | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic relaxed capture | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !$omp atomic capture relaxed | |
| i = j | |
| i = j | |
| !$omp end atomic | |
| !COMPARE | |
| !$omp atomic compare | |
| if (k == i) k = j | |
| !$omp atomic seq_cst compare | |
| if (k == j) then | |
| k = i | |
| end if | |
| !$omp atomic compare seq_cst | |
| if (k .eq. j) then | |
| k = i | |
| end if | |
| !$omp atomic release compare | |
| if (i .eq. j) k = i | |
| !$omp atomic compare release | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp atomic acq_rel compare | |
| if (k .eq. j) then | |
| j = i | |
| end if | |
| !$omp atomic compare acq_rel | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp atomic acquire compare | |
| if (i .eq. j + 1) then | |
| i = j | |
| end if | |
| !$omp atomic compare acquire | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp atomic relaxed compare | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp atomic compare relaxed | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic compare fail(relaxed) | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic fail(relaxed) compare | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic fail(relaxed) compare acquire | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic compare weak | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic weak compare | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !$omp atomic compare seq_cst weak | |
| if (i .eq. k) then | |
| i = j | |
| end if | |
| !COMPARE CAPTURE | |
| !$omp atomic compare capture | |
| k = i | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp end atomic | |
| !$omp atomic capture compare | |
| k = i | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| !$omp end atomic | |
| !$omp atomic capture compare weak | |
| k = i | |
| if (i < j) then | |
| i = k | |
| end if | |
| !$omp end atomic | |
| !$omp atomic compare capture | |
| if (i .eq. j) then | |
| i = k | |
| end if | |
| k = i | |
| !$omp end atomic | |
| !$omp atomic compare capture | |
| if (i .eq. j) then | |
| i = k | |
| else | |
| k = i | |
| end if | |
| !$omp end atomic | |
| !COMPARE CAPTURE LOGICAL | |
| !$omp atomic compare capture | |
| if (l1 .eqv. l2) l1 = l3 | |
| l4 = l1 | |
| !$omp end atomic | |
| !ATOMIC | |
| !$omp atomic | |
| i = j | |
| !$omp atomic seq_cst | |
| i = j | |
| !$omp atomic release | |
| i = j | |
| !$omp atomic acq_rel | |
| i = j | |
| !$omp atomic acquire | |
| i = j | |
| !$omp atomic relaxed | |
| i = j | |
| end program main | |
| !CHECK-LABEL: PROGRAM main | |
| !READ | |
| !CHECK: !$OMP ATOMIC READ | |
| !CHECK: !$OMP ATOMIC SEQ_CST READ | |
| !CHECK: !$OMP ATOMIC READ SEQ_CST | |
| !CHECK: !$OMP ATOMIC RELEASE READ | |
| !CHECK: !$OMP ATOMIC READ RELEASE | |
| !CHECK: !$OMP ATOMIC ACQ_REL READ | |
| !CHECK: !$OMP ATOMIC READ ACQ_REL | |
| !CHECK: !$OMP ATOMIC ACQUIRE READ | |
| !CHECK: !$OMP ATOMIC READ ACQUIRE | |
| !CHECK: !$OMP ATOMIC RELAXED READ | |
| !CHECK: !$OMP ATOMIC READ RELAXED | |
| !WRITE | |
| !CHECK: !$OMP ATOMIC WRITE | |
| !CHECK: !$OMP ATOMIC SEQ_CST WRITE | |
| !CHECK: !$OMP ATOMIC WRITE SEQ_CST | |
| !CHECK: !$OMP ATOMIC RELEASE WRITE | |
| !CHECK: !$OMP ATOMIC WRITE RELEASE | |
| !CHECK: !$OMP ATOMIC ACQ_REL WRITE | |
| !CHECK: !$OMP ATOMIC WRITE ACQ_REL | |
| !CHECK: !$OMP ATOMIC ACQUIRE WRITE | |
| !CHECK: !$OMP ATOMIC WRITE ACQUIRE | |
| !CHECK: !$OMP ATOMIC RELAXED WRITE | |
| !CHECK: !$OMP ATOMIC WRITE RELAXED | |
| !UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE | |
| !CHECK: !$OMP ATOMIC SEQ_CST UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE SEQ_CST | |
| !CHECK: !$OMP ATOMIC RELEASE UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE RELEASE | |
| !CHECK: !$OMP ATOMIC ACQ_REL UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE ACQ_REL | |
| !CHECK: !$OMP ATOMIC ACQUIRE UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE ACQUIRE | |
| !CHECK: !$OMP ATOMIC RELAXED UPDATE | |
| !CHECK: !$OMP ATOMIC UPDATE RELAXED | |
| !CAPTURE | |
| !CHECK: !$OMP ATOMIC CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC SEQ_CST CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE SEQ_CST | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC RELEASE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE RELEASE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC ACQ_REL CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE ACQ_REL | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC ACQUIRE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE ACQUIRE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC RELAXED CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE RELAXED | |
| !CHECK: !$OMP END ATOMIC | |
| !COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE | |
| !CHECK: !$OMP ATOMIC SEQ_CST COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE SEQ_CST | |
| !CHECK: !$OMP ATOMIC RELEASE COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE RELEASE | |
| !CHECK: !$OMP ATOMIC ACQ_REL COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE ACQ_REL | |
| !CHECK: !$OMP ATOMIC ACQUIRE COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE ACQUIRE | |
| !CHECK: !$OMP ATOMIC RELAXED COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE RELAXED | |
| !CHECK: !$OMP ATOMIC COMPARE FAIL(RELAXED) | |
| !CHECK: !$OMP ATOMIC FAIL(RELAXED) COMPARE | |
| !CHECK: !$OMP ATOMIC FAIL(RELAXED) COMPARE ACQUIRE | |
| !CHECK: !$OMP ATOMIC COMPARE WEAK | |
| !CHECK: !$OMP ATOMIC WEAK COMPARE | |
| !CHECK: !$OMP ATOMIC COMPARE SEQ_CST WEAK | |
| !COMPARE CAPTURE | |
| !CHECK: !$OMP ATOMIC COMPARE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE COMPARE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC CAPTURE COMPARE WEAK | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC COMPARE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !CHECK: !$OMP ATOMIC COMPARE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !COMPARE CAPTURE LOGICAL | |
| !CHECK: !$OMP ATOMIC COMPARE CAPTURE | |
| !CHECK: !$OMP END ATOMIC | |
| !ATOMIC | |
| !CHECK: !$OMP ATOMIC | |
| !CHECK: !$OMP ATOMIC SEQ_CST | |
| !CHECK: !$OMP ATOMIC RELEASE | |
| !CHECK: !$OMP ATOMIC ACQ_REL | |
| !CHECK: !$OMP ATOMIC ACQUIRE | |
| !CHECK: !$OMP ATOMIC RELAXED | |