Skip to content

Commit 21ea420

Browse files
committed
[Frontend][OpenMP] Apply compound construct clause restrictions
This patch removes from the list of allowed clauses for several compound constructs those that are specifically disallowed by the OpenMP spec. In particular, the following restrictions are followed: - (regarding combined constructs) If _directive-name-A_ is `target`, the `copyin` clause must not be specified. - (regarding composite constructs) If _directive-name-A_ is `distribute`, the `ordered` clause must not be specified. These restrictions are listed in the OpenMP Specification version 5.2, sections 17.4 and 17.5.
1 parent e42f473 commit 21ea420

File tree

4 files changed

+7
-14
lines changed

4 files changed

+7
-14
lines changed

flang/test/Lower/OpenMP/distribute-parallel-do.f90

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,21 @@ subroutine distribute_parallel_do_dist_schedule()
3636
!$omp end teams
3737
end subroutine distribute_parallel_do_dist_schedule
3838

39-
! CHECK-LABEL: func.func @_QPdistribute_parallel_do_ordered(
40-
subroutine distribute_parallel_do_ordered()
39+
! CHECK-LABEL: func.func @_QPdistribute_parallel_do_schedule(
40+
subroutine distribute_parallel_do_schedule()
4141
!$omp teams
4242

4343
! CHECK: omp.parallel private({{.*}}) {
4444
! CHECK: omp.distribute {
45-
! CHECK-NEXT: omp.wsloop ordered(1) {
45+
! CHECK-NEXT: omp.wsloop schedule(runtime) {
4646
! CHECK-NEXT: omp.loop_nest
47-
!$omp distribute parallel do ordered(1)
47+
!$omp distribute parallel do schedule(runtime)
4848
do index_ = 1, 10
4949
end do
5050
!$omp end distribute parallel do
5151

5252
!$omp end teams
53-
end subroutine distribute_parallel_do_ordered
53+
end subroutine distribute_parallel_do_schedule
5454

5555
! CHECK-LABEL: func.func @_QPdistribute_parallel_do_private(
5656
subroutine distribute_parallel_do_private()

flang/test/Semantics/OpenMP/combined-constructs.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ program main
100100
enddo
101101
!$omp end target parallel do
102102

103+
!ERROR: COPYIN clause is not allowed on the TARGET PARALLEL DO directive
103104
!ERROR: Non-THREADPRIVATE object 'a' in COPYIN clause
104105
!$omp target parallel do copyin(a)
105106
do i = 1, N

flang/test/Semantics/OpenMP/ordered03.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ subroutine sub1()
5252
end do
5353
!$omp end target parallel do
5454

55+
!ERROR: ORDERED clause is not allowed on the TARGET TEAMS DISTRIBUTE PARALLEL DO directive
5556
!$omp target teams distribute parallel do ordered(1)
5657
do i = 1, N
5758
!ERROR: An ORDERED construct with the DEPEND clause must be closely nested in a worksharing-loop (or parallel worksharing-loop) construct with ORDERED clause with a parameter

llvm/include/llvm/Frontend/OpenMP/OMP.td

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1192,7 +1192,6 @@ def OMP_DistributeParallelDo : Directive<"distribute parallel do"> {
11921192
VersionedClause<OMPC_If>,
11931193
VersionedClause<OMPC_NumThreads>,
11941194
VersionedClause<OMPC_Order, 50>,
1195-
VersionedClause<OMPC_Ordered>,
11961195
VersionedClause<OMPC_ProcBind>,
11971196
VersionedClause<OMPC_Schedule>,
11981197
];
@@ -1293,7 +1292,6 @@ def OMP_DistributeSimd : Directive<"distribute simd"> {
12931292
VersionedClause<OMPC_If, 50>,
12941293
VersionedClause<OMPC_NumThreads>,
12951294
VersionedClause<OMPC_Order, 50>,
1296-
VersionedClause<OMPC_Ordered>,
12971295
VersionedClause<OMPC_ProcBind>,
12981296
VersionedClause<OMPC_SafeLen>,
12991297
VersionedClause<OMPC_Schedule>,
@@ -1840,7 +1838,6 @@ def OMP_TargetParallel : Directive<"target parallel"> {
18401838
def OMP_TargetParallelDo : Directive<"target parallel do"> {
18411839
let allowedClauses = [
18421840
VersionedClause<OMPC_Allocator>,
1843-
VersionedClause<OMPC_Copyin>,
18441841
VersionedClause<OMPC_Default>,
18451842
VersionedClause<OMPC_Depend>,
18461843
VersionedClause<OMPC_FirstPrivate>,
@@ -1977,7 +1974,6 @@ def OMP_TargetParallelForSimd : Directive<"target parallel for simd"> {
19771974
def OMP_target_parallel_loop : Directive<"target parallel loop"> {
19781975
let allowedClauses = [
19791976
VersionedClause<OMPC_Allocate>,
1980-
VersionedClause<OMPC_Copyin>,
19811977
VersionedClause<OMPC_Depend>,
19821978
VersionedClause<OMPC_Device>,
19831979
VersionedClause<OMPC_FirstPrivate>,
@@ -2106,7 +2102,6 @@ def OMP_TargetTeamsDistributeParallelDo :
21062102
Directive<"target teams distribute parallel do"> {
21072103
let allowedClauses = [
21082104
VersionedClause<OMPC_Allocate>,
2109-
VersionedClause<OMPC_Copyin>,
21102105
VersionedClause<OMPC_Depend>,
21112106
VersionedClause<OMPC_FirstPrivate>,
21122107
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2115,7 +2110,6 @@ def OMP_TargetTeamsDistributeParallelDo :
21152110
VersionedClause<OMPC_LastPrivate>,
21162111
VersionedClause<OMPC_Linear>,
21172112
VersionedClause<OMPC_Map>,
2118-
VersionedClause<OMPC_Ordered>,
21192113
VersionedClause<OMPC_Private>,
21202114
VersionedClause<OMPC_Reduction>,
21212115
VersionedClause<OMPC_Shared>,
@@ -2143,7 +2137,6 @@ def OMP_TargetTeamsDistributeParallelDoSimd :
21432137
let allowedClauses = [
21442138
VersionedClause<OMPC_Aligned>,
21452139
VersionedClause<OMPC_Allocate>,
2146-
VersionedClause<OMPC_Copyin>,
21472140
VersionedClause<OMPC_Depend>,
21482141
VersionedClause<OMPC_FirstPrivate>,
21492142
VersionedClause<OMPC_HasDeviceAddr, 51>,
@@ -2153,7 +2146,6 @@ def OMP_TargetTeamsDistributeParallelDoSimd :
21532146
VersionedClause<OMPC_Linear>,
21542147
VersionedClause<OMPC_Map>,
21552148
VersionedClause<OMPC_NonTemporal>,
2156-
VersionedClause<OMPC_Ordered>,
21572149
VersionedClause<OMPC_Private>,
21582150
VersionedClause<OMPC_Reduction>,
21592151
VersionedClause<OMPC_Shared>,
@@ -2395,7 +2387,6 @@ def OMP_TeamsDistributeParallelDo :
23952387
VersionedClause<OMPC_NumTeams>,
23962388
VersionedClause<OMPC_NumThreads>,
23972389
VersionedClause<OMPC_Order, 50>,
2398-
VersionedClause<OMPC_Ordered>,
23992390
VersionedClause<OMPC_ProcBind>,
24002391
VersionedClause<OMPC_Schedule>,
24012392
VersionedClause<OMPC_ThreadLimit>,

0 commit comments

Comments
 (0)