From d36e2dcea193fea65d987263f59f8f37c333c723 Mon Sep 17 00:00:00 2001 From: Jack Styles Date: Mon, 2 Jun 2025 11:12:00 +0100 Subject: [PATCH 1/4] [Flang][OpenMP] Deprecate Allocate Directive As part of OpenMP 5.2, the allocate directive has been deprecated in favour of the allocators construct for Fortran. To enable this in flang, a warning has been added informing the user of this. Tests to ensure this behaviour is continued are also included. See also: #110008 --- flang/lib/Semantics/resolve-directives.cpp | 5 +++++ .../OpenMP/Todo/omp-declarative-allocate-align.f90 | 1 + .../Lower/OpenMP/Todo/omp-declarative-allocate.f90 | 1 + flang/test/Semantics/OpenMP/allocate-align01.f90 | 2 ++ flang/test/Semantics/OpenMP/allocate01.f90 | 2 ++ flang/test/Semantics/OpenMP/allocate02.f90 | 4 ++++ flang/test/Semantics/OpenMP/allocate03.f90 | 2 ++ flang/test/Semantics/OpenMP/allocate04.f90 | 5 +++++ flang/test/Semantics/OpenMP/allocate05.f90 | 2 ++ flang/test/Semantics/OpenMP/allocate06.f90 | 2 ++ flang/test/Semantics/OpenMP/allocate07.f90 | 5 +++++ flang/test/Semantics/OpenMP/allocate08.f90 | 10 ++++++++++ flang/test/Semantics/OpenMP/allocate09.f90 | 8 ++++++++ 13 files changed, 49 insertions(+) diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp index 9fa7bc8964854..10121898817db 100644 --- a/flang/lib/Semantics/resolve-directives.cpp +++ b/flang/lib/Semantics/resolve-directives.cpp @@ -2024,6 +2024,7 @@ bool OmpAttributeVisitor::Pre(const parser::OpenMPThreadprivate &x) { bool OmpAttributeVisitor::Pre(const parser::OpenMPDeclarativeAllocate &x) { PushContext(x.source, llvm::omp::Directive::OMPD_allocate); + IssueNonConformanceWarning(llvm::omp::Directive::OMPD_allocate, x.source); const auto &list{std::get(x.t)}; ResolveOmpObjectList(list, Symbol::Flag::OmpDeclarativeAllocateDirective); return false; @@ -2036,6 +2037,7 @@ bool OmpAttributeVisitor::Pre(const parser::OpenMPDispatchConstruct &x) { bool OmpAttributeVisitor::Pre(const parser::OpenMPExecutableAllocate &x) { PushContext(x.source, llvm::omp::Directive::OMPD_allocate); + IssueNonConformanceWarning(llvm::omp::Directive::OMPD_allocate, x.source); const auto &list{std::get>(x.t)}; if (list) { ResolveOmpObjectList(*list, Symbol::Flag::OmpExecutableAllocateDirective); @@ -3074,6 +3076,9 @@ void OmpAttributeVisitor::IssueNonConformanceWarning( case llvm::omp::OMPD_parallel_master_taskloop_simd: setAlternativeStr("PARALLEL_MASKED TASKLOOP SIMD"); break; + case llvm::omp::OMPD_allocate: + setAlternativeStr("ALLOCATORS"); + break; case llvm::omp::OMPD_target_loop: default:; } diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 index 8daf20e1ae400..d9d7890222467 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 @@ -5,6 +5,7 @@ program main integer :: x + ! CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. ! CHECK: not yet implemented: OpenMPDeclarativeAllocate !$omp allocate(x) align(32) end diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 index 425ccbc5dd56c..44bfc32e1565d 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 @@ -5,6 +5,7 @@ program main integer :: x, y + // CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. // CHECK: not yet implemented: OpenMPDeclarativeAllocate !$omp allocate(x, y) end diff --git a/flang/test/Semantics/OpenMP/allocate-align01.f90 b/flang/test/Semantics/OpenMP/allocate-align01.f90 index ba0776cf46a6d..2217505d13895 100644 --- a/flang/test/Semantics/OpenMP/allocate-align01.f90 +++ b/flang/test/Semantics/OpenMP/allocate-align01.f90 @@ -11,8 +11,10 @@ program allocate_align_tree integer :: z, t, xx t = 2 z = 3 + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: The alignment value should be a constant positive integer !$omp allocate(j) align(xx) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: The alignment value should be a constant positive integer !$omp allocate(xarray) align(-32) allocator(omp_large_cap_mem_alloc) allocate(j(z), xarray(t)) diff --git a/flang/test/Semantics/OpenMP/allocate01.f90 b/flang/test/Semantics/OpenMP/allocate01.f90 index 6ccb8bb09e830..c8aa6cf8ad977 100644 --- a/flang/test/Semantics/OpenMP/allocate01.f90 +++ b/flang/test/Semantics/OpenMP/allocate01.f90 @@ -15,10 +15,12 @@ subroutine sema() integer :: a, b real, dimension (:,:), allocatable :: darray + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List items must be declared in the same scoping unit in which the ALLOCATE directive appears !$omp allocate(y) print *, a + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List items must be declared in the same scoping unit in which the ALLOCATE directive appears !$omp allocate(x) allocator(omp_default_mem_alloc) allocate ( x(a), darray(a, b) ) diff --git a/flang/test/Semantics/OpenMP/allocate02.f90 b/flang/test/Semantics/OpenMP/allocate02.f90 index 8f0579e810bb9..fa175d0ab7ced 100644 --- a/flang/test/Semantics/OpenMP/allocate02.f90 +++ b/flang/test/Semantics/OpenMP/allocate02.f90 @@ -11,14 +11,18 @@ subroutine allocate() integer :: a, b real, dimension (:,:), allocatable :: darray + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x, y) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: At most one ALLOCATOR clause can appear on the ALLOCATE directive !$omp allocate(x, y) allocator(omp_default_mem_alloc) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(darray) allocator(omp_default_mem_alloc) allocate ( darray(a, b) ) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: At most one ALLOCATOR clause can appear on the ALLOCATE directive !$omp allocate(darray) allocator(omp_default_mem_alloc) allocator(omp_default_mem_alloc) allocate ( darray(a, b) ) diff --git a/flang/test/Semantics/OpenMP/allocate03.f90 b/flang/test/Semantics/OpenMP/allocate03.f90 index e35115f3897cc..15f924bf2ca1f 100644 --- a/flang/test/Semantics/OpenMP/allocate03.f90 +++ b/flang/test/Semantics/OpenMP/allocate03.f90 @@ -15,9 +15,11 @@ subroutine allocate() real, dimension (:,:), allocatable :: darray integer :: a, b + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the ALLOCATE directive !$omp allocate(my_var%array) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the ALLOCATE directive !$omp allocate(darray, my_var%array) allocator(omp_default_mem_alloc) allocate ( darray(a, b) ) diff --git a/flang/test/Semantics/OpenMP/allocate04.f90 b/flang/test/Semantics/OpenMP/allocate04.f90 index bbd74eb2ca101..2882e62acc2af 100644 --- a/flang/test/Semantics/OpenMP/allocate04.f90 +++ b/flang/test/Semantics/OpenMP/allocate04.f90 @@ -15,14 +15,19 @@ subroutine allocate(z) integer :: x, y, z associate (a => x) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: PRIVATE clause is not allowed on the ALLOCATE directive !$omp allocate(y) private(y) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'z' in ALLOCATE directive must not be a dummy argument !$omp allocate(z) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'p' in ALLOCATE directive must not have POINTER attribute !$omp allocate(p) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'a' in ALLOCATE directive must not be an associate name !$omp allocate(a) end associate diff --git a/flang/test/Semantics/OpenMP/allocate05.f90 b/flang/test/Semantics/OpenMP/allocate05.f90 index a787e8bb32a4c..2c81c4dbc82c7 100644 --- a/flang/test/Semantics/OpenMP/allocate05.f90 +++ b/flang/test/Semantics/OpenMP/allocate05.f90 @@ -13,11 +13,13 @@ subroutine allocate() real, dimension (:,:), allocatable :: darray !$omp target + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate allocator(omp_default_mem_alloc) allocate ( darray(a, b) ) !$omp end target !$omp target + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: ALLOCATE directives that appear in a TARGET region must specify an allocator clause !$omp allocate allocate ( darray(a, b) ) diff --git a/flang/test/Semantics/OpenMP/allocate06.f90 b/flang/test/Semantics/OpenMP/allocate06.f90 index e14134cd07301..f6172c9d905bb 100644 --- a/flang/test/Semantics/OpenMP/allocate06.f90 +++ b/flang/test/Semantics/OpenMP/allocate06.f90 @@ -11,9 +11,11 @@ subroutine allocate() integer :: a, b, x real, dimension (:,:), allocatable :: darray + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List items specified in the ALLOCATE directive must not have the ALLOCATABLE attribute unless the directive is associated with an ALLOCATE statement !$omp allocate(darray) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(darray) allocator(omp_default_mem_alloc) allocate(darray(a, b)) diff --git a/flang/test/Semantics/OpenMP/allocate07.f90 b/flang/test/Semantics/OpenMP/allocate07.f90 index 396df598b2521..cad55a5adf4bf 100644 --- a/flang/test/Semantics/OpenMP/allocate07.f90 +++ b/flang/test/Semantics/OpenMP/allocate07.f90 @@ -18,18 +18,23 @@ subroutine allocate() CHARACTER(LEN=32) :: w INTEGER, DIMENSION(:), ALLOCATABLE :: y + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(x%KIND) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(w%LEN) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(y%KIND) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(my_var%kind_param) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(my_var%len_param) diff --git a/flang/test/Semantics/OpenMP/allocate08.f90 b/flang/test/Semantics/OpenMP/allocate08.f90 index fc950ea4fca36..6ceb87bfa9bdc 100644 --- a/flang/test/Semantics/OpenMP/allocate08.f90 +++ b/flang/test/Semantics/OpenMP/allocate08.f90 @@ -25,20 +25,30 @@ subroutine allocate() trait(1)%value = default_mem_fb custom_allocator = omp_init_allocator(memspace, 1, trait) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(y) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(z) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(y) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(z) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(w) allocator(custom_allocator) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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 diff --git a/flang/test/Semantics/OpenMP/allocate09.f90 b/flang/test/Semantics/OpenMP/allocate09.f90 index 0f93a340fe1e4..c078f060d620a 100644 --- a/flang/test/Semantics/OpenMP/allocate09.f90 +++ b/flang/test/Semantics/OpenMP/allocate09.f90 @@ -12,23 +12,31 @@ subroutine allocate() integer, dimension(:), allocatable :: a, b, c, d, e, f, & g, h, i, j, k, l + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(a) allocator(omp_default_mem_alloc) allocate(a(1), b(2)) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(c, d) allocator(omp_default_mem_alloc) allocate(c(3), d(4)) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(e) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(f, g) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate allocate(e(5), f(6), g(7)) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: Object 'i' in ALLOCATE directive not found in corresponding ALLOCATE statement !$omp allocate(h, i) allocator(omp_default_mem_alloc) allocate(h(8)) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: Object 'j' in ALLOCATE directive not found in corresponding ALLOCATE statement !$omp allocate(j, k) allocator(omp_default_mem_alloc) + !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(l) allocator(omp_default_mem_alloc) allocate(k(9), l(10)) From c9bcf97c32dfd10305f64737f6cf9107b8ac6967 Mon Sep 17 00:00:00 2001 From: Jack Styles Date: Mon, 2 Jun 2025 14:15:51 +0100 Subject: [PATCH 2/4] Address review comments The following has been fixed: - Updated comments to be `!` instead of `\\` in test file --- flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 index 44bfc32e1565d..8e8294a1b91b1 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 @@ -5,7 +5,7 @@ program main integer :: x, y - // CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. - // CHECK: not yet implemented: OpenMPDeclarativeAllocate + ! CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. + ! CHECK: not yet implemented: OpenMPDeclarativeAllocate !$omp allocate(x, y) end From 7ee8549292a346cec515ce4a9e6b3012edd1429c Mon Sep 17 00:00:00 2001 From: Jack Styles Date: Mon, 2 Jun 2025 14:48:35 +0100 Subject: [PATCH 3/4] fix failing test --- flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 index 8e8294a1b91b1..4bd3e03f4b847 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 @@ -1,6 +1,6 @@ ! This test checks lowering of OpenMP allocate Directive. -// RUN: not flang -fc1 -emit-fir -fopenmp %s 2>&1 | FileCheck %s +! RUN: not flang -fc1 -emit-fir -fopenmp %s 2>&1 | FileCheck %s program main integer :: x, y From 66f1fa9f7d5e88d3cb9620071430a890fd73978f Mon Sep 17 00:00:00 2001 From: Jack Styles Date: Tue, 3 Jun 2025 09:08:11 +0100 Subject: [PATCH 4/4] Remove deprecation warning for OpenMPDeclarativeAllocate As per the spec for OpenMP 5.2, it is only when the allocate directive is followed by an allocate statement that has been deprecated. This commit removes the deprecation for the declarative version of `allocate`, and updates the appropriate tests to accomodate this. --- flang/lib/Semantics/resolve-directives.cpp | 3 +-- .../OpenMP/Todo/omp-declarative-allocate-align.f90 | 1 - .../Lower/OpenMP/Todo/omp-declarative-allocate.f90 | 1 - flang/test/Semantics/OpenMP/allocate-align01.f90 | 1 - flang/test/Semantics/OpenMP/allocate01.f90 | 1 - flang/test/Semantics/OpenMP/allocate02.f90 | 2 -- flang/test/Semantics/OpenMP/allocate03.f90 | 1 - flang/test/Semantics/OpenMP/allocate04.f90 | 5 ----- flang/test/Semantics/OpenMP/allocate06.f90 | 1 - flang/test/Semantics/OpenMP/allocate07.f90 | 5 ----- flang/test/Semantics/OpenMP/allocate08.f90 | 10 ---------- flang/test/Semantics/OpenMP/allocate09.f90 | 3 --- 12 files changed, 1 insertion(+), 33 deletions(-) diff --git a/flang/lib/Semantics/resolve-directives.cpp b/flang/lib/Semantics/resolve-directives.cpp index 10121898817db..c2b48fe1b7887 100644 --- a/flang/lib/Semantics/resolve-directives.cpp +++ b/flang/lib/Semantics/resolve-directives.cpp @@ -2024,7 +2024,6 @@ bool OmpAttributeVisitor::Pre(const parser::OpenMPThreadprivate &x) { bool OmpAttributeVisitor::Pre(const parser::OpenMPDeclarativeAllocate &x) { PushContext(x.source, llvm::omp::Directive::OMPD_allocate); - IssueNonConformanceWarning(llvm::omp::Directive::OMPD_allocate, x.source); const auto &list{std::get(x.t)}; ResolveOmpObjectList(list, Symbol::Flag::OmpDeclarativeAllocateDirective); return false; @@ -2036,8 +2035,8 @@ bool OmpAttributeVisitor::Pre(const parser::OpenMPDispatchConstruct &x) { } bool OmpAttributeVisitor::Pre(const parser::OpenMPExecutableAllocate &x) { - PushContext(x.source, llvm::omp::Directive::OMPD_allocate); IssueNonConformanceWarning(llvm::omp::Directive::OMPD_allocate, x.source); + PushContext(x.source, llvm::omp::Directive::OMPD_allocate); const auto &list{std::get>(x.t)}; if (list) { ResolveOmpObjectList(*list, Symbol::Flag::OmpExecutableAllocateDirective); diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 index d9d7890222467..8daf20e1ae400 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate-align.f90 @@ -5,7 +5,6 @@ program main integer :: x - ! CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. ! CHECK: not yet implemented: OpenMPDeclarativeAllocate !$omp allocate(x) align(32) end diff --git a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 index 4bd3e03f4b847..e83b433d0fda0 100644 --- a/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 +++ b/flang/test/Lower/OpenMP/Todo/omp-declarative-allocate.f90 @@ -5,7 +5,6 @@ program main integer :: x, y - ! CHECK: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. ! CHECK: not yet implemented: OpenMPDeclarativeAllocate !$omp allocate(x, y) end diff --git a/flang/test/Semantics/OpenMP/allocate-align01.f90 b/flang/test/Semantics/OpenMP/allocate-align01.f90 index 2217505d13895..4974f5e18397a 100644 --- a/flang/test/Semantics/OpenMP/allocate-align01.f90 +++ b/flang/test/Semantics/OpenMP/allocate-align01.f90 @@ -11,7 +11,6 @@ program allocate_align_tree integer :: z, t, xx t = 2 z = 3 - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: The alignment value should be a constant positive integer !$omp allocate(j) align(xx) !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. diff --git a/flang/test/Semantics/OpenMP/allocate01.f90 b/flang/test/Semantics/OpenMP/allocate01.f90 index c8aa6cf8ad977..8a680eee743e0 100644 --- a/flang/test/Semantics/OpenMP/allocate01.f90 +++ b/flang/test/Semantics/OpenMP/allocate01.f90 @@ -15,7 +15,6 @@ subroutine sema() integer :: a, b real, dimension (:,:), allocatable :: darray - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List items must be declared in the same scoping unit in which the ALLOCATE directive appears !$omp allocate(y) print *, a diff --git a/flang/test/Semantics/OpenMP/allocate02.f90 b/flang/test/Semantics/OpenMP/allocate02.f90 index fa175d0ab7ced..80ef60b31e700 100644 --- a/flang/test/Semantics/OpenMP/allocate02.f90 +++ b/flang/test/Semantics/OpenMP/allocate02.f90 @@ -11,10 +11,8 @@ subroutine allocate() integer :: a, b real, dimension (:,:), allocatable :: darray - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x, y) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: At most one ALLOCATOR clause can appear on the ALLOCATE directive !$omp allocate(x, y) allocator(omp_default_mem_alloc) allocator(omp_default_mem_alloc) diff --git a/flang/test/Semantics/OpenMP/allocate03.f90 b/flang/test/Semantics/OpenMP/allocate03.f90 index 15f924bf2ca1f..b8c6b8e5dee77 100644 --- a/flang/test/Semantics/OpenMP/allocate03.f90 +++ b/flang/test/Semantics/OpenMP/allocate03.f90 @@ -15,7 +15,6 @@ subroutine allocate() real, dimension (:,:), allocatable :: darray integer :: a, b - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A variable that is part of another variable (as an array or structure element) cannot appear on the ALLOCATE directive !$omp allocate(my_var%array) diff --git a/flang/test/Semantics/OpenMP/allocate04.f90 b/flang/test/Semantics/OpenMP/allocate04.f90 index 2882e62acc2af..bbd74eb2ca101 100644 --- a/flang/test/Semantics/OpenMP/allocate04.f90 +++ b/flang/test/Semantics/OpenMP/allocate04.f90 @@ -15,19 +15,14 @@ subroutine allocate(z) integer :: x, y, z associate (a => x) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: PRIVATE clause is not allowed on the ALLOCATE directive !$omp allocate(y) private(y) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'z' in ALLOCATE directive must not be a dummy argument !$omp allocate(z) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'p' in ALLOCATE directive must not have POINTER attribute !$omp allocate(p) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List item 'a' in ALLOCATE directive must not be an associate name !$omp allocate(a) end associate diff --git a/flang/test/Semantics/OpenMP/allocate06.f90 b/flang/test/Semantics/OpenMP/allocate06.f90 index f6172c9d905bb..7196bcac2b9b9 100644 --- a/flang/test/Semantics/OpenMP/allocate06.f90 +++ b/flang/test/Semantics/OpenMP/allocate06.f90 @@ -11,7 +11,6 @@ subroutine allocate() integer :: a, b, x real, dimension (:,:), allocatable :: darray - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: List items specified in the ALLOCATE directive must not have the ALLOCATABLE attribute unless the directive is associated with an ALLOCATE statement !$omp allocate(darray) allocator(omp_default_mem_alloc) diff --git a/flang/test/Semantics/OpenMP/allocate07.f90 b/flang/test/Semantics/OpenMP/allocate07.f90 index cad55a5adf4bf..396df598b2521 100644 --- a/flang/test/Semantics/OpenMP/allocate07.f90 +++ b/flang/test/Semantics/OpenMP/allocate07.f90 @@ -18,23 +18,18 @@ subroutine allocate() CHARACTER(LEN=32) :: w INTEGER, DIMENSION(:), ALLOCATABLE :: y - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(x%KIND) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(w%LEN) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(y%KIND) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(my_var%kind_param) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: A type parameter inquiry cannot appear on the ALLOCATE directive !$omp allocate(my_var%len_param) diff --git a/flang/test/Semantics/OpenMP/allocate08.f90 b/flang/test/Semantics/OpenMP/allocate08.f90 index 6ceb87bfa9bdc..fc950ea4fca36 100644 --- a/flang/test/Semantics/OpenMP/allocate08.f90 +++ b/flang/test/Semantics/OpenMP/allocate08.f90 @@ -25,30 +25,20 @@ subroutine allocate() trait(1)%value = default_mem_fb custom_allocator = omp_init_allocator(memspace, 1, trait) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(y) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(z) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(x) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(y) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(z) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(w) allocator(custom_allocator) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !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 diff --git a/flang/test/Semantics/OpenMP/allocate09.f90 b/flang/test/Semantics/OpenMP/allocate09.f90 index c078f060d620a..645e97a3a33f3 100644 --- a/flang/test/Semantics/OpenMP/allocate09.f90 +++ b/flang/test/Semantics/OpenMP/allocate09.f90 @@ -20,9 +20,7 @@ subroutine allocate() !$omp allocate(c, d) allocator(omp_default_mem_alloc) allocate(c(3), d(4)) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(e) allocator(omp_default_mem_alloc) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate(f, g) allocator(omp_default_mem_alloc) !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !$omp allocate @@ -33,7 +31,6 @@ subroutine allocate() !$omp allocate(h, i) allocator(omp_default_mem_alloc) allocate(h(8)) - !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead. !ERROR: Object 'j' in ALLOCATE directive not found in corresponding ALLOCATE statement !$omp allocate(j, k) allocator(omp_default_mem_alloc) !WARNING: OpenMP directive ALLOCATE has been deprecated, please use ALLOCATORS instead.