[flang-commits] [flang] 9aebfde - [flang] Allow `cycle` in `target teams distribute [simd]` (#145462)

via flang-commits flang-commits at lists.llvm.org
Tue Jun 24 05:21:10 PDT 2025


Author: Kareem Ergawy
Date: 2025-06-24T14:21:06+02:00
New Revision: 9aebfde1e70cbc1e1ac5b9d5d31352a88eea834b

URL: https://github.com/llvm/llvm-project/commit/9aebfde1e70cbc1e1ac5b9d5d31352a88eea834b
DIFF: https://github.com/llvm/llvm-project/commit/9aebfde1e70cbc1e1ac5b9d5d31352a88eea834b.diff

LOG: [flang] Allow `cycle` in `target teams distribute [simd]` (#145462)

flang incorrectly issues a semantic erorr when a `cycle` statement is
used inside a `target teams distribute [simd]` associated loop. This is
not prevented by the spec, therefore this PR allows such construct.

Added: 
    

Modified: 
    flang/lib/Semantics/check-directive-structure.h
    flang/test/Semantics/OpenMP/do05-positivecase.f90

Removed: 
    


################################################################################
diff  --git a/flang/lib/Semantics/check-directive-structure.h b/flang/lib/Semantics/check-directive-structure.h
index 4a4893fe805a2..b1bf3e550aebc 100644
--- a/flang/lib/Semantics/check-directive-structure.h
+++ b/flang/lib/Semantics/check-directive-structure.h
@@ -76,6 +76,8 @@ template <typename D> class NoBranchingEnforce {
         case llvm::omp::Directive::OMPD_distribute_parallel_for:
         case llvm::omp::Directive::OMPD_distribute_simd:
         case llvm::omp::Directive::OMPD_distribute_parallel_for_simd:
+        case llvm::omp::Directive::OMPD_target_teams_distribute:
+        case llvm::omp::Directive::OMPD_target_teams_distribute_simd:
         case llvm::omp::Directive::OMPD_target_teams_distribute_parallel_do:
         case llvm::omp::Directive::
             OMPD_target_teams_distribute_parallel_do_simd:

diff  --git a/flang/test/Semantics/OpenMP/do05-positivecase.f90 b/flang/test/Semantics/OpenMP/do05-positivecase.f90
index 8481cb2fc2ca0..eda04610535c2 100644
--- a/flang/test/Semantics/OpenMP/do05-positivecase.f90
+++ b/flang/test/Semantics/OpenMP/do05-positivecase.f90
@@ -57,4 +57,18 @@ program omp_do
     if(i<10) cycle
   end do
   !$omp end target teams distribute parallel do simd
+
+  !$omp target teams distribute 
+  !DEF: /omp_do/OtherConstruct6/i (OmpPrivate, OmpPreDetermined) HostAssoc INTEGER(4)
+  do i=1,100
+    !REF: /omp_do/OtherConstruct6/i
+    if(i < 5) cycle
+  end do
+
+  !$omp target teams distribute simd
+  !DEF: /omp_do/OtherConstruct7/i (OmpLinear, OmpPreDetermined) HostAssoc INTEGER(4)
+  do i=1,100
+    !REF: /omp_do/OtherConstruct7/i
+    if(i < 5) cycle
+  end do
 end program omp_do


        


More information about the flang-commits mailing list