83 lines · plain
1!RUN: %flang_fc1 -fopenmp -fopenmp-version=60 -emit-hlfir -mmlir -fdebug-dump-atomic-analysis %s -o /dev/null 2>&1 | FileCheck %s2 3subroutine f00(x)4 integer :: x, v5 !$omp atomic read6 v = x7end8 9!CHECK: Analysis {10!CHECK-NEXT: atom: x11!CHECK-NEXT: cond: <null>12!CHECK-NEXT: op0 {13!CHECK-NEXT: what: Read14!CHECK-NEXT: assign: v=x15!CHECK-NEXT: }16!CHECK-NEXT: op1 {17!CHECK-NEXT: what: None18!CHECK-NEXT: assign: <null>19!CHECK-NEXT: }20!CHECK-NEXT: }21 22 23subroutine f01(v)24 integer :: x, v25 !$omp atomic write26 x = v27end28 29!CHECK: Analysis {30!CHECK-NEXT: atom: x31!CHECK-NEXT: cond: <null>32!CHECK-NEXT: op0 {33!CHECK-NEXT: what: Write34!CHECK-NEXT: assign: x=v35!CHECK-NEXT: }36!CHECK-NEXT: op1 {37!CHECK-NEXT: what: None38!CHECK-NEXT: assign: <null>39!CHECK-NEXT: }40!CHECK-NEXT: }41 42 43subroutine f02(x, v)44 integer :: x, v45 !$omp atomic update46 x = x + v47end48 49!CHECK: Analysis {50!CHECK-NEXT: atom: x51!CHECK-NEXT: cond: <null>52!CHECK-NEXT: op0 {53!CHECK-NEXT: what: Update54!CHECK-NEXT: assign: x=x+v55!CHECK-NEXT: }56!CHECK-NEXT: op1 {57!CHECK-NEXT: what: None58!CHECK-NEXT: assign: <null>59!CHECK-NEXT: }60!CHECK-NEXT: }61 62 63subroutine f03(x, v)64 integer :: x, v, t65 !$omp atomic update capture66 t = x67 x = x + v68 !$omp end atomic69end70 71!CHECK: Analysis {72!CHECK-NEXT: atom: x73!CHECK-NEXT: cond: <null>74!CHECK-NEXT: op0 {75!CHECK-NEXT: what: Read76!CHECK-NEXT: assign: t=x77!CHECK-NEXT: }78!CHECK-NEXT: op1 {79!CHECK-NEXT: what: Update80!CHECK-NEXT: assign: x=x+v81!CHECK-NEXT: }82!CHECK-NEXT: }83