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>
32 lines
1.2 KiB
Fortran
32 lines
1.2 KiB
Fortran
! REQUIRES: openmp_runtime
|
|
|
|
! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp
|
|
! OpenMP Version 5.2
|
|
! Inherited from 2.11.3 allocate Directive
|
|
! If list items within the ALLOCATE directive have the SAVE attribute, are a common block name, or are declared in the scope of a
|
|
! module, then only predefined memory allocator parameters can be used in the allocator clause
|
|
! SAVE and common block names can't be declared as allocatable, only module scope variables are tested
|
|
|
|
module AllocateModule
|
|
integer, allocatable :: a, b
|
|
end module
|
|
|
|
subroutine allocate()
|
|
use omp_lib
|
|
use AllocateModule
|
|
|
|
integer(kind=omp_allocator_handle_kind) :: custom_allocator
|
|
type(omp_alloctrait) :: trait(1)
|
|
|
|
trait(1)%key = fallback
|
|
trait(1)%value = default_mem_fb
|
|
custom_allocator = omp_init_allocator(omp_default_mem_space, 1, trait)
|
|
|
|
!$omp allocators allocate(omp_default_mem_alloc: a)
|
|
allocate(a)
|
|
|
|
!ERROR: If list items within the ALLOCATORS directive have the SAVE attribute, are a common block name, or are declared in the scope of a module, then only predefined memory allocator parameters can be used in the allocator clause
|
|
!$omp allocators allocate(custom_allocator: b)
|
|
allocate(b)
|
|
end subroutine
|