blob: a0970767ff571d068232f01f9096ae0a1e950c76 [file] [log] [blame]
! PR middle-end/45423 - for the original C/C++ testcase
! { dg-do compile }
! { dg-options "-fopenmp -fdump-tree-gimple -g0 -Wno-deprecated" }
! atomicvar should never be referenced in between the barrier and
! following #pragma omp atomic_load.
! { dg-final { scan-tree-dump-not "barrier\[^#\]*atomicvar" "gimple" } }
module m
implicit none
logical :: atomicvar, c
integer :: i, atomicvar2, c2
contains
integer function foo ()
!$omp barrier
!$omp atomic
atomicvar = atomicvar .or. .true.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .or. .false.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .or. c
!$omp barrier
!$omp atomic
atomicvar = atomicvar .and. .true.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .and. .false.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .and. c
!$omp barrier
!$omp atomic
atomicvar = atomicvar .neqv. .true.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .neqv. .false.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .neqv. c
!$omp barrier
!$omp atomic
atomicvar = atomicvar .eqv. .true.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .eqv. .false.
!$omp barrier
!$omp atomic
atomicvar = atomicvar .eqv. c
!$omp barrier
!$omp atomic
atomicvar = .true. .or. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .false. .or. atomicvar
!$omp barrier
!$omp atomic
atomicvar = c .or. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .true. .and. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .false. .and. atomicvar
!$omp barrier
!$omp atomic
atomicvar = c .and. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .true. .neqv. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .false. .neqv. atomicvar
!$omp barrier
!$omp atomic
atomicvar = c .neqv. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .true. .eqv. atomicvar
!$omp barrier
!$omp atomic
atomicvar = .false. .eqv. atomicvar
!$omp barrier
!$omp atomic
atomicvar = c .eqv. atomicvar
!$omp barrier
foo = 0
end
integer function bar ()
!$omp barrier
!$omp atomic
atomicvar2 = ior (atomicvar2, -1)
!$omp barrier
!$omp atomic
atomicvar2 = ior (atomicvar2, 0)
!$omp barrier
!$omp atomic
atomicvar2 = ior (atomicvar2, 1)
!$omp barrier
!$omp atomic
atomicvar2 = ior (atomicvar2, 2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (atomicvar2, c2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (-1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (0, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (c2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (atomicvar2, -1)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (atomicvar2, 0)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (atomicvar2, 1)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (atomicvar2, 2)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (atomicvar2, c2)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (-1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (0, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ieor (1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = ior (c2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (atomicvar2, -1)
!$omp barrier
!$omp atomic
atomicvar2 = iand (atomicvar2, 0)
!$omp barrier
!$omp atomic
atomicvar2 = iand (atomicvar2, 1)
!$omp barrier
!$omp atomic
atomicvar2 = iand (atomicvar2, 2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (atomicvar2, c2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (-1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (0, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = iand (c2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = min (atomicvar2, -1)
!$omp barrier
!$omp atomic
atomicvar2 = min (atomicvar2, 0)
!$omp barrier
!$omp atomic
atomicvar2 = min (atomicvar2, 1)
!$omp barrier
!$omp atomic
atomicvar2 = min (atomicvar2, 2)
!$omp barrier
!$omp atomic
atomicvar2 = min (atomicvar2, c2)
!$omp barrier
!$omp atomic
atomicvar2 = min (-1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = min (0, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = min (1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = min (2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = min (c2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = max (atomicvar2, -1)
!$omp barrier
!$omp atomic
atomicvar2 = max (atomicvar2, 0)
!$omp barrier
!$omp atomic
atomicvar2 = max (atomicvar2, 1)
!$omp barrier
!$omp atomic
atomicvar2 = max (atomicvar2, 2)
!$omp barrier
!$omp atomic
atomicvar2 = max (atomicvar2, c2)
!$omp barrier
!$omp atomic
atomicvar2 = max (-1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = max (0, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = max (1, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = max (2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = max (c2, atomicvar2)
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 + (-1)
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 + 0
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 + 1
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 + 2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 + c2
!$omp barrier
!$omp atomic
atomicvar2 = -1 + atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 0 + atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 1 + atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 2 + atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = c2 + atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 - (-1)
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 - 0
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 - 1
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 - 2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 - c2
!$omp barrier
!$omp atomic
atomicvar2 = -1 - atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 0 - atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 1 - atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 2 - atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = c2 - atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 * (-1)
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 * 0
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 * 1
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 * 2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 * c2
!$omp barrier
!$omp atomic
atomicvar2 = (-1) * atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 0 * atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 1 * atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 2 * atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = c2 * atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 / (-1)
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 / 0
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 / 1
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 / 2
!$omp barrier
!$omp atomic
atomicvar2 = atomicvar2 / c2
!$omp barrier
!$omp atomic
atomicvar2 = (-1) / atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 0 / atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 1 / atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = 2 / atomicvar2
!$omp barrier
!$omp atomic
atomicvar2 = c2 / atomicvar2
!$omp barrier
bar = 0
end
end module