From 9ed76f3958bba8abb0e40fa51f9ff54961332f18 Mon Sep 17 00:00:00 2001 From: Valentin Clement Date: Wed, 28 Jun 2023 09:07:04 -0700 Subject: [PATCH] [flang][openacc] Relax clause rule on routine directive Some compiler treat `acc routine` without a parallelism clause as if seq is present. Relax the parser rule to allow acc routine without clause. The default clause will be handled in lowering. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D153896 --- flang/docs/OpenACC.md | 2 ++ flang/test/Semantics/OpenACC/acc-routine-validity.f90 | 2 -- llvm/include/llvm/Frontend/OpenACC/ACC.td | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/flang/docs/OpenACC.md b/flang/docs/OpenACC.md index 8132a5b..c63fcd9 100644 --- a/flang/docs/OpenACC.md +++ b/flang/docs/OpenACC.md @@ -15,3 +15,5 @@ ## Intentional deviation from the specification * The end directive for combined construct can omit the `loop` keyword. +* An `!$acc routine` with no parallelism clause is treated as if the `seq` + clause was present. diff --git a/flang/test/Semantics/OpenACC/acc-routine-validity.f90 b/flang/test/Semantics/OpenACC/acc-routine-validity.f90 index 83583fc..5b8ecde 100644 --- a/flang/test/Semantics/OpenACC/acc-routine-validity.f90 +++ b/flang/test/Semantics/OpenACC/acc-routine-validity.f90 @@ -10,7 +10,6 @@ module openacc_routine_validity !$acc routine(fct2) vector - !ERROR: At least one of GANG, SEQ, VECTOR, WORKER clause must appear on the ROUTINE directive !$acc routine(sub3) !ERROR: ROUTINE directive without name must appear within the specification part of a subroutine or function definition, or within an interface body for a subroutine or function in an interface block @@ -23,7 +22,6 @@ contains subroutine sub1(a) real :: a(:) - !ERROR: At least one of GANG, SEQ, VECTOR, WORKER clause must appear on the ROUTINE directive !$acc routine end subroutine sub1 diff --git a/llvm/include/llvm/Frontend/OpenACC/ACC.td b/llvm/include/llvm/Frontend/OpenACC/ACC.td index 1b18607..98cf49f 100644 --- a/llvm/include/llvm/Frontend/OpenACC/ACC.td +++ b/llvm/include/llvm/Frontend/OpenACC/ACC.td @@ -418,9 +418,7 @@ def ACC_Routine : Directive<"routine"> { let allowedOnceClauses = [ VersionedClause, VersionedClause, - VersionedClause - ]; - let requiredClauses = [ + VersionedClause, VersionedClause, VersionedClause, VersionedClause, -- 2.7.4