! RUN: %python %S/../test_errors.py %s %flang_fc1 -fopenmp ! OpenMP Version 5.0 ! 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 module AllocateModule INTEGER :: z end module subroutine allocate() use omp_lib use AllocateModule integer, SAVE :: x integer :: w COMMON /CommonName/ y integer(kind=omp_allocator_handle_kind) :: custom_allocator integer(kind=omp_memspace_handle_kind) :: memspace type(omp_alloctrait), dimension(1) :: trait memspace = omp_default_mem_space trait(1)%key = fallback trait(1)%value = default_mem_fb custom_allocator = omp_init_allocator(memspace, 1, trait) !$omp allocate(x) allocator(omp_default_mem_alloc) !$omp allocate(y) allocator(omp_default_mem_alloc) !$omp allocate(z) allocator(omp_default_mem_alloc) !$omp allocate(x) !$omp allocate(y) !$omp allocate(z) !$omp allocate(w) allocator(custom_allocator) !ERROR: 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 !$omp allocate(x) allocator(custom_allocator) !ERROR: 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 !$omp allocate(y) allocator(custom_allocator) !ERROR: 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 !$omp allocate(z) allocator(custom_allocator) end subroutine allocate