This PR changes the build system to use use the sources for the module `omp_lib` and the `omp_lib.h` include file from the `openmp` runtime project and not from a separate copy of these files. This will greatly reduce potential for inconsistencies when adding features to the OpenMP runtime implementation. When the OpenMP subproject is not configured, this PR also disables the corresponding LIT tests with a "REQUIRES" directive at the beginning of the OpenMP test files. --------- Co-authored-by: Valentin Clement (バレンタイン クレメン) <clementval@gmail.com>
57 lines
2.1 KiB
Fortran
57 lines
2.1 KiB
Fortran
! REQUIRES: openmp_runtime
|
|
|
|
! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
|
|
use omp_lib
|
|
!2.11.4 Allocate Clause
|
|
!For any list item that is specified in the allocate
|
|
!clause on a directive, a data-sharing attribute clause
|
|
!that may create a private copy of that list item must be
|
|
!specified on the same directive.
|
|
|
|
integer :: N = 2
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel allocate(omp_default_mem_space : x)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'y' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel allocate(omp_default_mem_space : y) firstprivate(x)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
|
|
!ERROR: The ALLOCATE clause requires that 'x' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel allocate(omp_default_mem_space : x) allocate(omp_default_mem_space : x)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'f' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel allocate(omp_default_mem_space : f) shared(f)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'q' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel private(t) allocate(omp_default_mem_space : z, t, q, r) firstprivate(z, r)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
|
|
!ERROR: The ALLOCATE clause requires that 'b' must be listed in a private data-sharing attribute clause on the same directive
|
|
!ERROR: The ALLOCATE clause requires that 'c' must be listed in a private data-sharing attribute clause on the same directive
|
|
!$omp parallel allocate(omp_default_mem_space : a, b, c, d) firstprivate(a, d)
|
|
do i = 1, N
|
|
x = 2
|
|
enddo
|
|
!$omp end parallel
|
|
end
|