Files
clang-p2996/flang/test/Semantics/OpenMP/allocators04.f90
Ethan Luis McDonough 7f0d54b429 [flang][openmp] Allocators construct semantic checks
This patch applies the semantic checks for executable allocation directives to the new allocators construct.  It also introduces a new check that ensures all items in the list appear in the corresponding Fortran allocate statement.

Reviewed By: kiranchandramohan

Differential Revision: https://reviews.llvm.org/D150428
2023-08-02 12:59:06 -05:00

30 lines
1.2 KiB
Fortran

! 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