!RUN: %flang_fc1 -fopenmp -fopenmp-version=60 -emit-hlfir -mmlir -fdebug-dump-atomic-analysis %s -o /dev/null 2>&1 | FileCheck %s subroutine f00(x) integer :: x, v !$omp atomic read v = x end !CHECK: Analysis { !CHECK-NEXT: atom: x !CHECK-NEXT: cond: !CHECK-NEXT: op0 { !CHECK-NEXT: what: Read !CHECK-NEXT: assign: v=x !CHECK-NEXT: } !CHECK-NEXT: op1 { !CHECK-NEXT: what: None !CHECK-NEXT: assign: !CHECK-NEXT: } !CHECK-NEXT: } subroutine f01(v) integer :: x, v !$omp atomic write x = v end !CHECK: Analysis { !CHECK-NEXT: atom: x !CHECK-NEXT: cond: !CHECK-NEXT: op0 { !CHECK-NEXT: what: Write !CHECK-NEXT: assign: x=v !CHECK-NEXT: } !CHECK-NEXT: op1 { !CHECK-NEXT: what: None !CHECK-NEXT: assign: !CHECK-NEXT: } !CHECK-NEXT: } subroutine f02(x, v) integer :: x, v !$omp atomic update x = x + v end !CHECK: Analysis { !CHECK-NEXT: atom: x !CHECK-NEXT: cond: !CHECK-NEXT: op0 { !CHECK-NEXT: what: Update !CHECK-NEXT: assign: x=x+v !CHECK-NEXT: } !CHECK-NEXT: op1 { !CHECK-NEXT: what: None !CHECK-NEXT: assign: !CHECK-NEXT: } !CHECK-NEXT: } subroutine f03(x, v) integer :: x, v, t !$omp atomic update capture t = x x = x + v !$omp end atomic end !CHECK: Analysis { !CHECK-NEXT: atom: x !CHECK-NEXT: cond: !CHECK-NEXT: op0 { !CHECK-NEXT: what: Read !CHECK-NEXT: assign: t=x !CHECK-NEXT: } !CHECK-NEXT: op1 { !CHECK-NEXT: what: Update !CHECK-NEXT: assign: x=x+v !CHECK-NEXT: } !CHECK-NEXT: }