| ! 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 |